Revert incorrect RCL_3 drop: RCL_3 PDK_3.0.2
authorPat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:29:12 +0100
branchRCL_3
changeset 25 779871d1e4f4
parent 24 f15ac8e65a02
child 26 590f6f022902
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035
group/bld.inf
layers.sysdef.xml
lcvtplugin.pkg
sysdef_1_4_0.dtd
sysdef_1_5_1.dtd
videosource.pkg
videoteleng.pkg
videotelephony.pro
videotelephony_plat/group/bld.inf
videotelephony_plat/video_telephony_control_mediator_api/group/bld.inf
videotelephony_plat/video_telephony_control_mediator_api/inc/videotelcontrolmediatorapi.h
videotelephony_plat/video_telephony_control_mediator_api/video_telephony_control_mediator_api.metaxml
videotelui.pkg
vtengines/videoteleng/Inc/Audio/CVtEngAudioHandler.h
vtengines/videoteleng/Inc/Base/CVtEngAccessoryHandler.h
vtengines/videoteleng/Inc/Extensions/CVtEngExtensions.h
vtengines/videoteleng/Inc/Media/CVtEngDrawNGA.h
vtengines/videoteleng/Inc/Media/CVtEngLocalVideo.h
vtengines/videoteleng/Inc/Media/TVtEngRenderConfigNGA.inl
vtengines/videoteleng/Inc/Media/TVtEngRenderingNGA.h
vtengines/videoteleng/Inc/Media/TVtEngRenderingNGA.inl
vtengines/videoteleng/Inc/Session/MVtEngSessionInfo.h
vtengines/videoteleng/Logger/Group/bld.inf
vtengines/videoteleng/Src/Audio/CVtEngAudioHandler.cpp
vtengines/videoteleng/Src/Base/CVtEngDeviceLockMonitor.cpp
vtengines/videoteleng/Src/Base/CVtEngSettings.cpp
vtengines/videoteleng/Src/Base/cvtengmdtrmessagelistener.cpp
vtengines/videoteleng/Src/Media/CVtEngDrawNGA.cpp
vtengines/videoteleng/Src/Media/CVtEngLocalVideo.cpp
vtengines/videoteleng/Src/Media/CVtEngMediaHandler.cpp
vtengines/vtmediatorplugin/inc/vtinternalmediatorapi.h
vtengines/vtmediatorplugin/src/cvtmediatorplugin.cpp
vtprotocolplugins/DisplaySink/group/bld.inf
vtprotocolplugins/DisplaySink/src/CVtImageConverter.cpp
vtprotocolplugins/VideoSource/src/CVSOnboardCameraDataProvider.cpp
vtprotocolplugins/VideoSource/src/CVSStillImageDataProvider.cpp
vtprotocolplugins/VideoSource/src/cmultiframeprovider.cpp
vtprotocols/group/videotelproto.mmp
vtprotocols/inc/ch324confighandler.h
vtprotocols/src/ch324confighandler.cpp
vtprotocols/src/vtprotocolfactory.cpp
vtuis/group/bld.inf
vtuis/lcvtapp/cenrep/keys_s60videotelephony.xls
vtuis/lcvtapp/conf/CI_s60videotelephony.confml
vtuis/lcvtapp/conf/s60videotelephony.confml
vtuis/lcvtapp/conf/s60videotelephony_102072D0.crml
vtuis/lcvtapp/conf/s60videotelephony_10281872.crml
vtuis/lcvtapp/data/videotelui_stub.pkg
vtuis/lcvtapp/data/videotelui_stub.sis
vtuis/lcvtapp/inc/VideoTelephonyInternalCRKeys.h
vtuis/lcvtapp/inc/VideoTelephonyVariant.hrh
vtuis/lcvtapp/lcapplication.cpp
vtuis/lcvtapp/lcapplication.h
vtuis/lcvtapp/lcvtapp.pro
vtuis/lcvtapp/main.cpp
vtuis/lcvtapp/rom/videotelui.iby
vtuis/lcvtapp/rom/videoteluiResources.iby
vtuis/lcvtindicatorcontroller/bwins/lcvtindicatorcontrolleru.def
vtuis/lcvtindicatorcontroller/data/lcvtindicatorcontroller_stub.pkg
vtuis/lcvtindicatorcontroller/data/lcvtindicatorcontroller_stub.sis
vtuis/lcvtindicatorcontroller/eabi/lcvtindicatorcontrolleru.def
vtuis/lcvtindicatorcontroller/inc/lcvtindicatorcontroller.h
vtuis/lcvtindicatorcontroller/inc/lcvtindicatorcontrollerimpl.h
vtuis/lcvtindicatorcontroller/lcvtindicatorcontroller.pri
vtuis/lcvtindicatorcontroller/lcvtindicatorcontroller.pro
vtuis/lcvtindicatorcontroller/rom/lcvtindctr.iby
vtuis/lcvtindicatorcontroller/src/lcvtindicatorcontroller.cpp
vtuis/lcvtindicatorcontroller/src/lcvtindicatorcontrollerimpl.cpp
vtuis/lcvtindicatorplugin/data/lcvtindicatorplugin_stub.pkg
vtuis/lcvtindicatorplugin/data/lcvtindicatorplugin_stub.sis
vtuis/lcvtindicatorplugin/inc/lcvtindicatorplugin.h
vtuis/lcvtindicatorplugin/lcvtindicatorplugin.pro
vtuis/lcvtindicatorplugin/rom/lcvtindicatorplugin.iby
vtuis/lcvtindicatorplugin/src/lcvtindicatorplugin.cpp
vtuis/lcvtindicatorplugin/tsrc/qtestutils/inc/testresultxmlparser.h
vtuis/lcvtindicatorplugin/tsrc/qtestutils/src/testresultxmlparser.cpp
vtuis/lcvtindicatorplugin/tsrc/ut_lcvtindicatorplugin/inc/ut_lcvtindicatorplugin.h
vtuis/lcvtindicatorplugin/tsrc/ut_lcvtindicatorplugin/src/main.cpp
vtuis/lcvtindicatorplugin/tsrc/ut_lcvtindicatorplugin/src/ut_lcvtindicatorplugin.cpp
vtuis/lcvtindicatorplugin/tsrc/ut_lcvtindicatorplugin/stubs/qprocess.h
vtuis/lcvtplugin/data/F0112235.rss
vtuis/lcvtplugin/data/lcvtplugin.pkg
vtuis/lcvtplugin/data/lcvtplugin_stub.pkg
vtuis/lcvtplugin/data/lcvtplugin_stub.sis
vtuis/lcvtplugin/group/bld.inf
vtuis/lcvtplugin/group/lcvt.mmp
vtuis/lcvtplugin/inc/base/clcvtactiveexec.h
vtuis/lcvtplugin/inc/base/clcvtappshutter.h
vtuis/lcvtplugin/inc/base/clcvtcmdexecutor.h
vtuis/lcvtplugin/inc/base/clcvtengine.h
vtuis/lcvtplugin/inc/base/clcvtsession.h
vtuis/lcvtplugin/inc/base/lcvtplugincommand.h
vtuis/lcvtplugin/inc/base/mlcvtenginecommandmanager.h
vtuis/lcvtplugin/inc/base/mlcvtshutterobserver.h
vtuis/lcvtplugin/inc/base/mlcvtstatecontext.h
vtuis/lcvtplugin/inc/common/lcvtutility.h
vtuis/lcvtplugin/inc/common/tlcvtaudiostate.h
vtuis/lcvtplugin/inc/common/tlcvtaudiostate.inl
vtuis/lcvtplugin/inc/common/tlcvtflagcontainer.h
vtuis/lcvtplugin/inc/common/tlcvtflagcontainer.inl
vtuis/lcvtplugin/inc/common/tlcvtmediastate.h
vtuis/lcvtplugin/inc/common/tlcvtmediastate.inl
vtuis/lcvtplugin/inc/common/tlcvtstates.h
vtuis/lcvtplugin/inc/common/tlcvtstates.inl
vtuis/lcvtplugin/inc/control/clcvtlocalvideoplayer.h
vtuis/lcvtplugin/inc/control/clcvtremotevideoplayer.h
vtuis/lcvtplugin/inc/control/clcvtvideoplayerbase.h
vtuis/lcvtplugin/inc/control/tlcvtcamerahandler.h
vtuis/lcvtplugin/inc/states/tlcvtpluginstates.h
vtuis/lcvtplugin/inc/states/tlcvtstatebase.h
vtuis/lcvtplugin/inc/states/tlcvtstatebase.inl
vtuis/lcvtplugin/rom/lcvt.iby
vtuis/lcvtplugin/src/base/clcvtactiveexec.cpp
vtuis/lcvtplugin/src/base/clcvtappshutter.cpp
vtuis/lcvtplugin/src/base/clcvtcmdexecutor.cpp
vtuis/lcvtplugin/src/base/clcvtengine.cpp
vtuis/lcvtplugin/src/base/clcvtsession.cpp
vtuis/lcvtplugin/src/base/dllmain.cpp
vtuis/lcvtplugin/src/common/lcvtutility.cpp
vtuis/lcvtplugin/src/common/tlcvtaudiostate.cpp
vtuis/lcvtplugin/src/common/tlcvtmediastate.cpp
vtuis/lcvtplugin/src/common/tlcvtstates.cpp
vtuis/lcvtplugin/src/control/clcvtlocalvideoplayer.cpp
vtuis/lcvtplugin/src/control/clcvtremotevideoplayer.cpp
vtuis/lcvtplugin/src/control/clcvtvideoplayerbase.cpp
vtuis/lcvtplugin/src/control/tlcvtcamerahandler.cpp
vtuis/lcvtplugin/src/states/tlcvtstatebase.cpp
vtuis/lcvtplugin/src/states/tlcvtstateresetting.cpp
vtuis/lcvtplugin/src/states/tlcvtstaterunning.cpp
vtuis/lcvtplugin/src/states/tlcvtstatestarting.cpp
vtuis/videotelui/aif/videoteluiaif.rss
vtuis/videotelui/cenrep/keys_s60videotelephony.xls
vtuis/videotelui/conf/s60videotelephony.confml
vtuis/videotelui/conf/s60videotelephony_102072D0.crml
vtuis/videotelui/conf/s60videotelephony_10281872.crml
vtuis/videotelui/data/VtStartRecord.wav
vtuis/videotelui/data/VtStopRecord.wav
vtuis/videotelui/data/videotelui.rss
vtuis/videotelui/data/videotelui_caption.rss
vtuis/videotelui/data/videotelui_reg.rss
vtuis/videotelui/data/videotelui_stub.SIS
vtuis/videotelui/data/videotelui_stub.pkg
vtuis/videotelui/group/bld.inf
vtuis/videotelui/group/videotelui.mmp
vtuis/videotelui/group/videotelui_icons.mk
vtuis/videotelui/group/videotelui_icons_aif_bitmaps.mk
vtuis/videotelui/group/videotelui_icons_aif_bitmaps_dc.mk
vtuis/videotelui/group/videotelui_icons_aif_scalable.mk
vtuis/videotelui/group/videotelui_icons_aif_scalable_dc.mk
vtuis/videotelui/group/videotelui_icons_dc.mk
vtuis/videotelui/inc/CVtUiActivateBtHfDialog.h
vtuis/videotelui/inc/CVtUiActiveExec.h
vtuis/videotelui/inc/CVtUiAllowVideoDialog.h
vtuis/videotelui/inc/CVtUiApp.h
vtuis/videotelui/inc/CVtUiAppUi.h
vtuis/videotelui/inc/CVtUiBitmapManager.h
vtuis/videotelui/inc/CVtUiBlankControl.h
vtuis/videotelui/inc/CVtUiBlankDialog.h
vtuis/videotelui/inc/CVtUiContextControl.h
vtuis/videotelui/inc/CVtUiDoc.h
vtuis/videotelui/inc/CVtUiEndCallButton.h
vtuis/videotelui/inc/CVtUiEndCallButtonPane.h
vtuis/videotelui/inc/CVtUiExecuteCmdDialog.h
vtuis/videotelui/inc/CVtUiMainControl.h
vtuis/videotelui/inc/CVtUiMutedControl.h
vtuis/videotelui/inc/CVtUiNaviPane.h
vtuis/videotelui/inc/CVtUiNaviPaneControl.h
vtuis/videotelui/inc/CVtUiNumberEntryActivationControl.h
vtuis/videotelui/inc/CVtUiRemoteVideoControl.h
vtuis/videotelui/inc/CVtUiZoomControl.h
vtuis/videotelui/inc/MVtUiEngineCommandManager.h
vtuis/videotelui/inc/MVtUiVideoWindow.h
vtuis/videotelui/inc/TVtUiCallParameters.h
vtuis/videotelui/inc/VideoTelephonyInternalCRKeys.h
vtuis/videotelui/inc/VideoTelephonyVariant.hrh
vtuis/videotelui/inc/VtUiLayout.h
vtuis/videotelui/inc/VtUiPanic.h
vtuis/videotelui/inc/VtUiUtility.h
vtuis/videotelui/inc/commands/cvtuicmdbase.h
vtuis/videotelui/inc/commands/cvtuicmdcontext.h
vtuis/videotelui/inc/commands/cvtuicmdcustomvalidationactionbase.h
vtuis/videotelui/inc/commands/cvtuicmdstatecheckaction.h
vtuis/videotelui/inc/commands/cvtuicmdvalidationactionbase.h
vtuis/videotelui/inc/commands/cvtuicmdvalidatorbase.h
vtuis/videotelui/inc/commands/cvtuicommandmanager.h
vtuis/videotelui/inc/commands/cvtuicommandmodifybase.h
vtuis/videotelui/inc/commands/cvtuicommandpolicymanager.h
vtuis/videotelui/inc/commands/cvtuicommandsetting.h
vtuis/videotelui/inc/commands/cvtuicommandsetting.inl
vtuis/videotelui/inc/commands/cvtuiexecutioncontext.h
vtuis/videotelui/inc/commands/cvtuifeaturecmdbase.h
vtuis/videotelui/inc/commands/cvtuiprimarycmdpolicy.h
vtuis/videotelui/inc/commands/mvtuicommanditerator.h
vtuis/videotelui/inc/commands/mvtuicommandmanager.h
vtuis/videotelui/inc/commands/mvtuicommandsetting.h
vtuis/videotelui/inc/commands/mvtuicommandui.h
vtuis/videotelui/inc/commands/tVtuifeaturevariation.h
vtuis/videotelui/inc/commands/tvtflagcontainer.h
vtuis/videotelui/inc/commands/tvtflagcontainer.inl
vtuis/videotelui/inc/commands/tvtuiaudiostate.h
vtuis/videotelui/inc/commands/tvtuiaudiostate.inl
vtuis/videotelui/inc/commands/tvtuicmdcontexttype.h
vtuis/videotelui/inc/commands/tvtuicmdpolicypriority.h
vtuis/videotelui/inc/commands/tvtuicmdvalidatorcallback.h
vtuis/videotelui/inc/commands/tvtuicmdvalidatorcallback.inl
vtuis/videotelui/inc/commands/tvtuicommandmodifierpriority.h
vtuis/videotelui/inc/commands/tvtuilocalvariation.h
vtuis/videotelui/inc/commands/tvtuilocalvariation.inl
vtuis/videotelui/inc/commands/tvtuimediastate.h
vtuis/videotelui/inc/commands/tvtuimediastate.inl
vtuis/videotelui/inc/commands/tvtuistates.h
vtuis/videotelui/inc/commands/tvtuistates.inl
vtuis/videotelui/inc/compman/cvtuicomponentmanager.h
vtuis/videotelui/inc/compman/mvtuicomponent.h
vtuis/videotelui/inc/compman/mvtuicomponentmanager.h
vtuis/videotelui/inc/compman/mvtuikeyeventobserver.h
vtuis/videotelui/inc/compman/mvtuilayoutchangeobserver.h
vtuis/videotelui/inc/compman/mvtuiresourcechangeobserver.h
vtuis/videotelui/inc/compman/mvtuiwindowservereventobserver.h
vtuis/videotelui/inc/compman/tvtuiblocklists.h
vtuis/videotelui/inc/compman/tvtuicomponentstate.h
vtuis/videotelui/inc/cvtuiappshutter.h
vtuis/videotelui/inc/cvtuidtmfbuffer.h
vtuis/videotelui/inc/cvtuivideocontrolbase.h
vtuis/videotelui/inc/features/cvtuifeaturebase.h
vtuis/videotelui/inc/features/cvtuifeaturemanager.h
vtuis/videotelui/inc/features/dialer/cvtuicmdclosedialer.h
vtuis/videotelui/inc/features/dialer/cvtuicmdopendialer.h
vtuis/videotelui/inc/features/dialer/cvtuidialer.h
vtuis/videotelui/inc/features/dialer/cvtuidialercontainer.h
vtuis/videotelui/inc/features/dialer/cvtuidialerskmodifier.h
vtuis/videotelui/inc/features/dialer/cvtuidialervideocontrol.h
vtuis/videotelui/inc/features/dialer/mvtuidialer.h
vtuis/videotelui/inc/features/menu/cvtuimenucontext.h
vtuis/videotelui/inc/features/menu/cvtuimenuitemdimmeraction.h
vtuis/videotelui/inc/features/menu/cvtuimenus.h
vtuis/videotelui/inc/features/menu/tvtuimenucommanditerator.h
vtuis/videotelui/inc/features/mvtuifeature.h
vtuis/videotelui/inc/features/numberentry/CVtUiNumberEntryControl.h
vtuis/videotelui/inc/features/numberentry/cvtuinumberentry.h
vtuis/videotelui/inc/features/numberentry/mvtuinumberentrycontrolobserver.h
vtuis/videotelui/inc/features/prefs/cvtuibrightness.h
vtuis/videotelui/inc/features/prefs/cvtuibrightnesspopup.h
vtuis/videotelui/inc/features/prefs/cvtuicolortone.h
vtuis/videotelui/inc/features/prefs/cvtuicontrast.h
vtuis/videotelui/inc/features/prefs/cvtuicontrastpopup.h
vtuis/videotelui/inc/features/prefs/cvtuiprefpopupbase.h
vtuis/videotelui/inc/features/prefs/cvtuiprefsettinglistbase.h
vtuis/videotelui/inc/features/prefs/cvtuiprefsliderbase.h
vtuis/videotelui/inc/features/prefs/cvtuiprefsliderskmodifier.h
vtuis/videotelui/inc/features/prefs/cvtuitransparentsettingpage.h
vtuis/videotelui/inc/features/prefs/cvtuivideoquality.h
vtuis/videotelui/inc/features/prefs/cvtuiwhitebalance.h
vtuis/videotelui/inc/features/prefs/mvtuisettingpageobserver.h
vtuis/videotelui/inc/features/softkey/cvtuisoftkeycontext.h
vtuis/videotelui/inc/features/softkey/cvtuisoftkeys.h
vtuis/videotelui/inc/features/softkey/cvtuisoftkeysetting.h
vtuis/videotelui/inc/features/softkey/cvtuisoftkeyvalidationaction.h
vtuis/videotelui/inc/features/toolbar/cvtuifixedtoolbar.h
vtuis/videotelui/inc/features/toolbar/cvtuifloatingtoolbar.h
vtuis/videotelui/inc/features/toolbar/cvtuihidetoolbaritemaction.h
vtuis/videotelui/inc/features/toolbar/cvtuitoolbarbase.h
vtuis/videotelui/inc/features/toolbar/cvtuitoolbarbutton.h
vtuis/videotelui/inc/features/toolbar/cvtuitoolbarcmdpolicy.h
vtuis/videotelui/inc/features/toolbar/cvtuitoolbarcontext.h
vtuis/videotelui/inc/features/toolbar/cvtuitoolbarskmodifier.h
vtuis/videotelui/inc/features/toolbar/tvtuitoolbarcommanditerator.h
vtuis/videotelui/inc/features/tvtuifeatureids.h
vtuis/videotelui/inc/features/volume/cvtuivolume.h
vtuis/videotelui/inc/features/volume/cvtuivolumecontrol.h
vtuis/videotelui/inc/features/volume/cvtuivolumepopup.h
vtuis/videotelui/inc/features/zoom/cvtuizoom.h
vtuis/videotelui/inc/features/zoom/cvtuizoompopup.h
vtuis/videotelui/inc/mvtuinumbersource.h
vtuis/videotelui/inc/mvtuishutterobserver.h
vtuis/videotelui/inc/mvtuistatecontext.h
vtuis/videotelui/inc/sliders/cvtuipopupbase.h
vtuis/videotelui/inc/sliders/cvtuisliderbase.h
vtuis/videotelui/inc/sliders/mvtuicomponentstateobserver.h
vtuis/videotelui/inc/tvtuiappstatebase.h
vtuis/videotelui/inc/tvtuiappstatebase.inl
vtuis/videotelui/inc/tvtuiappstates.h
vtuis/videotelui/inc/tvtuiwsevent.h
vtuis/videotelui/inc/tvtuiwsevent.inl
vtuis/videotelui/inc/videotelui.hrh
vtuis/videotelui/loc/videotelui.loc
vtuis/videotelui/rom/videotelui.iby
vtuis/videotelui/rom/videoteluiResources.iby
vtuis/videotelui/src/CVtUiActivateBtHfDialog.cpp
vtuis/videotelui/src/CVtUiActiveExec.cpp
vtuis/videotelui/src/CVtUiAllowVideoDialog.cpp
vtuis/videotelui/src/CVtUiApp.cpp
vtuis/videotelui/src/CVtUiAppUi.cpp
vtuis/videotelui/src/CVtUiBitmapManager.cpp
vtuis/videotelui/src/CVtUiBlankControl.cpp
vtuis/videotelui/src/CVtUiBlankDialog.cpp
vtuis/videotelui/src/CVtUiContextControl.cpp
vtuis/videotelui/src/CVtUiDoc.cpp
vtuis/videotelui/src/CVtUiEndCallButton.cpp
vtuis/videotelui/src/CVtUiEndCallButtonPane.cpp
vtuis/videotelui/src/CVtUiExecuteCmdDialog.cpp
vtuis/videotelui/src/CVtUiMainControl.cpp
vtuis/videotelui/src/CVtUiMutedControl.cpp
vtuis/videotelui/src/CVtUiNaviPane.cpp
vtuis/videotelui/src/CVtUiNaviPaneControl.cpp
vtuis/videotelui/src/CVtUiNumberEntryActivationControl.cpp
vtuis/videotelui/src/CVtUiRemoteVideoControl.cpp
vtuis/videotelui/src/CVtUiZoomControl.cpp
vtuis/videotelui/src/TVtUiCallParameters.cpp
vtuis/videotelui/src/VtUiLayout.cpp
vtuis/videotelui/src/VtUiPanic.cpp
vtuis/videotelui/src/VtUiUtility.cpp
vtuis/videotelui/src/commands/cvtuicmdbase.cpp
vtuis/videotelui/src/commands/cvtuicmdcontext.cpp
vtuis/videotelui/src/commands/cvtuicmdcustomvalidationactionbase.cpp
vtuis/videotelui/src/commands/cvtuicmdstatecheckaction.cpp
vtuis/videotelui/src/commands/cvtuicmdvalidationactionbase.cpp
vtuis/videotelui/src/commands/cvtuicmdvalidatorbase.cpp
vtuis/videotelui/src/commands/cvtuicommandmanager.cpp
vtuis/videotelui/src/commands/cvtuicommandmodifybase.cpp
vtuis/videotelui/src/commands/cvtuicommandpolicymanager.cpp
vtuis/videotelui/src/commands/cvtuiexecutioncontext.cpp
vtuis/videotelui/src/commands/cvtuifeaturecmdbase.cpp
vtuis/videotelui/src/commands/cvtuiprimarycmdpolicy.cpp
vtuis/videotelui/src/commands/tVtuifeaturevariation.cpp
vtuis/videotelui/src/commands/tvtuiaudiostate.cpp
vtuis/videotelui/src/commands/tvtuilocalvariation.cpp
vtuis/videotelui/src/commands/tvtuimediastate.cpp
vtuis/videotelui/src/commands/tvtuistates.cpp
vtuis/videotelui/src/compman/cvtuicomponentmanager.cpp
vtuis/videotelui/src/compman/tvtuiblocklists.cpp
vtuis/videotelui/src/compman/tvtuicomponentstate.cpp
vtuis/videotelui/src/cvtuiappshutter.cpp
vtuis/videotelui/src/cvtuidtmfbuffer.cpp
vtuis/videotelui/src/cvtuivideocontrolbase.cpp
vtuis/videotelui/src/features/cvtuifeaturebase.cpp
vtuis/videotelui/src/features/cvtuifeaturemanager.cpp
vtuis/videotelui/src/features/dialer/cvtuicmdclosedialer.cpp
vtuis/videotelui/src/features/dialer/cvtuicmdopendialer.cpp
vtuis/videotelui/src/features/dialer/cvtuidialer.cpp
vtuis/videotelui/src/features/dialer/cvtuidialercontainer.cpp
vtuis/videotelui/src/features/dialer/cvtuidialerskmodifier.cpp
vtuis/videotelui/src/features/dialer/cvtuidialervideocontrol.cpp
vtuis/videotelui/src/features/menu/cvtuimenucontext.cpp
vtuis/videotelui/src/features/menu/cvtuimenuitemdimmeraction.cpp
vtuis/videotelui/src/features/menu/cvtuimenus.cpp
vtuis/videotelui/src/features/menu/tvtuimenucommanditerator.cpp
vtuis/videotelui/src/features/numberentry/CVtUiNumberEntryControl.cpp
vtuis/videotelui/src/features/numberentry/cvtuinumberentry.cpp
vtuis/videotelui/src/features/prefs/cvtuibrightness.cpp
vtuis/videotelui/src/features/prefs/cvtuibrightnesspopup.cpp
vtuis/videotelui/src/features/prefs/cvtuicolortone.cpp
vtuis/videotelui/src/features/prefs/cvtuicontrast.cpp
vtuis/videotelui/src/features/prefs/cvtuicontrastpopup.cpp
vtuis/videotelui/src/features/prefs/cvtuiprefpopupbase.cpp
vtuis/videotelui/src/features/prefs/cvtuiprefsettinglistbase.cpp
vtuis/videotelui/src/features/prefs/cvtuiprefsliderbase.cpp
vtuis/videotelui/src/features/prefs/cvtuitransparentsettingpage.cpp
vtuis/videotelui/src/features/prefs/cvtuivideoquality.cpp
vtuis/videotelui/src/features/prefs/cvtuiwhitebalance.cpp
vtuis/videotelui/src/features/softkey/cvtuisoftkeycontext.cpp
vtuis/videotelui/src/features/softkey/cvtuisoftkeys.cpp
vtuis/videotelui/src/features/softkey/cvtuisoftkeysetting.cpp
vtuis/videotelui/src/features/softkey/cvtuisoftkeyvalidationaction.cpp
vtuis/videotelui/src/features/toolbar/cvtuifixedtoolbar.cpp
vtuis/videotelui/src/features/toolbar/cvtuifloatingtoolbar.cpp
vtuis/videotelui/src/features/toolbar/cvtuihidetoolbaritemaction.cpp
vtuis/videotelui/src/features/toolbar/cvtuitoolbarbase.cpp
vtuis/videotelui/src/features/toolbar/cvtuitoolbarbutton.cpp
vtuis/videotelui/src/features/toolbar/cvtuitoolbarcmdpolicy.cpp
vtuis/videotelui/src/features/toolbar/cvtuitoolbarcontext.cpp
vtuis/videotelui/src/features/toolbar/cvtuitoolbarskmodifier.cpp
vtuis/videotelui/src/features/toolbar/tvtuitoolbarcommanditerator.cpp
vtuis/videotelui/src/features/volume/cvtuivolume.cpp
vtuis/videotelui/src/features/volume/cvtuivolumecontrol.cpp
vtuis/videotelui/src/features/volume/cvtuivolumepopup.cpp
vtuis/videotelui/src/features/zoom/cvtuizoom.cpp
vtuis/videotelui/src/features/zoom/cvtuizoompopup.cpp
vtuis/videotelui/src/sliders/cvtuipopupbase.cpp
vtuis/videotelui/src/sliders/cvtuisliderbase.cpp
vtuis/videotelui/src/tvtuiappstatebase.cpp
vtuis/videotelui/src/tvtuistateresetting.cpp
vtuis/videotelui/src/tvtuistaterunning.cpp
vtuis/videotelui/src/tvtuistatestarting.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/group/bld.inf	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,25 @@
+/*
+* 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:    Telephony / videotelephony
+*
+*/
+
+
+
+#include "../vtprotocolplugins/group/bld.inf"
+#include "../vtengines/group/bld.inf"
+#include "../vtuis/group/bld.inf"
+#include "../videotelephony_plat/group/bld.inf"
+
+// End of File
\ No newline at end of file
--- a/layers.sysdef.xml	Tue Aug 31 15:16:10 2010 +0300
+++ b/layers.sysdef.xml	Wed Sep 01 12:29:12 2010 +0100
@@ -1,22 +1,21 @@
 <?xml version="1.0"?>
-<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_5_1.dtd" [
+<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_4_0.dtd" [
   <!ENTITY layer_real_source_path "sf/app/videotelephony" >
 ]>
 
-<SystemDefinition name="videotelephony" schema="1.5.1">
+<SystemDefinition name="videotelephony" schema="1.4.0">
   <systemModel>
     <layer name="app_layer">
       <module name="videotelephony">
         <unit name="videotelephony_plat" unitID="tedo.videotelephony_plat" bldFile="&layer_real_source_path;/videotelephony_plat/group" mrp="" />
-        <unit name="PacketVideoEngine" unitID="tedo.PacketVideoEngine" bldFile="&layer_real_source_path;/packetvideoengine/group" mrp="" filter="!sf_build" /> 
+        <unit name="PacketVideoEngineBinaries" unitID="tedo.PacketVideoEngineBinaries" bldFile="&layer_real_source_path;/packetvideoengine/PacketVideoEngineBinaries/group" mrp="" filter="!sf_build" /> 
         <unit name="vtprotocolsstub" unitID="tedo.vtprotocolsstub" bldFile="&layer_real_source_path;/vtprotocolsstub/group" mrp="" filter="sf_build" />  
         <unit name="vtprotocols" unitID="tedo.vtprotocols" bldFile="&layer_real_source_path;/vtprotocols/group" mrp="" filter="!sf_build" />
-        <unit name="vtprotocolplugins" unitID="tedo.vtprotocolplugins" bldFile="&layer_real_source_path;/vtprotocolplugins/group" mrp="" /> 
-        <unit name="vtengines" unitID="tedo.vtengines" bldFile="&layer_real_source_path;/vtengines/Group" mrp="" />  
-        <unit name="lcvtplugin" unitID="tedo.lcvtplugin" bldFile="&layer_real_source_path;/vtuis/lcvtplugin/group" mrp="" /> 
-				<unit name="lcvtapp" unitID="tedo.lcvtapp" bldFile="&layer_real_source_path;/vtuis/lcvtapp" mrp="" proFile="lcvtapp.pro" />
-				<unit name="lcvtindicatorplugin" unitID="tedo.lcvtindicatorplugin" bldFile="&layer_real_source_path;/vtuis/lcvtindicatorplugin" mrp="" proFile="lcvtindicatorplugin.pro" />
-        <unit name="lcvtindicatorcontroller" unitID="tedo.lcvtindicatorcontroller" bldFile="&layer_real_source_path;/vtuis/lcvtindicatorcontroller" mrp="" proFile="lcvtindicatorcontroller.pro" />
+        <unit name="DisplaySink" unitID="tedo.DisplaySink" bldFile="&layer_real_source_path;/vtprotocolplugins/DisplaySink/group" mrp="" /> 
+        <unit name="VideoSource" unitID="tedo.VideoSource" bldFile="&layer_real_source_path;/vtprotocolplugins/VideoSource/group" mrp="" />
+        <unit name="videoteleng" unitID="tedo.videoteleng" bldFile="&layer_real_source_path;/vtengines/videoteleng/Group" mrp="" />  
+        <unit name="videotelui" unitID="tedo.videotelui" bldFile="&layer_real_source_path;/vtuis/videotelui/group" mrp="" /> 
+	<unit name="vtmediatorplugin" unitID="tedo.vtmediatorplugin" bldFile="&layer_real_source_path;/vtengines/vtmediatorplugin/group" mrp="" />
       </module>
     </layer>
   </systemModel>
--- a/lcvtplugin.pkg	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-; Languages
-;
-&EN
-
-; Header
-#{"lcvtplugin patch"}, (0xF0112235), 1, 0, 0, TYPE=PU
-
-; Localised Vendor name
-%{"Nokia"}
-
-; Unique Vendor name
-:"Nokia"
-
-;Files
-"\epoc32\release\armv5\udeb\lcvtengineplugin.dll"    - "!:\sys\bin\lcvtengineplugin.dll"
-"\epoc32\data\Z\Resource\Plugins\lcvtengineplugin.RSC"-"!:\resource\plugins\lcvtengineplugin.RSC"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysdef_1_4_0.dtd	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,86 @@
+ <!ELEMENT SystemDefinition (systemModel?, build?)>
+ <!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED>
+ <!ELEMENT systemModel (layer+)>
+ <!ELEMENT layer (logicalset* | module*)*>
+ <!ATTLIST layer
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED
+  span CDATA #IMPLIED>
+ <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalset name CDATA #REQUIRED>
+ <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalsubset name CDATA #REQUIRED>
+ <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
+ <!ATTLIST module
+  name CDATA #REQUIRED
+  level CDATA #IMPLIED>
+ <!ELEMENT component (unit* | package* | prebuilt*)*>
+ <!ATTLIST component name CDATA #REQUIRED>
+ <!ELEMENT unit EMPTY>
+ <!ATTLIST unit
+  unitID ID #REQUIRED
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  bldFile CDATA #REQUIRED
+  priority CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT package EMPTY>
+ <!ATTLIST package
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT prebuilt EMPTY>
+ <!ATTLIST prebuilt
+  name CDATA #REQUIRED
+  version CDATA #REQUIRED
+  late (Y|N) #IMPLIED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
+ <!ELEMENT unitList (unitRef+)>
+ <!ATTLIST unitList
+  name ID #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT unitRef EMPTY>
+ <!ATTLIST unitRef unit IDREF #REQUIRED>
+ <!ELEMENT targetList EMPTY>
+ <!ATTLIST targetList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  target IDREFS #REQUIRED>
+ <!ELEMENT target EMPTY>
+ <!ATTLIST target
+  name ID #REQUIRED
+  abldTarget CDATA #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT option EMPTY>
+ <!ATTLIST option
+  name ID #REQUIRED
+  abldOption CDATA #REQUIRED
+  description CDATA #REQUIRED
+  enable (Y | N | y | n) #REQUIRED>
+ <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
+ <!ATTLIST configuration
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  filter CDATA #REQUIRED>
+ <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
+ <!ELEMENT unitListRef EMPTY>
+ <!ATTLIST unitListRef unitList IDREF #REQUIRED>
+ <!ELEMENT layerRef EMPTY>
+ <!ATTLIST layerRef layerName CDATA #REQUIRED>
+ <!ELEMENT buildLayer EMPTY>
+ <!ATTLIST buildLayer
+  command CDATA #REQUIRED
+  targetList IDREFS #IMPLIED
+  unitParallel (Y | N | y | n) #REQUIRED
+  targetParallel (Y | N | y | n) #IMPLIED>
+ <!ELEMENT specialInstructions EMPTY>
+ <!ATTLIST specialInstructions
+  name CDATA #REQUIRED
+  cwd CDATA #REQUIRED
+  command CDATA #REQUIRED>  
--- a/sysdef_1_5_1.dtd	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
- <!ELEMENT SystemDefinition (systemModel?, build?)>
- <!ATTLIST SystemDefinition
-  name CDATA #REQUIRED
-  schema CDATA #REQUIRED>
- <!ELEMENT systemModel (layer+)>
- <!ELEMENT layer (logicalset* | module*)*>
- <!ATTLIST layer
-  name CDATA #REQUIRED
-  levels CDATA #IMPLIED
-  span CDATA #IMPLIED>
- <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
- <!ATTLIST logicalset name CDATA #REQUIRED>
- <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
- <!ATTLIST logicalsubset name CDATA #REQUIRED>
- <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
- <!ATTLIST module
-  name CDATA #REQUIRED
-  level CDATA #IMPLIED>
- <!ELEMENT component (unit* | package* | prebuilt*)*>
- <!ATTLIST component name CDATA #REQUIRED>
- <!ELEMENT unit EMPTY>
- <!ATTLIST unit
-  unitID ID #REQUIRED
-  name CDATA #REQUIRED
-  mrp CDATA #REQUIRED
-  filter CDATA #IMPLIED
-  bldFile CDATA #REQUIRED
-  priority CDATA #IMPLIED
-  contract CDATA #IMPLIED
-  proFile CDATA #IMPLIED
-  qmakeArgs CDATA #IMPLIED>
- <!ELEMENT package EMPTY>
- <!ATTLIST package
-  name CDATA #REQUIRED
-  mrp CDATA #REQUIRED
-  filter CDATA #IMPLIED
-  contract CDATA #IMPLIED>
- <!ELEMENT prebuilt EMPTY>
- <!ATTLIST prebuilt
-  name CDATA #REQUIRED
-  version CDATA #REQUIRED
-  late (Y|N) #IMPLIED
-  filter CDATA #IMPLIED
-  contract CDATA #IMPLIED>
- <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
- <!ELEMENT unitList (unitRef+)>
- <!ATTLIST unitList
-  name ID #REQUIRED
-  description CDATA #REQUIRED>
- <!ELEMENT unitRef EMPTY>
- <!ATTLIST unitRef unit IDREF #REQUIRED>
- <!ELEMENT targetList EMPTY>
- <!ATTLIST targetList
-  name ID #REQUIRED
-  description CDATA #REQUIRED
-  target IDREFS #REQUIRED>
- <!ELEMENT target EMPTY>
- <!ATTLIST target
-  name ID #REQUIRED
-  abldTarget CDATA #REQUIRED
-  description CDATA #REQUIRED>
- <!ELEMENT option EMPTY>
- <!ATTLIST option
-  name ID #REQUIRED
-  abldOption CDATA #REQUIRED
-  description CDATA #REQUIRED
-  enable (Y | N | y | n) #REQUIRED>
- <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
- <!ATTLIST configuration
-  name ID #REQUIRED
-  description CDATA #REQUIRED
-  filter CDATA #REQUIRED>
- <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
- <!ELEMENT unitListRef EMPTY>
- <!ATTLIST unitListRef unitList IDREF #REQUIRED>
- <!ELEMENT layerRef EMPTY>
- <!ATTLIST layerRef layerName CDATA #REQUIRED>
- <!ELEMENT buildLayer EMPTY>
- <!ATTLIST buildLayer
-  command CDATA #REQUIRED
-  targetList IDREFS #IMPLIED
-  unitParallel (Y | N | y | n) #REQUIRED
-  targetParallel (Y | N | y | n) #IMPLIED>
- <!ELEMENT specialInstructions EMPTY>
- <!ATTLIST specialInstructions
-  name CDATA #REQUIRED
-  cwd CDATA #REQUIRED
-  command CDATA #REQUIRED>  
--- a/videosource.pkg	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +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:
-;
-; Languages
-&EN
-
-; Header
-#{"videosource"}, (0x101F8692), 1, 0, 0, TYPE=PU
-
-; Localised Vendor name
-%{"Nokia"}
-
-; Unique Vendor name
-:"Nokia"
-
-;Files
-"\epoc32\release\armv5\udeb\videosource.dll"    - "!:\sys\bin\videosource.dll"
--- a/videoteleng.pkg	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-; Languages
-;
-&EN
-
-; Header
-#{"videoteleng patch"}, (0x101F867F), 1, 0, 0, TYPE=PU
-
-; Localised Vendor name
-%{"Nokia"}
-
-; Unique Vendor name
-:"Nokia"
-
-;Files
-"\epoc32\release\armv5\udeb\videoteleng.dll"    - "!:\sys\bin\videoteleng.dll"
-"\epoc32\release\armv5\urel\cscallctrl.dll"    - "!:\sys\bin\cscallctrl.dll"
-"\epoc32\release\armv5\urel\vtlogger.dll"    - "!:\sys\bin\vtlogger.dll"
--- a/videotelephony.pro	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +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:                                                        
-#                                                                     
-#
-
-TEMPLATE = subdirs
-CONFIG += ordered
-
-symbian: {  
-    //:BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"    
-    :BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"packetvideoengine/group/bld.inf\""
-    :BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"vtprotocols/group/bld.inf\""   
-    :BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"vtprotocolplugins/group/bld.inf\""
-    :BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"vtengines/group/bld.inf\""
-    :BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"vtuis/lcvtplugin/group/bld.inf\""
-    :BLD_INF_RULES.prj_mmpfiles += $$LITERAL_HASH"include \"videotelephony_plat/group/bld.inf\""
-}
-
-SUBDIRS += vtuis/lcvtindicatorplugin
-SUBDIRS += vtuis/lcvtindicatorcontroller
-SUBDIRS += vtuis/lcvtapp
--- a/videotelephony_plat/group/bld.inf	Tue Aug 31 15:16:10 2010 +0300
+++ b/videotelephony_plat/group/bld.inf	Wed Sep 01 12:29:12 2010 +0100
@@ -18,4 +18,5 @@
 
 
 
+#include "../video_telephony_control_mediator_api/group/bld.inf"
 #include "../video_telephony_media_configuration_api/group/bld.inf"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videotelephony_plat/video_telephony_control_mediator_api/group/bld.inf	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  File that exports the files belonging to 
+:                Video Telephony Control Mediator API
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+
+../inc/videotelcontrolmediatorapi.h     APP_LAYER_PLATFORM_EXPORT_PATH( videotelcontrolmediatorapi.h)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videotelephony_plat/video_telephony_control_mediator_api/inc/videotelcontrolmediatorapi.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,67 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Video Telephony specific message services sent from Phone
+*                Application to Video Telephony.
+*
+*/
+
+
+#ifndef VIDEOTELCONTROLMEDIATORAPI_H
+#define VIDEOTELCONTROLMEDIATORAPI_H
+
+// INCLUDES
+#include <e32base.h>
+
+/**  The category UID for the messages in this header file. */
+const TUid KCatPhoneToVideotelCommands = { 0x200159A1 };
+
+/**  Version number of this API */
+const TInt KPhoneToVideotelCmdVersionMajor( 1 );
+const TInt KPhoneToVideotelCmdVersionMinor( 0 );
+const TInt KPhoneToVideotelCmdVersionBuild( 0 );
+
+/** package for passing dataport name to Video Telephony */
+typedef TPckgBuf<TName> TDataPortPackage;
+
+/**  Video Telephony related commands. */
+enum TPhoneToVideotelCommands
+    {
+    /**
+     * Commands Video Telephony to enable microphone.
+     */
+    EVtCmdUnmute = 0,
+    
+    /**
+     * Commands Video Telephony to disable microphone.
+     */
+    EVtCmdMute,
+        
+    /**
+     * Commands Video Telephony to use dataport. Command paramemeter is
+     * TDataPortPackage. This should be called when dataport is loaned.
+     * When this is sent, dataport recovery is allowed only after
+     * 1) later issued EVtCmdShutdown response is received.
+     * 2) call is ended by network/peer (i.e. local phone doesn't do hangup)
+     * 3) EPhoneCmdEndActiveCall command is received (see Mediator Commands To 
+     *    Telephony API)
+     *  Otherwise H.245 (VT) signalling may fail if call is released in two
+     *  stage.
+     */
+    EVtCmdUseDataport,
+    
+    EVtCmdReleaseDataport
+    };
+
+#endif // VIDEOTELCONTROLMEDIATORAPI_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videotelephony_plat/video_telephony_control_mediator_api/video_telephony_control_mediator_api.metaxml	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,17 @@
+<?xml version="1.0" ?>
+<api id="216d6a20aad391ac9077f1a2e8d8477d" dataversion="2.0">
+  <name>Video Telephony Control Mediator API</name>
+  <description>An interface for exchanging video telephony related commands (e.g. call initiation and termination) and providing data synchronization (e.g. contact data and audio mute state) between Phone and Video Telephone applications.</description>
+  <type>c++</type>
+  <collection>vtengines</collection>
+  <libs>
+  </libs>
+  <release category="platform"/>
+  <attributes>
+     <!-- This indicates wether the api provedes separate html documentation -->
+     <!-- or is the additional documentation generated from headers. -->
+     <!-- If you are unsuere then the value is "no" -->
+     <htmldocprovided>no</htmldocprovided>
+     <adaptation>no</adaptation>
+  </attributes>
+</api>
--- a/videotelui.pkg	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +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:
-;
-; Languages
-&EN
-
-; Header
-#{"videotelui"}, (0x101F8681), 1, 0, 0, TYPE=PU
-
-; Localised Vendor name
-%{"Nokia"}
-
-; Unique Vendor name
-:"Nokia"
-
-;Files
-"\epoc32\release\armv5\urel\videotelui.exe"    - "!:\sys\bin\videotelui.exe"
-"\epoc32\data\z\resource\apps\videotelui.rsc"-"!:\resource\apps\videotelui.rsc"
-"\epoc32\data\z\private\10003a3f\import\apps\videotelui_reg.rsc"-"!:\private\10003a3f\import\apps\videotelui_reg.rsc"
--- a/vtengines/videoteleng/Inc/Audio/CVtEngAudioHandler.h	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtengines/videoteleng/Inc/Audio/CVtEngAudioHandler.h	Wed Sep 01 12:29:12 2010 +0100
@@ -31,7 +31,7 @@
 // new audio routing
 #include    "TelephonyAudioRouting.h"
 #include    "MTelephonyAudioRoutingObserver.h"
-#include    <rphcltserver.h>
+#include    <RPhCltServer.h>
 #include    <mmf/server/sounddevice.h>
 
 // FORWARD DECLARATIONS
--- a/vtengines/videoteleng/Inc/Base/CVtEngAccessoryHandler.h	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtengines/videoteleng/Inc/Base/CVtEngAccessoryHandler.h	Wed Sep 01 12:29:12 2010 +0100
@@ -43,7 +43,7 @@
         
         /**
         * Two-phased constructor.
-        ? @return instance of CVtEngAccessoryHandler
+        ¨* @return instance of CVtEngAccessoryHandler
         */
         static CVtEngAccessoryHandler* NewL( );
         
--- a/vtengines/videoteleng/Inc/Extensions/CVtEngExtensions.h	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtengines/videoteleng/Inc/Extensions/CVtEngExtensions.h	Wed Sep 01 12:29:12 2010 +0100
@@ -113,4 +113,4 @@
         
     };
 
-#endif //CVTENGEXTENSIONS_H
\ No newline at end of file
+#endif //CVTENGEXTENSIONS_H
--- a/vtengines/videoteleng/Inc/Media/CVtEngDrawNGA.h	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtengines/videoteleng/Inc/Media/CVtEngDrawNGA.h	Wed Sep 01 12:29:12 2010 +0100
@@ -243,16 +243,7 @@
         /**
         * Create surface implementation
         */        
-        void DoCreateSurfaceL();
-
-        /**
-        *clearing a surface buffer to given colour
-        */
-        void ClearSurfacebuffer( 
-            TUint8* aStartAddr, 
-            TInt aOffset, 
-            const RSurfaceManager::TSurfaceInfoV01 aInfo, 
-            TRgb &aColor );
+        void DoCreateSurfaceL();        
         
         static TInt SurfaceBuffer0Ready(TAny* aAny);
         
--- a/vtengines/videoteleng/Inc/Media/CVtEngLocalVideo.h	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtengines/videoteleng/Inc/Media/CVtEngLocalVideo.h	Wed Sep 01 12:29:12 2010 +0100
@@ -32,23 +32,11 @@
 #include "CVTEngPubSubsListener.h"
 #include "mvtengcamerapreferencesobserver.h"
 
-#include "graphics/surfacemanager.h"
-#include "graphics/surface.h"
-#include "graphics/surfaceupdateclient.h"
-
 // FORWARD DECLARATIONS
 class CVSDataProvider;
 class CVtEngMediaHandler;
 class CVtEngCameraPreferences;
 
-
-// LOCAL CONSTANTS
-// Default source width.
-static const TInt KVtEngLocalVideoDefaultWidth = 176;
-
-// Default source height.
-static const TInt KVtEngLocalVideoDefaultHeight = 144;
-
 // CLASS DECLARATION
 
 /**
@@ -189,13 +177,6 @@
         */
         void SetViewFinderParameters( const TVtEngRenderingOptionsDP& aDP );
 
-        
-        /**
-        * Sets NGA configuration for view finder.
-        * @param aNGA NGA configuration
-        */
-        void SetViewFinderParameters( const TVtEngRenderingOptionsNGA &aNGA );
-
         /**
         * Sets default still image.
         */
@@ -559,8 +540,6 @@
             ERefreshing
             };
 
-	private: // inner classes
-
         /**
         * Provider information.
         */
@@ -1031,81 +1010,6 @@
 
         };
 
-		// class for NGA rendering viewfinder bitmap.
-		NONSHARABLE_CLASS( CVtEngVFBitmapNGARender ) : public CActive
-			{
-			
-		public: // constructor and destructor
-		
-			/**
-            * Two-phased constructor.
-            * @param aObserver call back interface to Display Sink
-            * @return instance of CVtEngDrawDSA
-            */
-			static CVtEngVFBitmapNGARender * NewL();
-
-			// Destructor.
-			~CVtEngVFBitmapNGARender();
-
-		public: // New mothod
-		
-			// update the buffer for bitmap, also activate this AO
-			TInt UpdateBitmapL( CFbsBitmap& aFrame );
-
-			// Initialize surface and set it to the background
-			TInt AttachSurfaceL( RWsSession *aWs, RWindow *aWindow );
-
-		private: // constructors
-		
-			// C++ constructor.
-			CVtEngVFBitmapNGARender();
-
-            /**
-            * By default Symbian 2nd phase constructor is private.
-            */
-            void ConstructL( );
-
-		private: // From CActive.
-
-		    /*
-            * @see CActive::RunL
-            */
-            virtual void RunL();
-
-            /**
-            * @see CActive::DoCancel()
-            */
-            virtual void DoCancel();
-
-        private:  // enumerations
-
-            enum { EVtEngVFMaxBuffers = 1 };
-            
-        private:    // Data
-        
-            RSurfaceManager iSurfaceManager;
-            RSurfaceUpdateSession iSurfaceUpdateSession;
-
-            //Surface pixel format
-            const TUidPixelFormat iSurfaceFormat;
-    
-            RChunk* iSurfaceChunk;
-
-            TUint8* iBuffer;
-    
-            //NGA surface id
-            TSurfaceId iSurfaceId;
-            
-            RWsSession *iWs;
-            RWindow *iWindow;
-    
-            //NGA surface has created
-            TBool iSurfaceCreated;
-            
-            TTimeStamp iTimeStamp;
-            
-            };
-		
         private:
 
         /**
@@ -1564,10 +1468,6 @@
 
         // Number of cameras in the device
         TInt iNumSupportedCameras;
-
-		CVtEngVFBitmapNGARender *iNGARender; 
-		RWindow *iWindow;
-		RWsSession *iWs;
     };
 
 #endif      // CVTENGLOCALVIDEO_H
--- a/vtengines/videoteleng/Inc/Media/TVtEngRenderConfigNGA.inl	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtengines/videoteleng/Inc/Media/TVtEngRenderConfigNGA.inl	Wed Sep 01 12:29:12 2010 +0100
@@ -40,8 +40,8 @@
     iType = ENgaRender;
     iWsSession = &aOptions.iWs;
     //iWsSreenDevice = &aOptions.iWsSD;
-    //iWindow = &aOptions.iWindow;
-    //iObserver = aOptions.iObserver;
+   // iWindow = &aOptions.iWindow;
+    iObserver = aOptions.iObserver;
     //iRect = aOptions.iRect;
     //iClipRect = aOptions.iClipRect;
     //iOffset = aOptions.iOffset;
--- a/vtengines/videoteleng/Inc/Media/TVtEngRenderingNGA.h	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtengines/videoteleng/Inc/Media/TVtEngRenderingNGA.h	Wed Sep 01 12:29:12 2010 +0100
@@ -42,6 +42,7 @@
         * C++ constructor
         */
         inline TVtEngRenderingOptionsNGA(
+            MVtEngFrameObserver& aObserver,
             RWindow& aWindow, RWsSession& aWs );
 
         /**
@@ -59,6 +60,9 @@
         RWindow&    iWindow;
         
         RWsSession&      iWs;
+        
+        // Frame observer
+        MVtEngFrameObserver* iObserver;
     };
 
 #include <tvtengrenderingnga.inl>
--- a/vtengines/videoteleng/Inc/Media/TVtEngRenderingNGA.inl	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtengines/videoteleng/Inc/Media/TVtEngRenderingNGA.inl	Wed Sep 01 12:29:12 2010 +0100
@@ -24,9 +24,11 @@
 // -----------------------------------------------------------------------------
 //
 inline TVtEngRenderingOptionsNGA::TVtEngRenderingOptionsNGA(
+    MVtEngFrameObserver& aObserver,
     RWindow& aWindow, RWsSession& aWs) :
     iWindow( aWindow ),
-    iWs( aWs )
+    iWs( aWs ),
+    iObserver( &aObserver )
     {
     }
 
@@ -38,7 +40,8 @@
 inline TVtEngRenderingOptionsNGA::TVtEngRenderingOptionsNGA(
     const TVtEngRenderingOptionsNGA& aOptions )
     : iWindow( aOptions.iWindow ),
-      iWs( aOptions.iWs)
+      iWs( aOptions.iWs),
+      iObserver( aOptions.iObserver )
     {
     }
 // End of File
--- a/vtengines/videoteleng/Inc/Session/MVtEngSessionInfo.h	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtengines/videoteleng/Inc/Session/MVtEngSessionInfo.h	Wed Sep 01 12:29:12 2010 +0100
@@ -85,12 +85,8 @@
             };
         
         enum { KCallNameLength = 50 };
-        enum { KCallNumberLength = 50 };
         
         typedef TBuf<KCallNameLength> TCallName;
-        
-        typedef TBuf<KCallNumberLength> TCallNumber;
-        
         /**
         * CLI data related to a call
         */
@@ -103,8 +99,6 @@
             
             // indicates if voice call can be made to peer
             TBool iVoiceCallPossible;
-            
-            TCallNumber iCallNumber;
             };
         
         /**
--- a/vtengines/videoteleng/Logger/Group/bld.inf	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtengines/videoteleng/Logger/Group/bld.inf	Wed Sep 01 12:29:12 2010 +0100
@@ -23,7 +23,7 @@
 
 PRJ_EXPORTS
 ../inc/cvtlogger.h      |../../../inc/cvtlogger.h
-../inc/vtlogger.hrh     |../../../inc/vtlogger.hrh
+../inc/VtLogger.hrh     |../../../inc/VtLogger.hrh
 
 PRJ_MMPFILES
 ../Group/vtlogger.mmp
--- a/vtengines/videoteleng/Src/Audio/CVtEngAudioHandler.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtengines/videoteleng/Src/Audio/CVtEngAudioHandler.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -33,7 +33,7 @@
 // CONSTANTS
 
 // For DevSound initialization
-//const TInt KVtEngUidControlHwDevice = 0x10206593;
+const TInt KVtEngUidControlHwDevice = 0x10206593;
 
 // ============================ MEMBER FUNCTIONS ===============================
 
@@ -55,7 +55,7 @@
 //
 void CVtEngAudioHandler::ConstructL()
     {
-    __VTPRINT( DEBUG_CONSTRUCT | DEBUG_AUDIO, "AH.ConstructL<" )
+    __VTPRINT( DEBUG_CONSTRUCT | DEBUG_AUDIO, "AH.ConstructL" )
 
     iAccHandler = &CVtEngUtility::AccessoryHandler();
     iAccHandler->RegisterObserverL( this );
@@ -67,7 +67,7 @@
     __VTPRINT2( DEBUG_AUDIO, "AH.iAccMode %d", ( TInt )iAccMode.iAccessoryMode )
 
     UpdateCurrentVolume();
-    __VTPRINT( DEBUG_CONSTRUCT | DEBUG_AUDIO, "AH.ConstructL>")
+    __VTPRINT( DEBUG_CONSTRUCT | DEBUG_AUDIO, "AH.ConstructL<")
     }
 
 // -----------------------------------------------------------------------------
--- a/vtengines/videoteleng/Src/Base/CVtEngDeviceLockMonitor.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtengines/videoteleng/Src/Base/CVtEngDeviceLockMonitor.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -58,20 +58,20 @@
 
     TInt state = EAutolockStatusUninitialized;
 
-	// Get autolock state
-	TInt err = iAutolockListener->Get( state );
+    // Get autolock state
+    TInt err = iAutolockListener->Get( state );
 
-	__VTPRINT2( DEBUG_GEN, "LockMonitor Get err: %d", err );
-	__VTPRINT2( DEBUG_GEN, "LockMonitor state: %d", state );
-
-	if( err == KErrNone )
+    __VTPRINT2( DEBUG_GEN, "LockMonitor Get err: %d", err );
+    __VTPRINT2( DEBUG_GEN, "LockMonitor state: %d", state );
+      
+    // Recognize the uninitialized state as autolock on, or the VT will be wrongly shown when startup & lock is on.
+    if( err == KErrNone )
 		{
 		const TInt event =
-        ( state <= EAutolockOff ) ?
+        ( state == EAutolockOff ) ?
                 KVtEngDeviceLockOff : KVtEngDeviceLockOn;
-        CVtEngEventManager::NotifyEvent( event );
-        }		
-			
+    CVtEngEventManager::NotifyEvent( event );
+    }	
     __VTPRINTEXIT( "LockMonitor.NotifyState" )
     }
 
--- a/vtengines/videoteleng/Src/Base/CVtEngSettings.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtengines/videoteleng/Src/Base/CVtEngSettings.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -24,8 +24,8 @@
 #include    "VtEngUtils.h"
 #include    "VtEngPanic.h"
 #include    <telincallvolcntrlcrkeys.h>
-#include    <rphcltserver.h>
-#include    <cphcltimagehandler.h>
+#include    <RPhCltServer.h>
+#include    <CPhCltImageHandler.h>
 #include    <videotelephonyinternalcrkeys.h>
 #include    <LogsDomainCRKeys.h>
 #include    <settingsinternalcrkeys.h>
@@ -897,7 +897,6 @@
     iCLI.iName = aCLI.iName;
     iCLI.iVoiceCallPossible = aCLI.iVoiceCallPossible;
     iCLI.iValid = ETrue;
-    iCLI.iCallNumber = aCLI.iCallNumber;
     __VTPRINT2( DEBUG_GEN, "iVoiceCallPossible=%d,", iCLI.iVoiceCallPossible )
     __VTPRINTEXIT( "Settings.SetCLI" ) 
     }
@@ -912,7 +911,6 @@
     aCLI.iCallId = iCLI.iCallId;
     aCLI.iVoiceCallPossible = iCLI.iVoiceCallPossible;
     aCLI.iName = iCLI.iName;
-    aCLI.iCallNumber = iCLI.iCallNumber;
     return iCLI.iValid;
     }
 
--- a/vtengines/videoteleng/Src/Base/cvtengmdtrmessagelistener.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtengines/videoteleng/Src/Base/cvtengmdtrmessagelistener.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -160,7 +160,6 @@
             cli.iCallId = data.iCallId;
             cli.iName = data.iDisplayText.Left( cli.iName.MaxLength() );
             cli.iVoiceCallPossible = data.iVoiceCallPossible;
-            cli.iCallNumber = data.iPhoneNumText.Left( cli.iCallNumber.MaxLength() );
             settings.SetCLI( cli );
             
             // ready == call is answered (allows setting app to foreground)
--- a/vtengines/videoteleng/Src/Media/CVtEngDrawNGA.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtengines/videoteleng/Src/Media/CVtEngDrawNGA.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -110,10 +110,7 @@
             {
             iConfig.iRemoteWindow->RemoveBackgroundSurface(ETrue);
             iConfig.iWsSession->UnregisterSurface(0, iSurfaceId);
-            if ( iSurfaceChunk != NULL )
-                {
-                iSurfaceChunk->Close();
-                }
+            iSurfaceChunk->Close();
             delete iSurfaceChunk;
             iSurfaceChunk = NULL;
             iSurfaceManager->CloseSurface(iSurfaceId);
@@ -121,13 +118,10 @@
             iSurfaceUpdateSession.Close();
                        
              /* Close the surface manager handle */
-            if ( iSurfaceManager != NULL )
-                {
-                iSurfaceManager->Close();
-                }
+            iSurfaceManager->Close();
            
             delete iSurfaceManager;
-            iSurfaceManager = NULL;
+            iSurfaceManager = 0;
             }
            
         for ( TInt i = KVtEngMaxSurfaceBuffers-1; i >= 0 ; i-- )
@@ -146,7 +140,6 @@
         iSurfaceBuffer1.UnSet();
         }
     delete iBufferWaiter;   
-    iBufferWaiter = NULL;
     iWaitingBuffers.Reset();
     
     __VTPRINTEXIT( "RVD(NGA).~" )
@@ -440,12 +433,8 @@
     iSurfaceManager->GetBufferOffset(iSurfaceId, 1, offset);
     iSurfaceBuffer1.Set(iSurfaceChunk->Base() + offset, 1 );
     
-    iConfig.iWsSession->RegisterSurface(0, iSurfaceId);  
-    TSurfaceConfiguration surfaceConfig;
-    surfaceConfig.SetSurfaceId( iSurfaceId );
-    surfaceConfig.SetOrientation( CFbsBitGc::EGraphicsOrientationRotated270);
-    iConfig.iRemoteWindow->SetBackgroundSurface( surfaceConfig, ETrue );
-    //iConfig.iRemoteWindow->SetBackgroundSurface(iSurfaceId);
+    iConfig.iWsSession->RegisterSurface(0, iSurfaceId);   
+    iConfig.iRemoteWindow->SetBackgroundSurface(iSurfaceId);
     
     iCallBackTable[0] = new(ELeave) CActiveCallBack(
             TCallBack(SurfaceBuffer0Ready, this), 
@@ -750,35 +739,20 @@
         User::LeaveIfError(err);    
         
         // Get the info from the surfaceManager
-        RSurfaceManager::TInfoBuf infoBuf;
-        err = iSurfaceManager->SurfaceInfo( iSurfaceId, infoBuf );
-        User::LeaveIfError(err);
-        RSurfaceManager::TSurfaceInfoV01 info = infoBuf();
-
-        __VTPRINT2( DEBUG_MEDIA, "chunk size=%d", iSurfaceChunk->Size() )
-
-        TRgb color( 0, 0, 0 );
-
+        RSurfaceManager::TInfoBuf info;
+        err = iSurfaceManager->SurfaceInfo(iSurfaceId, info);
+        User::LeaveIfError(err);    
+        
         TInt offset;
-
-        iSurfaceManager->GetBufferOffset( iSurfaceId, 0, offset );
-        __VTPRINT2( DEBUG_MEDIA, "offset0=%d", offset )
-        ClearSurfacebuffer( iSurfaceChunk->Base(), offset, info, color );
+        iSurfaceManager->GetBufferOffset(iSurfaceId, 0, offset);
         iSurfaceBuffer0.Set(iSurfaceChunk->Base() + offset, 0 );
-        
-        iSurfaceManager->GetBufferOffset( iSurfaceId, 1, offset );
-        __VTPRINT2( DEBUG_MEDIA, "offset1=%d", offset )
-        ClearSurfacebuffer( iSurfaceChunk->Base(), offset, info, color );
+        iSurfaceManager->GetBufferOffset(iSurfaceId, 1, offset);
         iSurfaceBuffer1.Set(iSurfaceChunk->Base() + offset, 1 );
         }
     
     iConfig.iWsSession->RegisterSurface(0, iSurfaceId);   
-    TSurfaceConfiguration surfaceConfig;
-    surfaceConfig.SetSurfaceId( iSurfaceId );
-    surfaceConfig.SetOrientation( CFbsBitGc::EGraphicsOrientationRotated270);
-    iConfig.iRemoteWindow->SetBackgroundSurface( surfaceConfig, ETrue );
-    //iConfig.iRemoteWindow->SetBackgroundSurface(iSurfaceId);
-
+    iConfig.iRemoteWindow->SetBackgroundSurface(iSurfaceId);
+    
     iConfig.iRemoteWindow->BeginRedraw();
     iConfig.iRemoteWindow->EndRedraw();
     
@@ -797,54 +771,6 @@
     ClearFlag( EInitializePostingSurfaceCalled );
     __VTPRINTEXIT( "RVD(NGA).DoCreateSurfaceL" )
     }
-
-// -----------------------------------------------------------------------------
-// CVtEngDrawNGA::ClearSurface
-// clearing a surface buffer to given colour
-// -----------------------------------------------------------------------------
-//
-void CVtEngDrawNGA::ClearSurfacebuffer( 
-    TUint8* aStartAddr, 
-    TInt aOffset, 
-    const RSurfaceManager::TSurfaceInfoV01 aInfo, 
-    TRgb &aColor )
-{
-    TUint8 red   = aColor.Red();
-    TUint8 green = aColor.Green();
-    TUint8 blue  = aColor.Blue();
-
-    // formulae borrowed from http://msdn.microsoft.com/en-us/library/ms893078.aspx
-    TUint8 yval = ( (  66 * (TInt32)red + 129 * (TInt32)green +  25 * (TInt32)blue + 128) >> 8) +  16;
-    TUint8 uval = ( ( -38 * (TInt32)red -  74 * (TInt32)green + 112 * (TInt32)blue + 128) >> 8) + 128;
-    TUint8 vval = ( ( 112 * (TInt32)red -  94 * (TInt32)green -  18 * (TInt32)blue + 128) >> 8) + 128;
-
-    TInt i = 0;
-
-    aStartAddr += aOffset;
-
-    while ( i < (aInfo.iSize.iHeight*aInfo.iSize.iWidth) )
-    {
-    *aStartAddr = yval;
-    aStartAddr++;
-    i++;
-    }
-    i=0;
-
-    while ( i < ((aInfo.iSize.iHeight*aInfo.iSize.iWidth)>>2) )
-        {
-        *aStartAddr = uval;
-        aStartAddr++;
-        i++;
-        }
-    i=0;
-
-    while ( i < ((aInfo.iSize.iHeight*aInfo.iSize.iWidth)>>2) )
-        {
-        *aStartAddr = vval;
-        aStartAddr++;
-        i++;
-        }
-}
     
 // -----------------------------------------------------------------------------
 // CVtEngDrawNGA::DoUpdateSinkParamsL
--- a/vtengines/videoteleng/Src/Media/CVtEngLocalVideo.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtengines/videoteleng/Src/Media/CVtEngLocalVideo.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -33,10 +33,6 @@
 #include    <capivideosource.h>
 #include    <cvtlogger.h>
 #include    <mvtprotocolhandler.h>
-#include    <fbs.h> 
-#include    <w32std.h> 
-#include    <graphics/suerror.h>
-#include    <graphics/surfaceconfiguration.h> 
 
 #include    "CVtEngCameraPreferences.h"
 
@@ -98,8 +94,6 @@
     iAsyncCallBack = new ( ELeave ) CAsyncCallBack(
         TCallBack( CallBackFunc, this ), EPriorityStandard );
 
-    iNGARender = CVtEngVFBitmapNGARender::NewL();
-
     TInt indexMobile( KErrNotFound );
     iShareImage = CVtEngShareImage::NewL( *this );
     iSourceController = CVSController::NewL( this );
@@ -374,9 +368,6 @@
     delete iSourceController;
     DeleteAudioSource();
     delete iShareImage;
-
-    delete iNGARender;
-    
     __VTPRINTEXIT( "LocVid.~" )
     }
 
@@ -842,11 +833,8 @@
     if ( iActiveProvider &&
          iActiveProvider->iType != KVtEngProviderNone )
         {
-#if 0
         TRAP_IGNORE( iOptions.iObserver->vtHandleFrameL(
             MVtEngFrameObserver::ELocalVideoFrame, &aFrame ) );
-#endif
-        iNGARender->UpdateBitmapL( aFrame );
         }
     __VTPRINTEXIT( "LocVid.vsViewFinderFrameReady" )
     }
@@ -1122,34 +1110,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CVtEngLocalVideo::SetViewFinderParameters
-// Configures parameters for rendering with NGA.
-// -----------------------------------------------------------------------------
-//
-void CVtEngLocalVideo::SetViewFinderParameters(
-    const TVtEngRenderingOptionsNGA &aNGA )
-    {
-    __VTPRINTENTER( "LocVid.SetVFParamsNGA" )
-
-    // Before setting the params, stop VF
-    if( ViewFinderStarted() )
-        {
-        StopViewFinder();
-        }
-
-    iOptions.iSize.SetSize( KVtEngLocalVideoDefaultWidth, 
-                            KVtEngLocalVideoDefaultHeight );
-    
-    iWindow = &aNGA.iWindow;
-    iWs = &aNGA.iWs;
-    
-    iRenderingMethod = EWindowServer;
-
-    iNGARender->AttachSurfaceL( iWs, iWindow );
-    __VTPRINTEXIT( "LocVid.SetVFParamsNGA" )
-    }
-
-// -----------------------------------------------------------------------------
 // CVtEngLocalVideo::SetDefaultStillImageL
 // Sets default still image.
 // -----------------------------------------------------------------------------
@@ -1924,10 +1884,8 @@
          iActiveProvider->iProvider &&
          iActiveProvider->iProvider->ViewFinderActive() )
         {
-#if 0
         TRAP_IGNORE( iOptions.iObserver->vtHandleFrameL(
             MVtEngFrameObserver::ELocalVideoFrame, NULL ) );
-#endif
         iActiveProvider->iProvider->StopViewFinder();
         __VTPRINT( DEBUG_MEDIA, "LocVideo.stopVF Stopped" )
         if ( IsFlag( EFlagAutomaticSwitchCallback )  ||
@@ -4542,224 +4500,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CVtEngLocalVideo::CVtEngVFBitmapNGARender::NewL
-// -----------------------------------------------------------------------------
-//
-CVtEngLocalVideo::CVtEngVFBitmapNGARender * 
-CVtEngLocalVideo::CVtEngVFBitmapNGARender::NewL()
-    {
-    CVtEngVFBitmapNGARender* self 
-        = new ( ELeave ) CVtEngVFBitmapNGARender();
-    CleanupStack::PushL( self );
-    self->ConstructL( );
-    CleanupStack::Pop();
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngLocalVideo::CVtEngVFBitmapNGARender::~CVtEngVFBitmapNGARender
-// -----------------------------------------------------------------------------
-//
-CVtEngLocalVideo::CVtEngVFBitmapNGARender::~CVtEngVFBitmapNGARender()
-    {
-    __VTPRINTENTER( "LocVid.NGARender.~" )
-    Cancel();
-    
-    if ( iSurfaceCreated )
-        {
-        iWindow->RemoveBackgroundSurface(ETrue);
-        iWs->UnregisterSurface(0, iSurfaceId);
-        
-        iSurfaceManager.CloseSurface(iSurfaceId);
-        iSurfaceChunk->Close();
-        delete iSurfaceChunk;
-        iSurfaceChunk = NULL;
-        
-        iSurfaceManager.Close();
-            
-        iSurfaceUpdateSession.CancelAllUpdateNotifications();
-        iSurfaceUpdateSession.Close();    
-        }
-    
-    __VTPRINTEXIT( "LocVid.NGARender.~" )
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngLocalVideo::CVtEngVFBitmapNGARender::UpdateBitmap
-// -----------------------------------------------------------------------------
-//
-TInt CVtEngLocalVideo::CVtEngVFBitmapNGARender::UpdateBitmapL( CFbsBitmap& aFrame )
-    {
-    __VTPRINTENTER( "LocVid.NGARender.UpdateBitmapL" )
-    // do nothing if we're already active, the newer bitmap will be ignored.
-    if ( IsActive() )
-        {
-        __VTPRINTEXIT( "LocVid.NGARender.UpdateBitmapL 0" )
-        return KErrNone;
-        }
-    else
-        {
-        if ( !iSurfaceCreated )
-            {
-            User::Leave( KErrNotReady );
-            }
-        aFrame.BeginDataAccess();
-        __VTPRINT2( DEBUG_MEDIA, "LocVid.NGARender.bitmap size = %d", aFrame.DataSize() );
-#if 0
-        memcpy( iBuffer, aFrame.DataAddress(), aFrame.DataSize() );
-#else
-        TInt size = aFrame.DataSize();
-        TPtr8 ptrBuffer( iBuffer, size );
-        ptrBuffer.Copy( reinterpret_cast<TUint8*>(aFrame.DataAddress()), size );
-#endif
-        __VTPRINT( DEBUG_MEDIA, "LocVid.NGARender.bitmap step 1" );
-        aFrame.EndDataAccess();
-        __VTPRINT( DEBUG_MEDIA, "LocVid.NGARender.bitmap step 2" );
-        iStatus = KRequestPending;
-        SetActive();
-        __VTPRINT( DEBUG_MEDIA, "LocVid.NGARender.bitmap step 3" );
-        iSurfaceUpdateSession.NotifyWhenDisplayed( iStatus, iTimeStamp );
-        __VTPRINT( DEBUG_MEDIA, "LocVid.NGARender.bitmap step 4" );
-        iSurfaceUpdateSession.SubmitUpdate( KAllScreens, iSurfaceId, 0, NULL );
-        __VTPRINT( DEBUG_MEDIA, "LocVid.NGARender.bitmap step 5" );
-
-        __VTPRINTEXIT( "LocVid.NGARender.UpdateBitmapL 1" )
-
-        return KErrNone;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngLocalVideo::CVtEngVFBitmapNGARender::CreateSurfaceL
-// -----------------------------------------------------------------------------
-//
-TInt CVtEngLocalVideo::CVtEngVFBitmapNGARender::AttachSurfaceL( 
-        RWsSession *aWs, 
-        RWindow *aWindow )
-    {
-    __VTPRINTENTER( "LocVid.NGARender.AttachSurfaceL" )
-    
-    if ( aWs == NULL || aWindow == NULL )
-        {
-        User::Leave( KErrArgument );
-        }
-        
-        if(iSurfaceCreated)
-        	return KErrNone;
-    
-    if ( !iSurfaceCreated )
-        {    
-        TInt err;
-            
-        err = iSurfaceUpdateSession.Connect();    
-        User::LeaveIfError(err);
-            
-        err = iSurfaceManager.Open();
-        User::LeaveIfError(err);
-        
-        RSurfaceManager::TSurfaceCreationAttributesBuf attributes;
-        attributes().iPixelFormat           = iSurfaceFormat; 
-        attributes().iSize.SetSize( KVtEngLocalVideoDefaultWidth, 
-                                    KVtEngLocalVideoDefaultHeight );
-        attributes().iBuffers               = EVtEngVFMaxBuffers;
-        attributes().iStride                = attributes().iSize.iWidth*4;
-        attributes().iOffsetToFirstBuffer   = 0;
-        attributes().iAlignment             = 4;
-        attributes().iContiguous            = EFalse;
-        attributes().iMappable              = ETrue;
-    
-        err = iSurfaceManager.CreateSurface( attributes, iSurfaceId );
-        User::LeaveIfError( err );  
-        
-        // Map to chunk
-        iSurfaceChunk = new RChunk();
-        User::LeaveIfNull( iSurfaceChunk );    
-        err = iSurfaceManager.MapSurface( iSurfaceId, *iSurfaceChunk );
-        User::LeaveIfError( err );    
-    
-        // Get the info from the surfaceManager
-        RSurfaceManager::TInfoBuf info;
-        err = iSurfaceManager.SurfaceInfo( iSurfaceId, info );
-        User::LeaveIfError( err );    
-    
-        TInt offset;
-        iSurfaceManager.GetBufferOffset( iSurfaceId, 0, offset );
-        iBuffer = iSurfaceChunk->Base() + offset;
-        
-        iSurfaceCreated = ETrue;
-        }
-    else
-        {
-        if ( iWs == NULL || iWindow == NULL )
-            {
-            User::Leave( KErrGeneral );
-            }
-        
-        iWindow->RemoveBackgroundSurface(ETrue);
-        iWs->UnregisterSurface(0, iSurfaceId);
-        
-        __VTPRINT( DEBUG_MEDIA, "LocVid.NGARender.Surface exists, detach first!" )
-        }
-
-    iWs = aWs;
-    iWindow = aWindow;
-    iWs->RegisterSurface( 0, iSurfaceId );
-    
-    TSurfaceConfiguration surfaceConfig;
-    surfaceConfig.SetSurfaceId( iSurfaceId );
-    surfaceConfig.SetOrientation( CFbsBitGc::EGraphicsOrientationRotated270);
-    iWindow->SetBackgroundSurface( surfaceConfig, ETrue );
-    //iWindow->SetBackgroundSurface( iSurfaceId );
-    
-    __VTPRINTEXIT( "LocVid.NGARender.AttachSurfaceL" )
-    
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngLocalVideo::CVtEngVFBitmapNGARender::~CVtEngVFBitmapNGARender
-// -----------------------------------------------------------------------------
-//
-CVtEngLocalVideo::CVtEngVFBitmapNGARender::CVtEngVFBitmapNGARender()
-    : CActive( CActive::EPriorityStandard ),
-      iSurfaceFormat( EUidPixelFormatXRGB_8888 )
-    {
-    iSurfaceCreated = EFalse;
-
-    CActiveScheduler::Add( this );        
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngLocalVideo::CVtEngVFBitmapNGARender::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CVtEngLocalVideo::CVtEngVFBitmapNGARender::ConstructL( )
-    {
-    __VTPRINTENTER( "LocVid.NGARender.ConstructL" )  
-    __VTPRINTEXIT( "LocVid.NGARender.ConstructL" )
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngLocalVideo::CVtEngVFBitmapNGARender::RunL
-// -----------------------------------------------------------------------------
-//
-void CVtEngLocalVideo::CVtEngVFBitmapNGARender::RunL()
-    {
-    __VTPRINTENTER( "LocVid.NGARender.RunL" )  
-    __VTPRINTEXIT( "LocVid.NGARender.RunL" )
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngLocalVideo::CVtEngVFBitmapNGARender::DoCancel
-// -----------------------------------------------------------------------------
-//
-void CVtEngLocalVideo::CVtEngVFBitmapNGARender::DoCancel()
-    {
-    __VTPRINTENTER( "LocVid.NGARender.DoCancel" )  
-    __VTPRINTEXIT( "LocVid.NGARender.DoCancel" )
-    }
-
-// -----------------------------------------------------------------------------
 // CVtEngLocalVideo::CreateCameraPreferencesL
 // -----------------------------------------------------------------------------
 //
--- a/vtengines/videoteleng/Src/Media/CVtEngMediaHandler.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtengines/videoteleng/Src/Media/CVtEngMediaHandler.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -82,7 +82,7 @@
 const TInt KVtEngCharacterEndLine( 10 );
 
 // Multiplex delay in milliseconds
-//const TInt KVtEngMultiplexingDelay = 150;
+const TInt KVtEngMultiplexingDelay = 150;
 
 // TradeOff values
 const TInt KVtEngTradeOffDetailMax = 9;
@@ -802,10 +802,10 @@
             break;
         case KVtEngPrepareViewFinder:
             {
-            const TPckgC<TVtEngRenderingOptionsNGA>& pckg =
-                static_cast< const TPckgC<TVtEngRenderingOptionsNGA>& >
+            const TPckgC<TVtEngRenderingOptions>& pckg =
+                static_cast< const TPckgC<TVtEngRenderingOptions>& >
                 ( *aOperation.Parameters() );
-            const TVtEngRenderingOptionsNGA &options = pckg();
+            const TVtEngRenderingOptions& options = pckg();
             iLocalVideo->SetViewFinderParameters( options );
             }
             break;
@@ -3891,19 +3891,21 @@
     const TVtCommandResponse& aResponse )
     {
     __VTPRINTENTER( "MH.EncExtCommandCompleted" )
-
-    __VTPRINT2( DEBUG_MEDIA, "MH.263 ComC type=%d", aResponse.iCmdType )
+    const TInt type( aResponse.iCmdType );
+    const TInt protoCmdId( aResponse.iCmdId );
+    const TInt protoResponse( aResponse.iCmdStatus );
+    __VTPRINT2( DEBUG_MEDIA, "MH.263 ComC type=%d", type )
     __VTPRINT3( DEBUG_MEDIA, "MH.263 ComC cmdId=%d,response=%d",
-      aResponse.iCmdId, aResponse.iCmdStatus )
+      protoCmdId, protoResponse )
 
     // Find correct entry in iPendingOps based on TOperation because there can
     // be several entries with same Protocol cmd id since each Protocol interface has their
     // own id allocation and ids may overlap.
     TInt index( KErrNotFound );
     TOperation completedOp = ENone;
-    if ( MatchResponseToPendingOps( aResponse.iCmdId, ESendIntraframe, &index ) ||
-         MatchResponseToPendingOps( aResponse.iCmdId, ESetIFrameInterval, &index ) ||
-         MatchResponseToPendingOps( aResponse.iCmdId, ESetVideoQuality, &index ) )
+    if ( MatchResponseToPendingOps( protoCmdId, ESendIntraframe, &index ) ||
+         MatchResponseToPendingOps( protoCmdId, ESetIFrameInterval, &index ) ||
+         MatchResponseToPendingOps( protoCmdId, ESetVideoQuality, &index ) )
         {
         // TOperation entries in are unique in the array...
         const TCmdOpPair pair = (*iPendingOps)[ index ];
@@ -3920,13 +3922,13 @@
         __VTPRINT( DEBUG_MEDIA, "MH.EECC ESetVideoQuality" )
         if( iPendingOp && ( iPendingOp->Command() == KVtEngSetVideoQuality ) )
             {
-            CompleteOp( aResponse.iCmdStatus );
+            CompleteOp( protoResponse );
             }
-        if( aResponse.iCmdStatus == KErrNone )
+        if( protoResponse == KErrNone )
             {
             TVtEngVideoQuality::TVQSParams vqp;
 
-            if ( iVideoQuality.SettingSucceeded( aResponse.iCmdId, vqp ) )
+            if ( iVideoQuality.SettingSucceeded( protoCmdId, vqp ) )
                 {
                 __VTPRINT( DEBUG_MEDIA, "MH.EECC sending vq indication" )
                 AddOperation( ESendVTSTO,
@@ -3942,7 +3944,7 @@
             }
         else
             {
-            iVideoQuality.SettingFailed( aResponse.iCmdId );
+            iVideoQuality.SettingFailed( protoCmdId );
             }
         }
     if ( iProtoState == MVtProtocolCommand::EIdle )
@@ -3959,7 +3961,8 @@
 void CVtEngMediaHandler::HandleVideoEncoderInformationalEventL(
     const TVtIndicationEvent& aEvent)
     {
-    __VTPRINT2( DEBUG_MEDIA, "MH.263 infoevent=%d", aEvent.iEventType )
+    const TInt type( aEvent.iEventType );
+    __VTPRINT2( DEBUG_MEDIA, "MH.263 infoevent=%d", type )
     }
 
 // -----------------------------------------------------------------------------
@@ -3971,17 +3974,20 @@
     const TVtCommandResponse& aResponse )
     {
 	__VTPRINTENTER( "MH.HandleH324MConfigCommandCompletedL" )
-
-	__VTPRINT2( DEBUG_MEDIA, "MH.HandleH324MConfigCommandCompletedL type=%d", aResponse.iCmdType )
-    __VTPRINT3( DEBUG_MEDIA, "MH.HandleH324MConfigCommandCompletedL cmdId=%d,response=%d", aResponse.iCmdId, aResponse.iCmdStatus )
+	const TInt protoCmdId( aResponse.iCmdId );
+	const TInt protoResponse( aResponse.iCmdStatus );
+	const TInt type( aResponse.iCmdType );
+
+	__VTPRINT2( DEBUG_MEDIA, "MH.HandleH324MConfigCommandCompletedL type=%d", type )
+    __VTPRINT3( DEBUG_MEDIA, "MH.HandleH324MConfigCommandCompletedL cmdId=%d,response=%d", protoCmdId, protoResponse )
     TInt index( KErrNotFound );
     // Find correct entry in iPendingOps based on TOperation because there can
     // be several entries with same Protocol cmd id since each Protocol interface has their
     // own id allocation and ids may overlap.
-    if ( MatchResponseToPendingOps( aResponse.iCmdId, ESetVendorId, &index ) ||
-         MatchResponseToPendingOps( aResponse.iCmdId, ESendVTSTO, &index ) ||
-         MatchResponseToPendingOps( aResponse.iCmdId, ESetSupportedResolutions, &index ) ||
-         MatchResponseToPendingOps( aResponse.iCmdId, ESetFastCsupOptions, &index ) )
+    if ( MatchResponseToPendingOps( protoCmdId, ESetVendorId, &index ) ||
+         MatchResponseToPendingOps( protoCmdId, ESendVTSTO, &index ) ||
+         MatchResponseToPendingOps( protoCmdId, ESetSupportedResolutions, &index ) ||
+         MatchResponseToPendingOps( protoCmdId, ESetFastCsupOptions, &index ) )
         {
         // TOperation entries in are unique in the array...
         const TCmdOpPair pair = (*iPendingOps)[ index ];
@@ -3996,10 +4002,10 @@
 
         	// Check does the received command ID match to command ID that was received
         	// from Protocol when DTMF was send.
-        	if( stateManager->Handlers().Dtmf().CheckCommandId( aResponse.iCmdId ) )
+        	if( stateManager->Handlers().Dtmf().CheckCommandId( protoCmdId ) )
         		{
         		__VTPRINT( DEBUG_MEDIA, "MH.Complete DTMF" )
-        		stateManager->Handlers().Dtmf().SendComplete( aResponse.iCmdStatus );
+        		stateManager->Handlers().Dtmf().SendComplete( protoResponse );
         		}
         	}
             break;
--- a/vtengines/vtmediatorplugin/inc/vtinternalmediatorapi.h	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtengines/vtmediatorplugin/inc/vtinternalmediatorapi.h	Wed Sep 01 12:29:12 2010 +0100
@@ -41,8 +41,7 @@
 struct TVtVideoTelephonyCallInformation
 {   
     /** Max length of display text */
-    enum { TDisplayTextMaxLength = 100 }; 
-    enum { TPhoneNumMaxLength = 100 };
+    enum { TDisplayTextMaxLength = 100 };        
                                      
     /** Display text type definition */
     typedef TBuf<TDisplayTextMaxLength> TDisplayText;
@@ -68,12 +67,6 @@
         EDisplayTextValid = 0x01,
         EDataportValid    = 0x02
     };
-    
-    /** Display text type definition */
-    typedef TBuf<TPhoneNumMaxLength> TPhoneNumText;
-      
-    /** Remote end CLI identifier (name/number/call id) */
-    TPhoneNumText iPhoneNumText;
                                                
     /** Event data validity */
     TUint iEventDataValidity;
--- a/vtengines/vtmediatorplugin/src/cvtmediatorplugin.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtengines/vtmediatorplugin/src/cvtmediatorplugin.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -620,7 +620,6 @@
         {
         iVtCallInfo.iVoiceCallPossible = ETrue;
         }
-    iVtCallInfo.iPhoneNumText = aData.iRemotePhoneNumber;
     iVtCallInfo.iEventDataValidity |= 
         TVtVideoTelephonyCallInformation::EDisplayTextValid;
     TRACE2("CVtMediatorPlugin.SaveCallData data saved=%d>",
--- a/vtprotocolplugins/DisplaySink/group/bld.inf	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtprotocolplugins/DisplaySink/group/bld.inf	Wed Sep 01 12:29:12 2010 +0100
@@ -25,7 +25,7 @@
 
 PRJ_EXPORTS
 
-../inc/cvtimageconverter.h      |../../../inc/cvtimageconverter.h
+../inc/CVtImageConverter.h      |../../../inc/cvtimageconverter.h
 ../inc/cvtimageconverter.inl    |../../../inc/cvtimageconverter.inl
 ../inc/mdisplaysink.h           |../../../inc/mdisplaysink.h
 ../inc/TDisplaySinkParamsDSA.h  |../../../inc/tdisplaysinkparamsdsa.h
--- a/vtprotocolplugins/DisplaySink/src/CVtImageConverter.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtprotocolplugins/DisplaySink/src/CVtImageConverter.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -20,7 +20,7 @@
 
 #include <e32svr.h>
 #include <fbs.h>
-#include "cvtimageconverter.h"
+#include "CVtImageConverter.h"
 
 // LOCAL CONSTANTS AND MACROS
 
--- a/vtprotocolplugins/VideoSource/src/CVSOnboardCameraDataProvider.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtprotocolplugins/VideoSource/src/CVSOnboardCameraDataProvider.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -824,7 +824,7 @@
 	{
 	__IF_DEBUG(Print(_L("VideoSource [%d]: CVSOnboardCameraDataProvider::HandleEvent() event %d>>"),
     	RThread().Id().operator TUint(), aEvent.iEventType  ));
-    __IF_DEBUG(Print(_L("VideoSource [%d]: CVSOnboardCameraDataProvider::HandleEvent() iErrorCode %d>"),
+  __IF_DEBUG(Print(_L("VideoSource [%d]: CVSOnboardCameraDataProvider::HandleEvent() iErrorCode %d>"),
     	RThread().Id().operator TUint(), aEvent.iErrorCode  ));
   //Needs to handled first
   if( aEvent.iEventType == KUidECamEventCameraNoLongerReserved )
--- a/vtprotocolplugins/VideoSource/src/CVSStillImageDataProvider.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtprotocolplugins/VideoSource/src/CVSStillImageDataProvider.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -22,8 +22,8 @@
 #include <bautils.h>
 #include <imageconversion.h>
 #include <cvtimageconverter.h>
-#include <rphcltserver.h>
-#include <cphcltimagehandler.h>
+#include <RPhCltServer.h>
+#include <CPhCltImageHandler.h>
 #include <w32std.h>
 
 #include "CVSStillImageDataProvider.h"
@@ -327,7 +327,7 @@
     iActiveWait = new (ELeave) CVSActiveWait< CVSStillImageDataProvider > ( this );
 
     //Create viewer
-    iViewer = CMultiframeProvider::NewL( this , iDisplayMode );
+    iViewer = CMultiframeProvider::NewL( this , EColor16MU/*iDisplayMode*/ );
     User::LeaveIfError( iFreezeCS.CreateLocal() );
 
     __IF_DEBUG(Print(_L("VideoSource [%d]: CVSStillImageDataProvider::CommonInitializeL() <<"), RThread().Id().operator TUint()));
@@ -805,7 +805,7 @@
     // SourceThreadLogoff() if a switch is pending
     if( iProtoTimer && ( iPSState == EPSPlaying ) )
         {
-        iProtoTimer->After( iProtoUpdateRate, &CVSStillImageDataProvider::ProtoTimer );
+        iProtoTimer->After( iProtoUpdateRate, &ProtoTimer );
         }
     __IF_DEBUG(Print(_L("VideoSource[%d]: CVSStillImageDataProvider::ProtoTimer() this %x <<"), RThread().Id().operator TUint(), this));
     }
@@ -894,8 +894,7 @@
     CWsScreenDevice* wsScreenDevice = new ( ELeave ) CWsScreenDevice( wsSession );
     CleanupStack::PushL( wsScreenDevice );
     User::LeaveIfError( wsScreenDevice->Construct() );
-    //iDisplayMode = wsScreenDevice->DisplayMode();/* = EColor16MU;*/
-    iDisplayMode = EColor16MU;
+    iDisplayMode = wsScreenDevice->DisplayMode();/* = EColor16MU;*/
     CleanupStack::PopAndDestroy( 2 ); // wsSession, wsScreenDevice
     __IF_DEBUG(Print(_L("VideoSource [%d]: CVSStillImageDataProvider::ConstructL() this %x <<"), RThread().Id().operator TUint(), this));
     }
@@ -1097,7 +1096,7 @@
     // has beed aquired and play state is on
     if ( ( iTargetSize == iVFBitmap->Size() ) && ( iVFState == EVFPlaying ) )
         {
-        iVFTimer->After( 1, &CVSStillImageDataProvider::VFTimer );
+        iVFTimer->After( 1, &VFTimer );
         }
     else
         {
--- a/vtprotocolplugins/VideoSource/src/cmultiframeprovider.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtprotocolplugins/VideoSource/src/cmultiframeprovider.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -19,8 +19,8 @@
 // INCLUDE FILES
 #include <imageconversion.h>
 #include <cvtimageconverter.h>
-#include <rphcltserver.h>
-#include <cphcltimagehandler.h>
+#include <RPhCltServer.h>
+#include <CPhCltImageHandler.h>
 #include <bautils.h>
 
 #include "cmultiframeprovider.h"
@@ -233,7 +233,7 @@
             }
         iGSImage = ETrue;
         iCount = 1;     
-		    iActiveWaitInit->InitializeWaiter( &CMultiframeProvider::ConversionFinished );
+		    iActiveWaitInit->InitializeWaiter( &ConversionFinished );
         iActiveWaitInit->Signal( KErrNone );
         }
     else
@@ -275,7 +275,7 @@
     CleanupStack::PopAndDestroy(); // tempBitmap
     tempBitmap = 0;
 
-    iActiveWaitInit->InitializeWaiter( &CMultiframeProvider::BMSScalingFinished );
+    iActiveWaitInit->InitializeWaiter( &BMSScalingFinished );
     iActiveWaitInit->Signal( KErrNone );
     __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeProvider::IniatializeBlank() <<"), RThread().Id().operator TUint()));
     }
@@ -517,7 +517,7 @@
     iDefaultImageFile.Close(); 
     if ( aError == KErrNone )
         {
-				iActiveWaitInitScale->InitializeWaiter( &CMultiframeProvider::BMSScalingFinished );
+				iActiveWaitInitScale->InitializeWaiter( &BMSScalingFinished );
       	if ( iGSImage )
        			{
        			__IF_DEBUG(Print(_L("VideoSource[%d]: CMultiframeProvider::ConversionFinished() scale GS "), RThread().Id().operator TUint()));
@@ -579,12 +579,12 @@
         	}
     // Allways inform Decoding problems
     else
-       	{
+        {
         iObserver->NotifyImageHandlingError( aError );
         delete iTempBM;
-       	delete iMask;
-       	iMask = NULL;
-       	iTempBM = NULL;
+        delete iMask;
+        iMask = NULL;
+        iTempBM = NULL;
         // GIF used when error happen
         if ( iCount > 1 )
             {
@@ -686,7 +686,7 @@
             {
             //ScaleCopy is not running, Jump ScaleCopy
             __IF_DEBUG(Print(_L("VideoSource[%d]: CMultiframeProvider::VFScalingReady()jump ScaleCopy>>"), RThread().Id().operator TUint()));
-            iActiveWaitScale->InitializeWaiter( &CMultiframeProvider::VFRescalingFinished );
+            iActiveWaitScale->InitializeWaiter( &VFRescalingFinished );
             iActiveWaitScale->Signal(KErrNone);
             }
         }
@@ -729,7 +729,7 @@
     else
         {
         __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeProvider::ScaleCopy(): scaling NOW"), RThread().Id().operator TUint()));
-        iActiveWaitScale->InitializeWaiter( &CMultiframeProvider::VFRescalingFinished );
+        iActiveWaitScale->InitializeWaiter( &VFRescalingFinished );
         TInt result( iVFbitmap->Bitmap().Resize( aSize ) );
         __IF_DEBUG(Print(_L("VideoSource [%d]: CMultiframeProvider::ScaleCopy() result %d <<"), RThread().Id().operator TUint(), result));
         if ( result != KErrNone )
@@ -811,7 +811,7 @@
 void CMultiframeProvider::ScaleVF( const TSize& aSize )
     {
     __IF_DEBUG(Print(_L("VideoSource[%d]: CMultiframeProvider::ScaleVF() >>"), RThread().Id().operator TUint()));
-    iActiveWaitScale->InitializeWaiter( &CMultiframeProvider::VFRescalingFinished );
+    iActiveWaitScale->InitializeWaiter( &VFRescalingFinished );
     TInt result( iVFbitmap->Bitmap().Resize( aSize ) );
     ClearVFScalingTargetSize();
     if ( result != KErrNone )
--- a/vtprotocols/group/videotelproto.mmp	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtprotocols/group/videotelproto.mmp	Wed Sep 01 12:29:12 2010 +0100
@@ -40,7 +40,7 @@
 SOURCE          cvtuserinput.cpp
 SOURCE          vtprotocolfactory.cpp
 
-DOCUMENT        ../../bld.inf
+DOCUMENT        ../../group/bld.inf
 
 USERINCLUDE     ../inc/
 
--- a/vtprotocols/inc/ch324confighandler.h	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtprotocols/inc/ch324confighandler.h	Wed Sep 01 12:29:12 2010 +0100
@@ -126,4 +126,4 @@
     };    
 #endif
 //  End of File
- 
+ 
\ No newline at end of file
--- a/vtprotocols/src/ch324confighandler.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtprotocols/src/ch324confighandler.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -168,7 +168,7 @@
 TInt CH324ConfigCommand::SendUserInputMessageL(MVTUserInput& user_input)
     {
     __IF_DEBUG(Print(_L("VTProto: CH324ConfigCommand::SendUserInputMessageL<")));	
-    if ( user_input.GetType() == EVtUiiDTMF )
+    if (user_input.GetType() == EVtUiiDTMF )
         {
         CVTUserInputDtmf* dtmf = static_cast<CVTUserInputDtmf*>(&user_input);
         return iH324Config->SendUserInputL(*dtmf->iUII);
--- a/vtprotocols/src/vtprotocolfactory.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ b/vtprotocols/src/vtprotocolfactory.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -177,7 +177,7 @@
 EXPORT_C MVTUserInput* VTProtocolFactory::CreateUserInputIndication(TUserInputType aUIIType, TUint8 aTone)
     {
     __IF_DEBUG(Print(_L("VTProto: VTProtocolFactory::CreateUserInputIndication")));	
-    if ( aUIIType == EVtUiiDTMF )
+    if (aUIIType == EVtUiiDTMF )
         {
         CVTUserInputDtmf* uii = CVTUserInputDtmf::NewL(aTone);
         return uii;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/group/bld.inf	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,25 @@
+/*
+* Copyright (c) 2004 - 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:  Build information for Vtuis subsystem.
+*
+*/
+
+
+PRJ_PLATFORMS
+DEFAULT
+
+// Include components' bld.inf files
+#include "../videotelui/group/bld.inf"
+
+//  End of File  
Binary file vtuis/lcvtapp/cenrep/keys_s60videotelephony.xls has changed
Binary file vtuis/lcvtapp/conf/CI_s60videotelephony.confml has changed
Binary file vtuis/lcvtapp/conf/s60videotelephony.confml has changed
Binary file vtuis/lcvtapp/conf/s60videotelephony_102072D0.crml has changed
Binary file vtuis/lcvtapp/conf/s60videotelephony_10281872.crml has changed
--- a/vtuis/lcvtapp/data/videotelui_stub.pkg	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +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:
-;
-; Languages
-&EN
-
-; Header
-#{"videotelui"}, (0x101F8681), 1, 0, 0, TYPE=SA
-
-; Localised Vendor name
-%{"Nokia"}
-
-; Unique Vendor name
-:"Nokia"
-
-;Files
-""-"z:\sys\bin\videotelui.exe"
-""-"z:\resource\apps\videotelui.rsc"
-""-"z:\private\10003a3f\import\apps\videotelui_reg.rsc"
\ No newline at end of file
Binary file vtuis/lcvtapp/data/videotelui_stub.sis has changed
--- a/vtuis/lcvtapp/inc/VideoTelephonyInternalCRKeys.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Video Telephony internal Central Repository keys
-*
-*/
-
-
-#ifndef VIDEOTELEPHONYINTERNALCRKEYS_H
-#define VIDEOTELEPHONYINTERNALCRKEYS_H
-
-#include <e32std.h>
-
-/**
-* Video Telephony Variation API
-* Keys under this category are used in defining video telephony variation.
-*/
-const TUid KCRUidVTVariation = {0x102072D0};
-
-/**
-* Video Telephony Local Variation Flags. Values are defined in 
-* VideoTelephonyVariant.hrh.
-*/
-const TUint32 KVTLocalVariationFlags = 0x00000001;
-
-/**
-* Video Telephony Configuration API
-* Keys under this category are used for configuring video call behaviour.
-* @since S60 3.1
-*/
-const TUid KCRUidVTConfiguration = {0x10281872};
-
-/**
-* This key controls minimum, normal and maximum frame rate for video encoder.
-* Integer values in the string are between 0 and 31 separated by space.
-* Example for key value is "5 10 5".
-*/
-const TUint32 KVTVideoFrameRates = 0x00000001;
-
-/**
-* Defines layout (screen orientation) used by Video Telephone application 
-* per active camera. Each camera has one of the following configurations:
-* 1) "LS" = Landscape
-* 2) "PR" = Portrait
-* 3) "OL" = Obey device layout (normal operation)
-* Camera values are:
-* 1) "C1" = VT primary camera (inwards)
-* 2) "C2" = VT secondary camera (outwards)
-*  Example value (portrait for cam1, landscape for cam2): C1:PR C2:LS
-*/
-const TUint32 KVTCameraLayout = 0x00000002;
-
-/**
-* Lists implementation UIDs for MPEG4, H.263 and H.264 encoders for video 
-* telephony in hexadecimal separated by space
-*/
-const TUint32 KVTVideoEncoderUIDs = 0x00000003;
-
-/**
-* Lists implementation UIDs for MPEG4, H.263 and H.264 decoders for video 
-* telephony in hexadecimal separated by space
-*/
-const TUint32 KVTVideoDecoderUIDs = 0x00000004;
-
-/**
-* Lists implementation UIDs for AMR-NB and future audio encoders for video
-* telephony (in hex, separated by space)
-*/
-const TUint32 KVTAudioEncoderUIDs = 0x00000005;
-
-/**
-* Lists implementation UIDs for AMR-NB and future audio decoders for video 
-* telephony (in hex, separated by space)
-*/
-const TUint32 KVTAudioDecoderUIDs = 0x00000006;
-                                               
-/**
-* Lists processing delay for MPEG4, H.263 and H.264 encoders for video 
-* telephony in unsigned 32-bit integers separated by space
-*/
-const TUint32 KVTVideoEncoderDelay = 0x00000007;
-
-/**
-* Lists processing delay for MPEG4, H.263 and H.264 decoders for video 
-* telephony in unsigned 32-bit integers separated by space
-*/
-const TUint32 KVTVideoDecoderDelay = 0x00000008;
-
-/**
-* Lists processing delay for AMR-NB and future audio encoders for video
-* telephony (in unsigned 32-bit integers, separated by space)
-*/
-const TUint32 KVTAudioEncoderDelay = 0x00000009;
-
-/**
-* Lists processing delay for AMR-NB and future audio decoders for video 
-* telephony (in unsigned 32-bit integers, separated by space)
-*/
-const TUint32 KVTAudioDecoderDelay = 0x0000000A;
-
-/*
-* Defines number of toolbar buttons. Three buttons is minimum
-* and seven is maximum.
-*/
-//const TUint32 KVTToolbarCommands  = 0x0000000B;
-
-#endif      // VIDEOTELEPHONYINTERNALCRKEYS_H
-
-// End of file
\ No newline at end of file
--- a/vtuis/lcvtapp/inc/VideoTelephonyVariant.hrh	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Bit flag definitions for VT local variation.
-*
-*/
-
-
-#ifndef VIDEOTELEPHONYVARIANT_HRH
-#define VIDEOTELEPHONYVARIANT_HRH
-
-
-/**
-* KVTLVFlagScalingMethodENearest defines whether the video image is
-* scaled using Nearest algorithm, which is fast, but quality is low.
-* When the flag is set ENearest is used.
-* @since S60 v2.8
-*/
-#define KVTLVFlagScalingMethodENearest 0x00000001
-
-/**
-* KVTLVFlagScalingMethodEBilinear defines whether the video image is
-* scaled using Bilinear algorithm, which offers the best quality, but in a
-* slow way. When the flag is set Bilinear is used.
-* @since S60 v2.8
-*/
-#define KVTLVFlagScalingMethodEBilinear 0x00000002
-
-/**
-* KVTLVFlagEnableBitReversal defines if bit order should be
-* reversed in PV.
-* When the flag is set bit order is reversed.
-*/
-#define KVTLVFlagEnableBitReversal 0x00000004
-
-/**
-* KVTLVFlagEnableAMR_WB defines if AMR wideband is supported in video calls.
-* @since S60 v5.0
-*/
-#define KVTLVFlagEnableAMR_WB 0x00000008
-
-/**
-* KVTLVFlagSupportMpeg4 defines whether the PV should support Mepg4.
-* @since S60 v5.0
-*/
-#define KVTLVFlagDisableMpeg4 0x00000010
-
-#endif // VIDEOTELEPHONYVARIANT_HRH
-
-// End of File
--- a/vtuis/lcvtapp/lcapplication.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-//USER
-#include "lcapplication.h"
-#include "cvtlogger.h"
-
-LcHbApplication* LcHbApplication::self = 0;
-
-// -----------------------------------------------------------------------------
-// LcHbApplication::LcHbApplication
-// -----------------------------------------------------------------------------
-//
-LcHbApplication::LcHbApplication(int &argc, char *argv[]) :
-    HbApplication(argc, argv)
-{    
-    __VTPRINT( DEBUG_GEN,  "LcHbApplication::LcHbApplication()");
-    self = this;
-}
-
-// -----------------------------------------------------------------------------
-// LcHbApplication::~LcHbApplication
-// -----------------------------------------------------------------------------
-//
-LcHbApplication::~LcHbApplication()
-{
-    self = 0;
-}
-
-// -----------------------------------------------------------------------------
-// LcHbApplication::quit
-// -----------------------------------------------------------------------------
-//
-void LcHbApplication::quit()
-{
-    __VTPRINT( DEBUG_GEN, "LcHbApplication::quit()");
-    if (self) {
-        emit self->handleQuit();
-    }
-}
-
-    
--- a/vtuis/lcvtapp/lcapplication.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#ifndef LCAPPLICATION_H
-#define LCAPPLICATION_H
-
-#include <hbapplication.h>
-
-class LcHbApplication : public HbApplication
-{
-Q_OBJECT
-public:
-    
-    LcHbApplication(int &argc, char *argv[]);
-    ~LcHbApplication();
-
-signals:
-    
-    void handleQuit();
-
-public slots:
-
-    //from QCoreApplication
-    static void quit();        
-
-private: //data
-    
-    static LcHbApplication* self;
-};
-
-#endif //LCAPPLICATION_H
--- a/vtuis/lcvtapp/lcvtapp.pro	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +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:                                                        
-#                                                                     
-#
-
-TEMPLATE = app
-TARGET = videotelui
-CONFIG += hb
-TRANSLATIONS = video_telephone.ts
-
-INCLUDEPATH += ../../inc
-# Input
-HEADERS += lcapplication.h
-SOURCES += lcapplication.cpp main.cpp
-
-symbian: {
-
-		:BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"
-		:BLD_INF_RULES.prj_exports += "./rom/videotelui.iby CORE_APP_LAYER_IBY_EXPORT_PATH(videotelui.iby)"
-		:BLD_INF_RULES.prj_exports += "./rom/videoteluiResources.iby LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(videoteluiResources.iby)"		
-		:BLD_INF_RULES.prj_exports += "./conf/s60videotelephony.confml APP_LAYER_CONFML(s60videotelephony.confml)"
-		:BLD_INF_RULES.prj_exports += "./conf/CI_s60videotelephony.confml APP_LAYER_CONFML(CI_s60videotelephony.confml)"
-		:BLD_INF_RULES.prj_exports += "./conf/s60videotelephony_102072D0.crml APP_LAYER_CRML(s60videotelephony_102072D0.crml)"
-		:BLD_INF_RULES.prj_exports += "./conf/s60videotelephony_10281872.crml APP_LAYER_CRML(s60videotelephony_10281872.crml)"
-		:BLD_INF_RULES.prj_exports += "./inc/VideoTelephonyVariant.hrh  |../../inc/videotelephonyvariant.hrh"
-		:BLD_INF_RULES.prj_exports += "./inc/VideoTelephonyInternalCRKeys.h  |../../inc/videotelephonyinternalcrkeys.h"
-		:BLD_INF_RULES.prj_exports += "./data/videotelui_stub.sis /epoc32/data/z/system/install/videotelui_stub.sis"		
-		
-    TARGET.UID2 = 0x100039CE
-    TARGET.UID3 = 0x101F8681
-    TARGET.VID = 0x101FB657
-    TARGET.CAPABILITY = CAP_APPLICATION NetworkControl SwEvent Location MultimediaDD CommDD
-    LIBS += -llivecommsui -lvtlogger -lapgrfx -lcone
-    RSS_RULES += "hidden = KAppIsHidden;"
-}
--- a/vtuis/lcvtapp/main.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-//SYSTEM
-#include <lcviewmanager.h>
-#include <QLocale>
-#include <QTranslator>
-#include <eikenv.h>
-#include <apgwgnam.h>
-
-//USER
-#include "cvtlogger.h"
-#include "lcapplication.h"
-
-
-int main(int argc, char *argv[])
-{
-    LcHbApplication app(argc, argv);    
-    CVtLogger::Initialize(); // Cannot do before app creation as activescheduler is installed at that stage
-    __VTPRINT2(CVtLogger::ELogToFile, "videotelui.exe::main entered: argc=%d ",argc);
-    if (argc > 0)
-    {
-        QString arg1Str(QString::fromUtf8(argv[0]));
-        TPtrC arg1(arg1Str.utf16());
-        CVtLogger::Print(CVtLogger::ELogToFile,arg1);
-    }  
-       
-    //Load application-specific translator
-    QString lang = QLocale::system().name();
-    QString path = "z:/resource/qt/translations/";
-    QTranslator translator;
-    if ( translator.load( path + "video_telephone_" + lang + ".qm") ){
-        app.installTranslator(&translator);
-    } else {
-        __VTPRINT( DEBUG_GEN, "videotelui.exe::main, couldn't load translation" );
-    }
-    
-    // Temporarily set VT as system app as otherwise GOOM memory releasing will shut
-    // down the process when running low on graphics mem.
-    CApaWindowGroupName* wgName = CApaWindowGroupName::NewLC(CEikonEnv::Static()->WsSession());
-    wgName->SetSystem(ETrue); // Allow only application with PowerManagement cap to shut us down
-    wgName->SetCaptionL(_L("Videotelephony"));
-    wgName->SetAppUid(TUid::Uid(0x101F8681));
-    wgName->SetWindowGroupName(CEikonEnv::Static()->RootWin());
-    CleanupStack::PopAndDestroy();
-    
-    QString engineName("Videotelephony");
-    QString applicationName("Video Telephone");
-    
-    LcViewManager viewManager(engineName,applicationName);
- 
-    QObject::connect( &app, SIGNAL( handleQuit() ), 
-             &viewManager, SLOT( terminateSession() ),
-             Qt::QueuedConnection );
-
-    int err = app.exec();
-    __VTPRINT2(CVtLogger::ELogToFile, "videotelui.exe::main returns %d ",err);
-    CVtLogger::Uninitialize();
-    return err;
-}
--- a/vtuis/lcvtapp/rom/videotelui.iby	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  IBY file
- *
-*/
-
-
-#ifndef __VIDEOTELUI_IBY__
-#define __VIDEOTELUI_IBY__
-
-REM Video Telephone application
-
-#ifdef __CS_VIDEO_TELEPHONY
-
-file=ABI_DIR\urel\videotelui.exe          				 PROGRAMS_DIR\videotelui.exe
-data=DATAZ_\private\10003a3f\import\apps\videotelui_reg.rsc \private\10003a3f\import\apps\videotelui_reg.rsc
-
-// Enabler for eclipsing ROM binaries
-data=ZSYSTEM\install\videotelui_stub.sis           system\install\videotelui_stub.sis
-
-#endif // __CS_VIDEO_TELEPHONY
-#endif
--- a/vtuis/lcvtapp/rom/videoteluiResources.iby	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  IBY file
- *
-*/
-
-
-#ifndef __VIDEOTELUI_RESOURCES_IBY__
-#define __VIDEOTELUI_RESOURCES_IBY__
-
-#include <data_caging_paths_for_iby.hrh> 
-
-#ifdef __CS_VIDEO_TELEPHONY
-data=DATAZ_\APP_RESOURCE_DIR\videotelui.rsc                             APP_RESOURCE_DIR\videotelui.rsc
-data=DATAZ_\QT_TRANSLATIONS_DIR\video_telephone.qm QT_TRANSLATIONS_DIR\video_telephone.qm
-#endif // __CS_VIDEO_TELEPHONY
-
-#endif
\ No newline at end of file
--- a/vtuis/lcvtindicatorcontroller/bwins/lcvtindicatorcontrolleru.def	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-EXPORTS
-	?disableActiveCallIndicator@LcVtIndicatorController@@QAEXXZ @ 1 NONAME ; void LcVtIndicatorController::disableActiveCallIndicator(void)
-	?enableActiveCallIndicator@LcVtIndicatorController@@QAEXXZ @ 2 NONAME ; void LcVtIndicatorController::enableActiveCallIndicator(void)
-	??1LcVtIndicatorController@@UAE@XZ @ 3 NONAME ; LcVtIndicatorController::~LcVtIndicatorController(void)
-	??0LcVtIndicatorController@@QAE@XZ @ 4 NONAME ; LcVtIndicatorController::LcVtIndicatorController(void)
-
--- a/vtuis/lcvtindicatorcontroller/data/lcvtindicatorcontroller_stub.pkg	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +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:
-;
-; Languages
-&EN
-
-; Header
-#{"lcvtindicatorcontroller"}, (0x200315EC), 1, 0, 0, TYPE=SA
-
-; Localised Vendor name
-%{"Nokia"}
-
-; Unique Vendor name
-:"Nokia"
-
-;Files
-""-"z:\sys\bin\lcvtindicatorcontroller.dll"
-
Binary file vtuis/lcvtindicatorcontroller/data/lcvtindicatorcontroller_stub.sis has changed
--- a/vtuis/lcvtindicatorcontroller/eabi/lcvtindicatorcontrolleru.def	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-EXPORTS
-	_ZN23LcVtIndicatorController25enableActiveCallIndicatorEv @ 1 NONAME
-	_ZN23LcVtIndicatorController26disableActiveCallIndicatorEv @ 2 NONAME
-	_ZN23LcVtIndicatorControllerC1Ev @ 3 NONAME
-	_ZN23LcVtIndicatorControllerC2Ev @ 4 NONAME
-	_ZN23LcVtIndicatorControllerD0Ev @ 5 NONAME
-	_ZN23LcVtIndicatorControllerD1Ev @ 6 NONAME
-	_ZN23LcVtIndicatorControllerD2Ev @ 7 NONAME
-
--- a/vtuis/lcvtindicatorcontroller/inc/lcvtindicatorcontroller.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*!
-* 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 LCVTINDICATORCONTROLLER_H_
-#define LCVTINDICATORCONTROLLER_H_
-
-// FORWARD DECLARATION
-
-class LcVtIndicatorControllerImpl;
-
-class LcVtIndicatorController
-    {
-public:
-    IMPORT_C explicit LcVtIndicatorController();
-    IMPORT_C virtual ~LcVtIndicatorController();
-
-    IMPORT_C void enableActiveCallIndicator();
-    IMPORT_C void disableActiveCallIndicator();
-    
-private:
-    LcVtIndicatorControllerImpl* mIndicatorimpl;
-    
-    friend class UT_LcVtIndicatorController;
-    };
-
-#endif /* LCVTINDICATORCONTROLLER_H_ */
--- a/vtuis/lcvtindicatorcontroller/inc/lcvtindicatorcontrollerimpl.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*!
-* 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 LCVTINDICATORCONTROLLERIMPL_H_
-#define LCVTINDICATORCONTROLLERIMPL_H_
-
-// FORWARD DECLARATION
-class HbIndicator;
-
-class LcVtIndicatorControllerImpl
-    {
-public:
-    explicit LcVtIndicatorControllerImpl();
-    virtual ~LcVtIndicatorControllerImpl();
-    
-    void enableActiveCallIndicator();
-    void disableActiveCallIndicator();
-    
-private:
-    HbIndicator* mIndicator;
-    friend class UT_LcVtIndicatorController;
-    };
-
-
-
-#endif /* LCVTINDICATORCONTROLLERIMPL_H_ */
--- a/vtuis/lcvtindicatorcontroller/lcvtindicatorcontroller.pri	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +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: 
-#
-
-HEADERS += ./inc/lcvtindicatorcontroller.h
-HEADERS += ./inc/lcvtindicatorcontrollerimpl.h
-
-SOURCES += ./src/lcvtindicatorcontroller.cpp
-SOURCES += ./src/lcvtindicatorcontrollerimpl.cpp
--- a/vtuis/lcvtindicatorcontroller/lcvtindicatorcontroller.pro	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +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:
-
-TEMPLATE = lib
-TARGET = lcvtindicatorcontroller
-CONFIG += hb dll svg
-    
-QT += core
-    
-INCLUDEPATH += ./inc
-INCLUDEPATH += ../../inc
-INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
-
-DEFINES += LCVTINDICATORCONTROLLER_LIB
-
-libFiles.sources = lcvtindicatorcontroller.dll
-libFiles.path = "!:/sys/bin"
-DEPLOYMENT += libFiles
-
-symbian: {
-    TARGET.UID2 = 0x1000008d
-    TARGET.UID3 = 0x200315EC
-
-    TARGET.CAPABILITY = CAP_GENERAL_DLL
-    TARGET.EPOCALLOWDLLDATA = 1
-    LIBS += -lflogger -lxqplugins -lxqservice -lxqserviceutil
-    defFiles = "$${LITERAL_HASH}ifdef WINS" \
-        "DEFFILE bwins/lcvtindicatorcontroller.def" \
-        "$${LITERAL_HASH}else" \
-        "DEFFILE eabi/lcvtindicatorcontroller.def" \
-        "$${LITERAL_HASH}endif"
-    MMP_RULES += defFiles
-    :BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"               
-    :BLD_INF_RULES.prj_exports += "rom/lcvtindctr.iby CORE_APP_LAYER_IBY_EXPORT_PATH(lcvtindctr.iby)"
-}
-# Input
-include(lcvtindicatorcontroller.pri)
\ No newline at end of file
--- a/vtuis/lcvtindicatorcontroller/rom/lcvtindctr.iby	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  IBY file
- *
-*/
-
- 
-#ifndef __LCVTINDCTR_IBY__
-#define __LCVTINDCTR_IBY__
-
-
-//#ifdef __CS_VIDEO_TELEPHONY
-
-file=ABI_DIR\UREL\lcvtindicatorcontroller.dll SHARED_LIB_DIR\lcvtindicatorcontroller.dll
-
-// Enabler for eclipsing ROM binaries
-data=ZSYSTEM\install\lcvtindicatorcontroller_stub.sis           system\install\lcvtindicatorcontroller_stub.sis
-
-#endif
-
-
--- a/vtuis/lcvtindicatorcontroller/src/lcvtindicatorcontroller.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*!
-* 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 <qglobal.h>
-
-#include "lcvtindicatorcontroller.h"
-#include "lcvtindicatorcontrollerimpl.h"
-
-    
-EXPORT_C LcVtIndicatorController::LcVtIndicatorController()
-{
-    mIndicatorimpl = new LcVtIndicatorControllerImpl();
-}
-
-EXPORT_C LcVtIndicatorController::~LcVtIndicatorController()
-{
-    delete mIndicatorimpl;
-}
-
-
-EXPORT_C void LcVtIndicatorController::enableActiveCallIndicator()
-{
-    mIndicatorimpl->enableActiveCallIndicator();
-}
-
-EXPORT_C void LcVtIndicatorController::disableActiveCallIndicator()
-{
-    mIndicatorimpl->disableActiveCallIndicator();
- 
-}
-
-// End of file
-
--- a/vtuis/lcvtindicatorcontroller/src/lcvtindicatorcontrollerimpl.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*!
-* 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 <QList>
-#include <QPair>
-#include <qglobal.h>
-#include <hbindicator.h>
-#include <hbindicatorinterface.h>
-#ifdef Q_OS_SYMBIAN
-#include <hbicon.h>
-#endif
-#include "lcvtindicatorcontrollerimpl.h"
-#include <QDebug>
-
-const static QString lcVtIndicator = "com.nokia.hb.indicator.lcvtindicatorplugin/1.0";
-
-
-LcVtIndicatorControllerImpl::LcVtIndicatorControllerImpl()
-{
-    qDebug() << "LcVtIndicatorControllerImpl::LcVtIndicatorControllerImpl()";
-    mIndicator = new HbIndicator();
-}
-
-LcVtIndicatorControllerImpl::~LcVtIndicatorControllerImpl()
-{   
-    qDebug() << "LcVtIndicatorControllerImpl::~LcVtIndicatorControllerImpl()";
-    delete mIndicator;
-}
-
-void LcVtIndicatorControllerImpl::enableActiveCallIndicator()
-{
-    qDebug() << "LcVtIndicatorControllerImpl::enableActiveCallIndicator()";
-    QString indicatorType(lcVtIndicator);
-    QVariantMap parameters;
-    
-    //indicator text
-    parameters.insert(
-            QVariant(HbIndicatorInterface::PrimaryTextRole).toString(),
-            hbTrId("txt_vt_dblist_ongoing_video_call"));
-    
-    //status bar icon
-    parameters.insert(
-            QVariant(HbIndicatorInterface::MonoDecorationNameRole).toString(),
-            QString("qtg_mono_call"));
-    
-    //indicator icon
-    parameters.insert(QVariant(HbIndicatorInterface::DecorationNameRole).toString(),
-            QString("qtg_mono_call"));
-    
-    mIndicator->activate(indicatorType, parameters);
-    qDebug() << "LcVtIndicatorControllerImpl::enableActiveCallIndicator(), exit";
-}
-
-void LcVtIndicatorControllerImpl::disableActiveCallIndicator()
-{
-    qDebug() << "LcVtIndicatorControllerImpl::disableActiveCallIndicator()";
-    QString indicatorType(lcVtIndicator);
-    mIndicator->deactivate(indicatorType);
-}
-
-// End of file
-
--- a/vtuis/lcvtindicatorplugin/data/lcvtindicatorplugin_stub.pkg	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +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:
-;
-; Languages
-&EN
-
-; Header
-#{"lcvtindicatorplugin"}, (0x200315EB), 1, 0, 0, TYPE=SA
-
-; Localised Vendor name
-%{"Nokia"}
-
-; Unique Vendor name
-:"Nokia"
-
-;Files
-""-"z:\sys\bin\lcvtindicatorplugin.dll"
-""-"z:\resource\plugins\indicators\lcvtindicatorplugin.qtplugin"
Binary file vtuis/lcvtindicatorplugin/data/lcvtindicatorplugin_stub.sis has changed
--- a/vtuis/lcvtindicatorplugin/inc/lcvtindicatorplugin.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- * 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 LCVTINDICATORPLUGIN_H
-#define LCVTINDICATORPLUGIN_H
-
-#include <hbindicatorplugininterface.h>
-#include <hbindicatorinterface.h>
-
-class LcVtIndicatorPlugin : public HbIndicatorInterface, public HbIndicatorPluginInterface
-{
-Q_OBJECT
-Q_INTERFACES(HbIndicatorPluginInterface)
-public:
-
-    LcVtIndicatorPlugin();
-    ~LcVtIndicatorPlugin();
-
-public: //from HbIndicatorPluginInterface    
-    QStringList indicatorTypes() const;
-    bool accessAllowed(const QString &indicatorType,
-                       const QVariantMap &securityInfo) const;
-    HbIndicatorInterface* createIndicator(const QString &indicatorType);
-    int error() const;
-    
-public: //from HbIndicatorInterface
-    bool handleInteraction(InteractionType type);
-    QVariant indicatorData(int role) const;
-
-
-protected: //from HbIndicatorInterface
-    bool handleClientRequest(RequestType type, const QVariant &parameter);
-    
-    
-private:
-    
-    bool bringVtToForeground();
-    
-private:
-    Q_DISABLE_COPY(LcVtIndicatorPlugin)
-    int mError;
-    QStringList mIndicatorTypes;
-    QVariant mParameter;
-    
-    friend class UT_LcVtIndicatorPlugin;
-};
-
-#endif // LCVTINDICATORPLUGIN_H
--- a/vtuis/lcvtindicatorplugin/lcvtindicatorplugin.pro	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-#
-# 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
-CONFIG += plugin hb
-
-# directories
-INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
-INCLUDEPATH += ./inc
-
-# Input
-HEADERS += inc/lcvtindicatorplugin.h
-SOURCES += src/lcvtindicatorplugin.cpp
-
-symbian: {
-    TARGET.EPOCALLOWDLLDATA = 1
-    TARGET.UID3 = 0x200315EB
-    TARGET.CAPABILITY = CAP_GENERAL_DLL
-    LIBS += -lxqservice
-
-    :BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include <platform_paths.hrh>"
-    :BLD_INF_RULES.prj_exports += "rom/lcvtindicatorplugin.iby CORE_APP_LAYER_IBY_EXPORT_PATH(lcvtindicatorplugin.iby)"
-    
-    pluginstub.sources = lcvtindicatorplugin.dll
-    pluginstub.path = /resource/plugins/indicators
-    DEPLOYMENT += pluginstub
-}
--- a/vtuis/lcvtindicatorplugin/rom/lcvtindicatorplugin.iby	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
-* 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 __LCVTINDICATORPLUGIN_IBY__
-#define __LCVTINDICATORPLUGIN_IBY__
- 
-#include <data_caging_paths_for_iby.hrh>
-
-file=ABI_DIR\UREL\lcvtindicatorplugin.dll               SHARED_LIB_DIR\lcvtindicatorplugin.dll 
-data=\epoc32\data\z\resource\plugins\indicators\lcvtindicatorplugin.qtplugin   RESOURCE_FILES_DIR\plugins\indicators\lcvtindicatorplugin.qtplugin
-
-// Enabler for eclipsing ROM binaries
-data=ZSYSTEM\install\lcvtindicatorplugin_stub.sis           system\install\lcvtindicatorplugin_stub.sis
-
-#endif
--- a/vtuis/lcvtindicatorplugin/src/lcvtindicatorplugin.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-/*
- * 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 <QDebug>
-#include <QProcess>
-
-#include "lcvtindicatorplugin.h"
-
-const static QString IndicatorType = "com.nokia.hb.indicator.lcvtindicatorplugin/1.0";
-
-Q_EXPORT_PLUGIN(LcVtIndicatorPlugin)
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-LcVtIndicatorPlugin::LcVtIndicatorPlugin(): 
-    HbIndicatorInterface(IndicatorType, NotificationCategory, InteractionActivated),
-    mError(0)
-{
-    qDebug() << "LcVtIndicatorPlugin::LcVtIndicatorPlugin()";
-    mIndicatorTypes << IndicatorType;    
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-LcVtIndicatorPlugin::~LcVtIndicatorPlugin()
-{    
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-QStringList LcVtIndicatorPlugin::indicatorTypes() const
-{
-    qDebug() << "LcVtIndicatorPlugin::indicatorTypes()";
-    return mIndicatorTypes;
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-bool LcVtIndicatorPlugin::accessAllowed(const QString &indicatorType,
-        const QVariantMap &securityInfo) const
-{
-    Q_UNUSED(indicatorType);
-    Q_UNUSED(securityInfo);
-    qDebug() << "LcVtIndicatorPlugin::accessAllowed()";
-    return true;
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-HbIndicatorInterface* LcVtIndicatorPlugin::createIndicator(
-        const QString &indicatorType)
-{
-    Q_UNUSED(indicatorType);
-    return this;
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-int LcVtIndicatorPlugin::error() const
-{
-    return mError;
-}
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-bool LcVtIndicatorPlugin::handleInteraction(InteractionType type)
-{
-    qDebug() << "LcVtIndicatorPlugin::handleInteraction()";
-    bool handled = false;
-    if (type == InteractionActivated) {
-        handled = bringVtToForeground();        
-        if (!handled) {
-            qDebug() << "couldn't bring VT to FG, deactivating indicator!";
-            emit deactivate(); 
-        }
-    }
-    qDebug() << "LcVtIndicatorPlugin::handleInteraction(), exit";
-    return handled;
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-QVariant LcVtIndicatorPlugin::indicatorData(int role) const
-{
-    qDebug() << "LcVtIndicatorInterface::indicatorData()";
-    QVariantMap map = mParameter.value<QVariantMap>();
-    
-    if (role == PrimaryTextRole) {
-        return map.value( (QVariant(PrimaryTextRole)).toString()).toString();
-    } else if (role == MonoDecorationNameRole) { //status bar icon
-        return  map.value((QVariant(MonoDecorationNameRole)).toString()).toString();
-    } else if (role == DecorationNameRole) {
-        return map.value( (QVariant(DecorationNameRole)).toString()).toString();
-    }
-    return QVariant();
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-bool LcVtIndicatorPlugin::handleClientRequest(RequestType type, const QVariant &parameter)
-{
-    qDebug() << "LcVtIndicatorPlugin::handleClientRequest()";
-    bool handled(false);
-    switch (type) {
-        case RequestActivate:
-            if (mParameter != parameter) {
-                mParameter = parameter;
-                emit dataChanged();
-            }
-            handled =  true;
-            break;
-        default:
-            mParameter.clear();
-    }
-    qDebug() << "LcVtIndicatorPlugin::handleClientRequest(), exit";
-
-    return handled;
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-bool LcVtIndicatorPlugin::bringVtToForeground()
-{
-    qDebug() << "LcVtIndicatorPlugin::bringVtToForeground()";
-    const QString AppName = "videotelui.exe";
-    return QProcess::startDetached(AppName);
-}
-
--- a/vtuis/lcvtindicatorplugin/tsrc/qtestutils/inc/testresultxmlparser.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +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 TESTRESULTXMLPARSER_H
-#define TESTRESULTXMLPARSER_H
-
-#include <QXmlDefaultHandler>
-
-
-class TestResultXmlParser : public QXmlDefaultHandler
-{
-public: // Constructors and destructor
-    TestResultXmlParser();
-    ~TestResultXmlParser();    
-    
-public: // From QXmlContentHandler 
-    bool startElement(
-        const QString& namespaceURI,
-        const QString& localName,
-        const QString& qName,
-        const QXmlAttributes& atts);
-    
-    bool endElement(
-        const QString& namespaceURI,
-        const QString& localName,
-        const QString& qName);
-    
-    bool characters(const QString& ch);
-       
-public: // New functions
-    
-    int parse(const QString& fileName);
-    
-    int parseAndPrintResults(
-        const QString& fileName,
-        bool printDetails=false);
-    
-    int testCount();
-    
-    QStringList errors();
-    
-private: // Data
-    int mTestCount;
-    QStringList* mErrors;
-    bool mParsingIncidentElement;
-    bool mParsingDescriptionElement;
-    bool mCurrentTestFailed;
-    QString mCurrentTestName;
-    QString mCurrentTestFile;
-    int mCurrentTestFailureLine;
-};
-
-
-#endif // TESTRESULTXMLPARSER_H
--- a/vtuis/lcvtindicatorplugin/tsrc/qtestutils/src/testresultxmlparser.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +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 "testresultxmlparser.h" 
-#include <stdio.h>
-
-const char testFunctionElement[] = "TestFunction";
-const char incidentElement[] = "Incident";
-const char descriptionElement[] = "Description";
-const char nameAttr[] = "name";
-const char typeAttr[] = "type";
-const char fileAttr[] = "file";
-const char lineAttr[] = "line";
-const char attrValueFail[] = "fail";
-
-
-// -----------------------------------------------------------------------------
-// TestResultXmlParser::TestResultXmlParser
-// -----------------------------------------------------------------------------
-//
-TestResultXmlParser::TestResultXmlParser() 
-: mTestCount(0), 
-  mParsingIncidentElement(false),
-  mParsingDescriptionElement(false),
-  mCurrentTestFailed(false),
-  mCurrentTestFailureLine(0)
-{
-    mErrors = new QStringList;
-}
-
-// -----------------------------------------------------------------------------
-// TestResultXmlParser::TestResultXmlParser
-// -----------------------------------------------------------------------------
-//
-TestResultXmlParser::~TestResultXmlParser()
-{
-    delete mErrors;   
-}
-
-// -----------------------------------------------------------------------------
-// TestResultXmlParser::startElement
-// -----------------------------------------------------------------------------
-//
-bool TestResultXmlParser::startElement(
-    const QString& /*namespaceURI*/, 
-    const QString& /*localName*/, 
-    const QString& qName, 
-    const QXmlAttributes& atts)
-{
-    if (qName == testFunctionElement) {
-        mTestCount++;
-        mCurrentTestName = atts.value(nameAttr);
-        return true;
-    }
-    if (qName == incidentElement) {
-        mParsingIncidentElement = true;
-        if (atts.value(typeAttr) == attrValueFail) {
-            mCurrentTestFailed = true;
-            mCurrentTestFile = atts.value(fileAttr);
-            mCurrentTestFailureLine = atts.value(lineAttr).toInt();
-        }
-        return true;
-    }
-    mParsingDescriptionElement = (qName == descriptionElement);
-    return true;
-}
-
-// -----------------------------------------------------------------------------
-// TestResultXmlParser::endElement
-// -----------------------------------------------------------------------------
-//
-bool TestResultXmlParser::endElement(
-    const QString& /*namespaceURI*/,
-    const QString& /*localName*/,
-    const QString& qName)
-{
-    if (qName == incidentElement) {
-        mParsingIncidentElement = false;
-        mCurrentTestFailed = false;
-        return true;
-    }
-    if (qName == descriptionElement) {
-        mParsingDescriptionElement = false;
-    }    
-    return true;
-}
-
-// -----------------------------------------------------------------------------
-// TestResultXmlParser::characters
-// -----------------------------------------------------------------------------
-//
-bool TestResultXmlParser::characters(const QString& ch)
-{
-    if (mParsingIncidentElement && 
-        mParsingDescriptionElement &&
-        mCurrentTestFailed) {
-        QString testResult = mCurrentTestName + " failed:\n";
-        testResult += "File: ";
-        testResult += mCurrentTestFile;
-        testResult += "\n";
-        testResult += "Line: ";
-        testResult += QString::number(mCurrentTestFailureLine);
-        testResult += "\n";
-        testResult += "Reason: ";
-        testResult += ch;
-        testResult += "\n";
-        mErrors->append(testResult);
-    }
-    return true;
-}
-
-// -----------------------------------------------------------------------------
-// TestResultXmlParser::parse
-// -----------------------------------------------------------------------------
-//
-int TestResultXmlParser::parse(const QString& fileName)
-{
-    QFile file(fileName);
-    QXmlInputSource inputSource(&file);
-    QXmlSimpleReader reader;
-    reader.setContentHandler(this);
-    return reader.parse(inputSource);
-}
-
-// -----------------------------------------------------------------------------
-// TestResultXmlParser::parseAndPrintResults
-// -----------------------------------------------------------------------------
-//
-int TestResultXmlParser::parseAndPrintResults(
-    const QString& fileName,
-    bool printDetails)
-{
-    printf("Parsing: %s\n", fileName.toUtf8().data());
-    int error = parse(fileName);
-    printf("%d tests executed. Failed total: %d\n", mTestCount, mErrors->count());
-    if (printDetails) {
-        printf("\n");
-        foreach(QString error, *mErrors) {
-            printf(error.toUtf8().data());
-            printf("\n");
-        }
-    }
-    return error;
-}
-
-// -----------------------------------------------------------------------------
-// TestResultXmlParser::testCount
-// -----------------------------------------------------------------------------
-//
-int TestResultXmlParser::testCount()
-{
-    return mTestCount;
-}
-
-// -----------------------------------------------------------------------------
-// TestResultXmlParser::errors
-// -----------------------------------------------------------------------------
-//
-QStringList TestResultXmlParser::errors()
-{
-    return *mErrors;
-}
-
-// End of File.
--- a/vtuis/lcvtindicatorplugin/tsrc/ut_lcvtindicatorplugin/inc/ut_lcvtindicatorplugin.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +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 UT_LCVTINDICATORPLUGIN_H
-#define UT_LCVTINDICATORPLUGIN_H
-
-#include <QObject>
-#include <QList>
-
-class LcVtIndicatorPlugin;
-
-class UT_LcVtIndicatorPlugin : public QObject               
-{
-     Q_OBJECT
-    
-private slots:
-
-/*
- * In addition, there are four private slots that are not treated as testfunctions. 
- * They will be executed by the testing framework and can be used to initialize and clean up 
- * either the entire test or the current test function.
- * 
- * initTestCase() will be called before the first testfunction is executed.
- * cleanupTestCase() will be called after the last testfunction was executed.
- * init() will be called before each testfunction is executed.
- * cleanup() will be called after every testfunction.
-*/
-    void initTestCase();
-    void cleanupTestCase();
-    void init();
-    void cleanup();
-
-private slots: //test methods
-     
-    void testLcVtIndicatorPlugin();
-    void testIndicatorTypes();
-    void testAccessAllowed();
-    void testCreateIndicator();
-    void testError();
-    void testHandleInteraction();
-    void testIndicatorData();
-    void testHandleClientRequest();
-    void testBringVtToForeground();
-    
-private:
- 
-    LcVtIndicatorPlugin* mLcVtIndicatorPlugin; 
-
-};
-
-
-#endif //UT_LCVTINDICATORPLUGIN_H
--- a/vtuis/lcvtindicatorplugin/tsrc/ut_lcvtindicatorplugin/src/main.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +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 <QtTest/QtTest>
-
-#include "ut_lcvtindicatorplugin.h"
-#include "testresultxmlparser.h"
-
-int main(int argc, char *argv[]) 
-{
-    bool promptOnExit(true);
-    for (int i=0; i<argc; i++) {
-        if (QString(argv[i]) == "-noprompt")
-            promptOnExit = false;
-    }
-    printf("Running tests...\n");
-    
-    QApplication app(argc, argv);
-    TestResultXmlParser parser;
-
-    UT_LcVtIndicatorPlugin ut_lcvtindicatorplugin;
-    QString resultFileName = "c:/ut_logs_ut_lcvtindicatorplugin.xml";
-    QStringList args_ut_lcvtindicatorplugin( "ut_ut_lcvtindicatorplugin");
-    args_ut_lcvtindicatorplugin << "-xml" << "-o" << resultFileName;
-    QTest::qExec(&ut_lcvtindicatorplugin, args_ut_lcvtindicatorplugin);
-    parser.parseAndPrintResults(resultFileName,true); 
-
-
-    if (promptOnExit) {
-        printf("Press any key...\n");
-        getchar(); 
-    }
-    return 0;   
-}
-
-
-
- 
--- a/vtuis/lcvtindicatorplugin/tsrc/ut_lcvtindicatorplugin/src/ut_lcvtindicatorplugin.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,170 +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 "ut_lcvtindicatorplugin.h"
-#include "lcvtindicatorplugin.h"
-#include "qprocess.h"
-
-#include <QtTest/QtTest>
-
-const static QString lcVtIndicator = "com.nokia.hb.indicator.lcvtindicatorplugin/1.0";
-
-
-void UT_LcVtIndicatorPlugin::initTestCase()
-{
-
-}
-
-void UT_LcVtIndicatorPlugin::cleanupTestCase()
-{
-}
-
-void UT_LcVtIndicatorPlugin::init()
-{
-    mLcVtIndicatorPlugin = new LcVtIndicatorPlugin();
-}
-
-void UT_LcVtIndicatorPlugin::cleanup()
-{
-    delete mLcVtIndicatorPlugin;
-    mLcVtIndicatorPlugin = 0;
-}
-
-void UT_LcVtIndicatorPlugin::testLcVtIndicatorPlugin()
-{
-    QVERIFY( mLcVtIndicatorPlugin );
-}
-
-void UT_LcVtIndicatorPlugin::testIndicatorTypes()
-{
-	QCOMPARE(mLcVtIndicatorPlugin->indicatorTypes()[0], lcVtIndicator);
-}
-
-void  UT_LcVtIndicatorPlugin::testAccessAllowed()
-{
-	QVERIFY( mLcVtIndicatorPlugin->accessAllowed(QString(), QVariantMap()) );
-}
-
-void UT_LcVtIndicatorPlugin::testCreateIndicator()
-{
-	mLcVtIndicatorPlugin->createIndicator(lcVtIndicator);
-}
-
-void UT_LcVtIndicatorPlugin::testError()
-{
-    QVERIFY( !mLcVtIndicatorPlugin->error() );
-}
-
-
-void UT_LcVtIndicatorPlugin::testHandleInteraction()
-{
-    QSignalSpy spy(mLcVtIndicatorPlugin, SIGNAL(deactivate()));
-
-    //No interation requered
-    QVERIFY( !mLcVtIndicatorPlugin->handleInteraction(
-                 HbIndicatorInterface::NoInteraction) );
-    QCOMPARE( spy.count(), 0 );
-    
-    //Indicator activated, no VT running => deactivating    
-    QVERIFY( !mLcVtIndicatorPlugin->handleInteraction(
-                     HbIndicatorInterface::InteractionActivated) );
-    QCOMPARE( spy.count(), 1 );
-    
-    //Indicator activated, VT running => bringing to FG    
-    spy.clear();
-    QVERIFY( mLcVtIndicatorPlugin->bringVtToForeground() );    
-    QVERIFY( QProcess::isRunning );    
-    QCOMPARE( spy.count(), 0 );   
-}
-
-void UT_LcVtIndicatorPlugin::testIndicatorData()
-{
-    //No params defined
-    QVERIFY( mLcVtIndicatorPlugin->indicatorData(
-                  HbIndicatorInterface::DecorationNameRole) == QVariant(QString()) );
-    QVERIFY( mLcVtIndicatorPlugin->indicatorData(
-                  HbIndicatorInterface::MonoDecorationNameRole) == QVariant(QString()) );
-    QVERIFY( mLcVtIndicatorPlugin->indicatorData(
-                  HbIndicatorInterface::PrimaryTextRole) == QVariant(QString()) );
-    QVERIFY( mLcVtIndicatorPlugin->indicatorData(
-                  HbIndicatorInterface::SecondaryTextRole) == QVariant() );
-    //Non-existing param role
-    QVERIFY( mLcVtIndicatorPlugin->indicatorData(999) == QVariant() );
-    
-    //Parameters defined
-    QVariantMap parameters;
-    parameters.insert(
-                QVariant(HbIndicatorInterface::DecorationNameRole).toString(),
-                QVariant("decoration") );
-    parameters.insert(
-                QVariant(HbIndicatorInterface::MonoDecorationNameRole).toString(),
-                QVariant("mono_decoration") );
-    parameters.insert(
-                QVariant(HbIndicatorInterface::PrimaryTextRole ).toString(),
-                QVariant("primary_text") );
-    parameters.insert(
-                QVariant(HbIndicatorInterface::SecondaryTextRole ).toString(),
-                QVariant("secondary_text") );
-    
-    mLcVtIndicatorPlugin->mParameter = parameters;
-    
-    QVERIFY( mLcVtIndicatorPlugin->indicatorData(
-                                  HbIndicatorInterface::DecorationNameRole)
-              == QVariant("decoration") );
-    QVERIFY( mLcVtIndicatorPlugin->indicatorData(
-                                  HbIndicatorInterface::MonoDecorationNameRole)
-              == QVariant("mono_decoration") );
-    QVERIFY( mLcVtIndicatorPlugin->indicatorData(
-                                  HbIndicatorInterface::PrimaryTextRole) 
-              == QVariant("primary_text") );
-    QVERIFY( mLcVtIndicatorPlugin->indicatorData(
-                                  HbIndicatorInterface::SecondaryTextRole)
-              == QVariant() );
-}
-
-void UT_LcVtIndicatorPlugin::testHandleClientRequest()
-{
-    QVariantMap parameters;
-    parameters.insert("key", QVariant("value"));
-    mLcVtIndicatorPlugin->mParameter = parameters;
-    QSignalSpy spy(mLcVtIndicatorPlugin, SIGNAL(dataChanged()));
-    
-    // Deactivate, params cleareds
-    QVERIFY( !mLcVtIndicatorPlugin->mParameter.isNull() );
-    QVERIFY( !mLcVtIndicatorPlugin->handleClientRequest(
-                HbIndicatorInterface::RequestDeactivate, QVariant()) );
-    QCOMPARE( spy.count(), 0 );
-    QVERIFY( mLcVtIndicatorPlugin->mParameter.isNull() );
-    
-    // Activate request, parameters changed
-    parameters.insert("key", QVariant("value"));
-    QVERIFY( mLcVtIndicatorPlugin->handleClientRequest(
-                    HbIndicatorInterface::RequestActivate, QVariant(parameters)) );
-    QCOMPARE( spy.count(), 1 );
-
-    // Activate request, parameters not changed
-    spy.clear();
-    QVERIFY( mLcVtIndicatorPlugin->handleClientRequest(
-                    HbIndicatorInterface::RequestActivate, QVariant(parameters)) );
-    QCOMPARE( spy.count(), 0 );
-}
-
-void UT_LcVtIndicatorPlugin::testBringVtToForeground()
-{    
-    QVERIFY( !mLcVtIndicatorPlugin->bringVtToForeground() );
-    QVERIFY( QProcess::isRunning );    
-}
-
--- a/vtuis/lcvtindicatorplugin/tsrc/ut_lcvtindicatorplugin/stubs/qprocess.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-
-#ifndef QPROCESS_H
-#define QPROCESS_H
-
-class QProcess
-{    
-public:
-    static bool startDetached(const QString &program){ QProcess::isRunning = true; } ;
-    static bool isRunning;
-};
-
-#endif // QPROCESS_H
\ No newline at end of file
--- a/vtuis/lcvtplugin/data/F0112235.rss	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : F0112234.rss
-*  Part of     : 
-*  Description : 
-*  Version     : 
-*
-*  Copyright © 2004 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-#include "registryinfov2.rh"
-
-RESOURCE REGISTRY_INFO theInfo
-	{
-	resource_format_version = RESOURCE_FORMAT_VERSION_2;
-	// UID for the DLL
-	dll_uid = 0xF0112235;
-	// Declare array of interface info
-	interfaces = 
-		{
-		INTERFACE_INFO
-			{
-			// UID of interface that is implemented
-			interface_uid = 0x20021340;
-			implementations = 
-				{
-				IMPLEMENTATION_INFO
-					{
-					implementation_uid = 0x20021342;
-					version_no = 1;
-					default_data = "Videotelephony";
-					rom_only = 0;
-					}
-				};
-			}
-		};
-	}
--- a/vtuis/lcvtplugin/data/lcvtplugin.pkg	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-; Languages
-;
-&EN
-
-; Header
-#{"lcvtplugin patch"}, (0xF0112235), 1, 0, 0, TYPE=PU
-
-; Localised Vendor name
-%{"Nokia"}
-
-; Unique Vendor name
-:"Nokia"
-
-;Files
-"\epoc32\release\armv5\udeb\lcvtengineplugin.dll"    - "!:\sys\bin\lcvtengineplugin.dll"
-"\epoc32\data\Z\Resource\Plugins\lcvtengineplugin.RSC"-"!:\resource\plugins\lcvtengineplugin.RSC"
--- a/vtuis/lcvtplugin/data/lcvtplugin_stub.pkg	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +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:
-;
-; Languages
-&EN
-
-; Header
-#{"lcvtplugin"}, (0xF0112235), 1, 0, 0, TYPE=SA
-
-; Localised Vendor name
-%{"Nokia"}
-
-; Unique Vendor name
-:"Nokia"
-
-;Files
-""-"Z:\sys\bin\lcvtengineplugin.dll"
-""-"Z:\resource\plugins\lcvtengineplugin.RSC"
\ No newline at end of file
Binary file vtuis/lcvtplugin/data/lcvtplugin_stub.sis has changed
--- a/vtuis/lcvtplugin/group/bld.inf	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-#include <platform_paths.hrh>
-
-PRJ_EXPORTS
-// Export IBY files
-../rom/lcvt.iby                   CORE_APP_LAYER_IBY_EXPORT_PATH(lcvt.iby)
-../data/lcvtplugin_stub.sis      /epoc32/data/z/system/install/lcvtplugin_stub.sis
-
-PRJ_MMPFILES
-lcvt.mmp
--- a/vtuis/lcvtplugin/group/lcvt.mmp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : lcvt.mmp
-*  Part of     : 
-*  Description : 
-*  Version     :
-*
-*  Copyright © 2006 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-
-#include <platform_paths.hrh>
-
-// Capability assignment.
-CAPABILITY 	CAP_GENERAL_DLL
-
-// Vendor ID assignment.
-VENDORID	VID_DEFAULT
-
-TARGET		lcvtengineplugin.dll
-TARGETTYPE	PLUGIN
-
-EPOCALLOWDLLDATA
-
-UID		0x10009D8D 0xF0112235
-
-USERINCLUDE  ../inc/base
-USERINCLUDE  ../inc/common
-USERINCLUDE  ../inc/control
-USERINCLUDE  ../inc/states
-USERINCLUDE  ../../lcvtindicatorcontroller/inc
-
-APP_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE 	/epoc32/include/ecom
-SYSTEMINCLUDE   ../../../inc
-
-
-SOURCEPATH ../src/base
-SOURCE dllmain.cpp clcvtengine.cpp clcvtsession.cpp clcvtcmdexecutor.cpp clcvtactiveexec.cpp clcvtappshutter.cpp
-
-SOURCEPATH ../src/common
-SOURCE lcvtutility.cpp tlcvtstates.cpp tlcvtaudiostate.cpp tlcvtmediastate.cpp
-
-SOURCEPATH ../src/control
-SOURCE tlcvtcamerahandler.cpp clcvtlocalvideoplayer.cpp clcvtremotevideoplayer.cpp clcvtvideoplayerbase.cpp
-
-SOURCEPATH ../src/states
-SOURCE tlcvtstatebase.cpp tlcvtstatestarting.cpp tlcvtstaterunning.cpp tlcvtstateresetting.cpp
-
-
-SOURCEPATH	../data
-START RESOURCE F0112235.rss 
-TARGET lcvtengineplugin.rsc                                          
-END
-
-
-LIBRARY			euser.lib
-LIBRARY			ecom.lib
-LIBRARY   		flogger.lib
-LIBRARY   		centralrepository.lib
-LIBRARY         featmgr.lib
-LIBRARY 		ws32.lib
-LIBRARY         efsrv.lib
-LIBRARY         estor.lib
-LIBRARY		    fbscli.lib
-LIBRARY			gdi.lib
-
-LIBRARY			eikcore.lib
-LIBRARY         apparc.lib
-LIBRARY         cone.lib
-LIBRARY         eikcoctl.lib
-LIBRARY         apgrfx.lib
-LIBRARY         eikdlg.lib
-LIBRARY         bitgdi.lib
-LIBRARY         egul.lib
-
-LIBRARY         aknlayout.lib
-LIBRARY         aknlayout2.lib
-LIBRARY         avkon.lib
-LIBRARY         aknskins.lib
-LIBRARY         aknnotify.lib
- 
-
-LIBRARY         videoteleng.lib
-DEBUGLIBRARY    vtlogger.lib
-
-LIBRARY         phoneclient.lib
-
-LIBRARY         lcvtindicatorcontroller.lib
--- a/vtuis/lcvtplugin/inc/base/clcvtactiveexec.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Asynchronous execution class for LC VT plugin.
-*
-*/
-
-
-
-#ifndef CLCVTACTIVEEXEC_H
-#define CLCVTACTIVEEXEC_H
-
-//  INCLUDES
-#include    <e32base.h>
-
-// FORWARD DECLARATIONS
-class CLcVtActiveExec;
-
-// CLASS DECLARATION
-
-/**
-*  Interface for asynchronous execution.
-*
-*  @since Series 60 2.6
-*/
-class MLcVtActiveExec
-    {
-    public: // New functions
-
-        /**
-        * Starts execution of a command.
-        * @param aActiveExec active executor.
-        * @param aState state based on which execution can be started.
-        * @param aNextState next state.
-        * @param aRequest request status, which should be used if operation is 
-        *        asynchronous.
-        * @return ETrue if operation was synchronous, otherwise EFalse.
-        */
-        virtual TBool ActiveExecExecuteL( 
-            CLcVtActiveExec& aActiveExec,
-            const TInt aState, 
-            TInt& aNextState,
-            TRequestStatus& aRequest ) = 0; 
-
-        /**
-        * Decide whether to continue or not.
-        * @param aActiveExec active executor.
-        * @param aState current state, should be updated to new state.
-        * @param aError error code.
-        * @return ETrue if continued, EFalse if stopped.
-        */
-        virtual TBool ActiveExecContinue(
-            CLcVtActiveExec& aActiveExec,
-            TInt& aState, 
-            const TInt aError ) = 0;
-
-        /**
-        * Cancels operation of specific state.
-        * @param aActiveExec active executor.
-        * @param aState state.
-        */
-        virtual void ActiveExecCancel( 
-            CLcVtActiveExec& aActiveExec,
-            const TInt aState ) = 0;
-
-        /**
-        * Informs that operation has been finished.
-        * @param aActiveExec active executor.
-        * @param aInitialState initial state.
-        */
-        virtual void ActiveExecDone( 
-            CLcVtActiveExec& aActiveExec,
-            const TInt aInitialState ) = 0;
-
-    };
-
-/**
-*  Asynchronous execution class for LC VT plugin.
-*
-*  @since Series 60 2.6
-*/
-class CLcVtActiveExec 
-    : public CActive
-    {
-    public: // Constructors and destructor
-
-        /**
-        * Constructor.
-        * @param aPriority priority of the active object.
-        */
-        CLcVtActiveExec(
-            const TInt aPriority );
-
-        /**
-        * Destructor.
-        */
-        ~CLcVtActiveExec();
-
-    public: // New functions
-
-        /**
-        * Starts execution.
-        * @param aStartState initial state.
-        * @param aExec executor.
-        */
-        void Start( 
-            TInt aStartState, 
-            MLcVtActiveExec& aExec );
-
-        /**
-        * Initial state of currently
-        * active operation.
-        *
-        * @return initial state, or KErrNotFound if no operation ongoing.
-        */
-        TInt InitialState() const;
-
-        /**
-        * Returns request status.
-        * @return request status.
-        */
-        TInt RequestStatus() const;
-
-    protected: // Functions from base classes
-
-        /**
-        * @see CActive::RunL.
-        */
-        virtual void RunL();
-
-        /**
-        * @see CActive::DoCancel.
-        */
-        virtual void DoCancel();
-
-        /**
-        * @see CActive::RunError.
-        */
-        virtual TInt RunError( TInt aError );
-
-    private:
-
-        // Ref to active executor.
-        MLcVtActiveExec* iActiveExec;
-
-        // Initial state.
-        TInt iInitialState;
-
-        // Current state.
-        TInt iCurrentState;
-
-        // Next state.
-        TInt iNextState;
-
-    };
-
-#endif // CLCVTACTIVEEXEC_H
-
-// End of File
--- a/vtuis/lcvtplugin/inc/base/clcvtappshutter.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,175 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Class responsible for application exit.
-*
-*/
-
-
-#ifndef C_VTUIAPPSHUTTER_H
-#define C_VTUIAPPSHUTTER_H
-
-#include <babitflags.h>
-
-#include    <mphcltemergencycallobserver.h>
-#include    <cphcltemergencycall.h>
-#include    <rphcltserver.h>
-
-class CAsyncCallBack;
-class MLcVtShutterObserver;
-class MLcVtStateContext;
-
-/**
-* Shutdown service for the application. This is singleton
-* which deletes itself when shutdown is complete.
-*
-* @since S60 v3.2
-*/                       
-class CLcVtAppShutter : public CBase
-    {
-public:          
-
-    /**
-    * Returns the instance of application shutter.
-    *
-    * @param aComms for sending call ending related commands to Phone.
-    * @param aObserver observer informed when shutdown is completed.
-    * @return the application shutter
-    */
-    static CLcVtAppShutter* InstanceL( 
-        MLcVtShutterObserver& aObserver );
-
-    /**
-    *  Starts shutdown.
-    */
-    void StartShutdown();
-
-    /**
-    * Starts shutdown because emergency call was requested by the user.
-    * If supplied number is detected other than emergency number this method
-    * leaves KErrArgument.
-    * @param aStateContext for accessing emergency number and local
-    * variation.
-    */
-    void ShutdownWithEmergencyCallL( MLcVtStateContext& aStateContext );
-                               
-    /**
-    * Callback from emergency caller.
-    */
-    void EmergencyCallDoneL();
-                                   
-private:
-
-    /**
-    * Exits the application if no pending shutdown preparation
-    * is ongoing. Deletes itself as last action.
-    */
-    void ShutdownIfReadyAndDestroy();
-
-    
-    /**
-    * Enques async callback.
-    */
-    void EnqueCallbackL( TCallBack& aCallback );
-
-    /**
-    * Asynch callback handling response to emergency call creation.
-    */
-    static TInt EmergencyResponseCallback( TAny* aAny );
-
-    /** C++ constructor */
-    CLcVtAppShutter( MLcVtShutterObserver& aObserver );
-
-    /** destructor */
-    ~CLcVtAppShutter();
-
-private: // for making shutdown with emergency call
-    class CEmergencyCaller : public CBase, private MPhCltEmergencyCallObserver
-        {
-        public:         
-            /**
-            * Dials emergency call. Object destroys itself when
-            * response is received.
-            */
-            static CEmergencyCaller* DialEmergencyL(
-                CLcVtAppShutter& aObserver,
-                MLcVtStateContext& aStateContext );
-            
-            // Destructor
-            ~CEmergencyCaller();
-            
-        private: // C++ constructor
-            
-            CEmergencyCaller( 
-                CLcVtAppShutter& aObserver, 
-                MLcVtStateContext& aStateContext );
-            
-            /**
-            * 2nd phase constructor
-            */
-            void ConstructL();
-            
-        public: // from MPhCltEmergencyCallObserver       
-            /**
-            * @see  MPhCltEmergencyCallObserver::HandleEmergencyDialL
-            */
-            virtual void HandleEmergencyDialL( const TInt aStatus );
-
-        private: // Data
-
-            // Emergency number
-            TPhCltTelephoneNumber iNumber;             
-            
-            // Phone Server session
-            RPhCltServer          iServer;
-            
-            // Emergency call handler
-            CPhCltEmergencyCall*  iEmergency;
-            
-            // Observer for callback
-            CLcVtAppShutter&      iObserver;
-
-            // State context for gettin entered numbers and local variation
-            MLcVtStateContext&    iStateContext;
-        };
-private: // Data
-
-    /**
-    * Guard flags for completing shutdown.
-    * All must be cleared before shutdown
-    * can be completed.
-    */
-    enum TShutterFlags 
-        {                               
-        /** Waiting for call on StartShutdown() */
-        EShutterWaitingStart,
-        /** Waiting for callback on emegency call request */
-        EShutterWaitingEmergencyCallback,
-        };
-    
-    // Asynch callback
-    CAsyncCallBack* iCallback;
-    
-    // guard flags          
-    TBitFlags8 iPendingStateFlags;
-     
-    // Observer to notify when application exit
-    // is allowed.
-    MLcVtShutterObserver& iObserver;
-
-    // Handles emergency call dialling    
-    CEmergencyCaller* iEmergencyCaller;
-
-    };
-
-#endif // C_VTUIAPPSHUTTER_H
--- a/vtuis/lcvtplugin/inc/base/clcvtcmdexecutor.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,137 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Class for command execution for Video Telephone application.
-*
-*/
-
-#ifndef CLCVTCMDEXECUTOR_H_
-#define CLCVTCMDEXECUTOR_H_
-
-//  INCLUDES
-#include    <e32base.h>
-#include    <mvtengcommandobserver.h>
-
-// FORWARD DECLARATIONS
-class MVtEngCommandHandler;
-class MLcVtEngineCommandManager;
-
-// CLASS DECLARATION
-
-/**
-*  Class for command execution for Video Telephone application.
-*
-*  @since Series 60 2.6
-*/
-class CLcVtCmdExecutor
-    : public CBase,
-      private MVtEngCommandObserver
-    {
-    public: // Constructors and destructor
-
-        /**
-        * Constructor.
-        *
-        * @param aSelfPtr optional pointer to itself.
-        * @param aCommandHandler command handler.
-        * @param aCommandManager command manager.
-        */
-        CLcVtCmdExecutor(
-            CLcVtCmdExecutor** aSelfPtr,
-            MVtEngCommandHandler& aCommandHandler,
-            MLcVtEngineCommandManager& aCommandManager );
-
-        /**
-        * Destructor.
-        */
-        ~CLcVtCmdExecutor();
-
-    public: // New functions
-
-        /**
-        * Executes command.
-        * @param aCommandId command identifier.
-        * @param aParams parameters.
-        * @param aRequest request status, optional.
-        */
-        void ExecuteCmdL(
-            const TVtEngCommandId aCommandId,
-            TDesC8* aParams,
-            TRequestStatus* aRequest );
-
-        /**
-        * @see MVtEngCommandObserver::HandleVTCommandPerformedL.
-        */
-        virtual void HandleVTCommandPerformedL(
-            TVtEngCommandId aCommand,
-            const TInt aError );
-        
-    protected: // New functions
-
-        /**
-        * Completes dialog with error.
-        * Note: this method will delete the dialog.
-        * @param aError error code.
-        */
-        void Complete( const TInt aError );
-        
-    private:
-        /**
-        * Handles execution failure.
-        * @param aResult error code.
-        */
-        void HandleExecuteFailed( TInt aResult );
-
-    private:
-
-        // Inner class.
-        class CActiveCmd;
-
-        // Friend.
-        friend class CActiveCmd;
-        
-        //pointer to itself 
-        CLcVtCmdExecutor** iSelfPtr;
-        
-        // Error code.
-        TInt* iError;
-
-        // Request status.
-        TRequestStatus* iRequest;        
-
-        // Ref to command handler.
-        MVtEngCommandHandler& iCommandHandler;
-
-        // Ref to command manager.
-        MLcVtEngineCommandManager& iCommandManager;
-
-        // Command to be executed.
-        TVtEngCommandId iCommand;
-
-        // Owned parameters.
-        HBufC8* iCommandParams;
-
-        // ETrue if command has been completed.
-        TBool iCommandCompleted;
-
-        // Owned active object to perform the command.
-        CActiveCmd* iActiveCmd;        
-        
-        // ActiveSheduler Waiter inside CLcVtCmdExecutor
-        CActiveSchedulerWait iWait;
-        
-    };
-
-
-
-#endif /* CLCVTCMDEXECUTOR_H_ */
--- a/vtuis/lcvtplugin/inc/base/clcvtengine.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  LiveComm Videotelephony Plugin Class
-*
-*/
-
-#ifndef CLCVTENGINE_H
-#define CLCVTENGINE_H
-
-#include <e32base.h>
-#include <lcengine.h>
-
-class CLcVtSession;
-class MLcSessionObserver;
-class MLcUiProvider;
-class MLcSession;
-
-class CLcVtEngine : public CLcEngine
-    {
-public:
-    
-    /**
-    * Static constructor
-    *
-    * @param aParams ECom instantiation parameters
-    * @return An initialized instance of this class.
-    */
-    static CLcVtEngine* NewL( TAny* aParams );
-    
-    ~CLcVtEngine();
-    
-public: // From CLcEngine
-    
-    MLcSession& Session();
-
-    TBool IsFeatureSupported( TLcFeature aLcFeature );
-
-private: 
-    void ConstructL();
-    CLcVtEngine();
-    
-private:
-    
-    CLcVtSession* iSession;
-    
-    };
-
-#endif // CLCVTENGINE_H
-
-// End of File
--- a/vtuis/lcvtplugin/inc/base/clcvtsession.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,572 +0,0 @@
-/*
-* ==========================================================================
-*  Name        : lcvtsession.h
-*  Description : 
-*  Version     :
-*
-*  Copyright ?2005 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==========================================================================
-*/
-
-#ifndef LCVTSESSION_H
-#define LCVTSESSION_H
-
-#include    <e32base.h>
-#include    <w32std.h>
-#include    <f32file.h>
-#include    <e32property.h>
-#include    <UikonInternalPSKeys.h>
-#include    <centralrepository.h>
-#include    <settingsinternalcrkeys.h>
-#include    <AknQueryDialog.h>
-#include    <gdi.h>
-
-#include    <lcsession.h>
-#include    <lcaudiocontrol.h> 
-#include    <lcsessionobserver.h>
-#include    <lcuiprovider.h>
-#include    <lcengine.h>
-#include    <cvtlogger.h>
-#include    <mvtengeventobserver.h>
-#include    <mvtengcommandobserver.h>
-#include    <mvtengcommandhandler.h>
-#include    <mvtengframeobserver.h>
-#include    <mvtengaudio.h>
-#include    <mvtengsessioninfo.h>
-#include    <vtengevents.h>
-#include    <mvtengmedia.h>
-
-#include    <tvtengrendering.h>
-#include    <tvtengrenderingdp.h>
-#include    <tvtengrenderingnga.h>
-#include    <tvtengrenderingdsa.h>
-
-
-#include    "tlcvtcamerahandler.h"
-#include    "clcvtactiveexec.h"
-#include    "tlcvtstatebase.h"
-#include    "lcvtindicatorcontroller.h"
-
-#define     NGA_VIDEO_RENDER 
-
-class CVtEngModel;
-class CLcVtLocalVideoPlayer;
-class CLcVtRemoteVideoPlayer;
-class TLcVtStates;
-class CLcVtCmdExecutor;
-
-
-class CLcVtSession : public CBase, 
-                     public MLcSession,
-                     public MLcAudioControl,
-                     public MLcVtActiveExec,
-                     public MLcVtStateContext
-    {
-public:
-
-    static CLcVtSession* NewL();
-    
-    ~CLcVtSession();
-
-public: // From MLcSession
-    
-    TLcSessionState LcSessionState() const;
-    
-    void EstablishLcSessionL();
-    
-    void TerminateLcSessionL();    
-    
-    void SetLcSessionObserver( MLcSessionObserver* aObserver );
-    
-    void SetLcUiProvider( MLcUiProvider* aUiProvider );
-    
-    TBool IsBackgroundStartup();
-    
-    MLcVideoPlayer* RemoteVideoPlayer();
-    
-    MLcVideoPlayer* LocalVideoPlayer();   
-    
-    const TDesC& LocalDisplayName();
-    
-    const TDesC& RemoteDisplayName();
-    
-    TInt SetParameter( TInt aId, TInt aValue );
-    
-    TInt ParameterValue( TInt aId );    
-    
-    TInt SetForegroundStatus( TBool aIsForeground );
-    
-    const TDesC& RemoteDetails();
-    
-    void UpdateLcSessionL();    
-    
-    TBool SendDialTone( TChar aKey );
-  
-public: // from MLcAudioControl    
-    
-    TBool IsLcAudioMutedL();
-    
-    void MuteLcAudioL( TBool aMute );
-    
-    TBool IsLcMicMutedL();    
-    
-    void MuteLcMicL( TBool aMute );    
-    
-    TBool IsEnablingLcLoudspeakerAllowed();
-    
-    void EnableLcLoudspeakerL( TBool aEnabled ); 
-    
-    TBool IsLcLoudspeakerEnabled();
-    
-    TInt LcVolumeL(); 
-    
-    void SetLcVolumeL( TInt aValue );
-    
-    void IncreaseLcVolumeL();    
-    
-    void DecreaseLcVolumeL(); 
-    
-public: //from MLcVtActiveExec
-    /**
-    * @see MLcVtActiveExec::ActiveExecExecuteL.
-    */
-    TBool ActiveExecExecuteL(
-        CLcVtActiveExec& aActiveExec,
-        const TInt aState,
-        TInt& aNextState,
-        TRequestStatus& aRequest );
-
-    /**
-    * @see MLcVtActiveExec::ActiveExecContinue.
-    */
-    TBool ActiveExecContinue(
-        CLcVtActiveExec& aActiveExec,
-        TInt& aState,
-        const TInt aError );
-
-    /**
-    * @see MLcVtActiveExec::ActiveExecCancel.
-    */
-    void ActiveExecCancel(
-        CLcVtActiveExec& aActiveExec,
-        const TInt aState );
-
-    /**
-    * @see MLcVtActiveExec::ActiveExecDone.
-    */
-    virtual void ActiveExecDone(
-        CLcVtActiveExec& aActiveExec,
-        const TInt aInitialState );    
-
-public: //new function
-    /**
-    * @see MLcVtActiveExec::ActiveExecExecuteL.
-    */
-    TBool ActiveExecInitExecuteL(
-        const TInt aState,
-        TInt& aNextState,
-        TRequestStatus& aRequest );
-
-    /**
-    * @see MLcVtActiveExec::ActiveExecContinue.
-    */
-    TBool ActiveExecInitContinue(
-        TInt& aState,
-        const TInt aError );
-
-    /**
-    * @see MLcVtActiveExec::ActiveExecCancel.
-    */
-    void ActiveExecInitCancel(
-        const TInt aState );
-
-    /**
-    * @see MLcVtActiveExec::ActiveExecDone.
-    */
-    void ActiveExecInitDone(
-        const TInt aInitialState );   
-    
-    /**
-    * Executes command taking no parameters.
-    * @param aCommand command to be performed.
-    * @param aRequest request status.
-    */
-    void ActiveExecInitExecuteCommandL(
-        const TVtEngCommandId aCommand,
-        TRequestStatus& aRequest );
-
-    /**
-    * Executes command taking no parameters.
-    * @param aCommand command to be performed.
-    * @param aParam command parameters.
-    * @param aRequest request status.
-    */
-    template < class T >
-    void ActiveExecInitExecuteCommandL(
-        const TVtEngCommandId aCommand,
-        T& aParam,
-        TRequestStatus& aRequest );
-    
-    /**
-    * Executes prepare viewfinder command.
-    * @param aRequest request status to be completed when finished.
-    */
-    void ActiveExecInitPrepareViewFinderL(
-        TRequestStatus& aRequest );
-
-    /**
-    * Executes prepare remote render command.
-    * @param aRequest request status to be completed when finished.
-    */
-    void ActiveExecInitPrepareRemoteRenderL(
-        TRequestStatus& aRequest );    
-    
-    /**
-    * Executes 'prepare camera' command.
-    * @param aSource source to be prepared.
-    * @param aRequest request status.
-    */
-    void ActiveExecInitPrepareCameraL(
-        const MVtEngMedia::TMediaSource aSource,
-        TRequestStatus& aRequest );
-
-    /**
-    * Executes 'set source' command.
-    * @param aSource source to be selected.
-    * @param aRequest request status.
-    */
-    void ActiveExecInitSetSourceL(
-        const MVtEngMedia::TMediaSource aSource,
-        TRequestStatus& aRequest );
-        
-    /**
-    * Performs a command without any parameters.
-    * @param aCommand command to be performed.
-    */
-    void ExecuteCmdL( const TVtEngCommandId aCommand );
-
-    /**
-    * Performs a command with a parameter.
-    * @param aCommmand command to be performed.
-    * @param aParam parameter.
-    */
-    template< class T >
-    void ExecuteCmdL(
-        const TVtEngCommandId aCommand,
-        T& aParam );
-
-    // ASYNCHRONOUS EXECUTION:
-
-    /**
-    * Performs a command without any parameters.
-    * @param aExecutorPtr pointer to which returned value is stored.
-    * @param aCommand command to be performed.
-    * @param aStatus request status.
-    * @return dialog.
-    */
-    CLcVtCmdExecutor* ExecuteCmdAsyncL(
-        CLcVtCmdExecutor** aExecutorPtr,
-        const TVtEngCommandId aCommand,
-        TRequestStatus& aStatus );
-
-    /**
-    * Performs a command with a parameter.
-    * @param aExecutorPtr pointer to which returned value is stored.
-    * @param aCommmand command to be performed.
-    * @param aParam parameter.
-    * @param aStatus request status.
-    * @return dialog.
-    */
-    template< class T >
-    CLcVtCmdExecutor* ExecuteCmdAsyncL(
-        CLcVtCmdExecutor** aExecutorPtr,
-        const TVtEngCommandId aCommand,
-        T& aParam,
-        TRequestStatus& aStatus );
-
-    /**
-    * Performs a command.
-    * @param aExecutorPtr pointer to which returned value is stored.
-    * @param aCommand command.
-    * @param aParams parameter, optional.
-    * @param aStatus request status.
-    * @return dialog.
-    */
-    CLcVtCmdExecutor* DoExecuteCmdAsyncL(
-        CLcVtCmdExecutor** aExecutorPtr,
-        const TVtEngCommandId aCommand,
-        TDesC8* aParams,
-        TRequestStatus& aStatus );   
-    
-    /**
-    * Executes command in TRAP harnness.
-    * @param aCommand command identifier.
-    * @param aParam optional, parameters.
-    * @return error code.
-    */
-    TInt Execute( const TVtEngCommandId aCommand, TDesC8* aParam );   
-    
-    /**
-    * Handles layout changes basically calling HandleLayoutChangedL
-    * in trap harness.
-    * @return error code.
-    */
-    //TInt HandleLayoutChanged();
-
-    /**
-    * Handles layout changes.
-    */
-    void HandleLayoutChangedL();
-    
-public: //from MLcVtStateContext
-    
-    /** @see MLcVtStateContext::StartupPhase1L */
-    void StartupPhase1L();
-
-    /** @see MLcVtStateContext::ShutdownL */
-    void ShutdownL();
-
-    /** @see MLcVtStateContext::StartupPhase2L */
-    void StartupPhase2L();
-
-    /** @see MLcVtStateContext::ChangeApplicationFocus */
-    void ChangeApplicationFocus( const TBool aForeground );
-
-    /** @see MLcVtStateContext::ChangeState */
-    void ChangeState( TLcVtStateBase* aState );
-
-    /** @see MLcVtStateContext::StartTone */
-    //void StartDtmfTone( const TChar& aTone );
-
-    /** @see MLcVtStateContext::StopTone */
-    //void StopDtmfTone();
-
-    /** @see MLcVtStateContext::Model */
-    CVtEngModel& Model();
-
-    /** @see MLcVtStateContext::NumberSource*/
-    TDesC* NumberSource() const;
-
-    /** @see MLcVtStateContext::RefreshL */
-    void RefreshL( const TInt aRefreshFlags );
-    
-    /** @see MLcVtStateContext::RefreshStatesL */
-    void  RefreshStatesL();
-
-    /** @see MLcVtStateContext::DoExecuteCmdL */
-    void DoExecuteCmdL(
-        const TVtEngCommandId aCommand,
-        TDesC8* aParams );
-
-    /** @see MLcVtStateContext::DoHandleLayoutChangedL */
-    void DoHandleLayoutChangedL();
-    
-    /** From MLcVtShutterObserver via MLcVtStateContext
-    *  Exits the application.
-    */
-    void HandleShutdownReady();    
-
-    /** @see MLcVtStateContext::SetCallIdL */
-    void SetCallIdL( const TInt aCallId );
-
-    /** @see MLcVtStateContext::SetCallNameL */
-    TBool SetCallNameL( const TDesC& aName ); 
-    
-    /** @see MLcVtStateContext::SetCallNumberL */
-    void SetCallNumberL( const TDesC& aNumber );
-    
-    /** @see MLcVtStateContext::StartShutdown */
-    void StartShutdown();    
-    
-public: //new functions    
-    
-    /**
-    * Static async callback for handling layout change.
-    */
-    //static TInt DelayedHandleLayoutChanged( TAny* aPtr );
-    
-    /**
-    * Callback function to exit.
-    * @param aAny pointer to instance of this class.
-    * @return KErrNone always.
-    */    
-    static TInt DoExit( TAny* aAny );
-    
-    /**
-    * Close UI Application.
-    */   
-    void CloseApp();
-    
-    /**
-    * Handles engine reset.
-    */
-    void HandleEngineResetL();    
-
-    /**
-    * Handle plugin command.
-    */    
-    void HandleCommandL(const TInt acommand);
-    
-    /**
-    * Sets given zoom step, if it allowed.
-    * @param aZoomStep New zoom step to be set.
-    */
-    void SetZoomFactorL( TInt aZoomStep ); 
-    
-    /**
-    * Updates rendering parameters.
-    */
-    void UpdateRenderingParametersL();    
-
-    inline TLcVtStates& LcVtStates();
-
-#ifndef NGA_VIDEO_RENDER
-    void vtHandleFrameL( CFbsBitmap* aBitmap ); 
-#endif  
-    TBool IsFeatureSupported( CLcEngine::TLcFeature aLcFeature );
-
-
-private:
-     CLcVtSession();
-    
-    void ConstructL();    
-
-#ifndef NGA_VIDEO_RENDER
-    /**
-    * connect to font & bitmap server.
-    */    
-    void ConnectFbsServerL();
-    
-    /**
-    * disconnect from font & bitmap server.
-    */    
-    void DisconnectFbsServer();
-#endif       
-
-    // COMMAND HANDLING
-    
-    /**
-    * Enables audio (unmute microphone).
-    */
-    void CmdEnableAudioL();
-
-    /**
-    * Disables audio (mute microphone).
-    */
-    void CmdDisableAudioL();
-    
-    /**
-    * Switches used camera.
-    * @param aPrimaryCamera ETrue if primary camera is to be selected,
-    *        EFalse if secondary camera is to be selected.
-    */
-    void CmdUseCameraL( const TBool aPrimaryCamera );
-    
-    /**
-    * Activates loudspeaker.
-    */
-    void CmdActivateLoudspeakerL();
-
-    /**
-    * Deactivates loudspeaker.
-    */
-    void CmdDeactivateLoudspeakerL();
-    
-    /**
-    * Enables video.
-    */
-    void CmdEnableVideoL();
-    
-    /**
-    * Disables video.
-    */
-    void CmdDisableVideoL();
-    
-#ifdef NGA_VIDEO_RENDER
-    void CreateVideoWindowsL();
-    void DestroyVideoWindows();
-#endif
-
-private:
-    class CEventObserver;
-
-private:
-#ifdef NGA_VIDEO_RENDER    
-    RWindow*  iRemoteVideoWindow;
-    RWindow*  iLocalVideoWindow;
-#else
-    CFbsBitmap* iDummy;    
-    CWindowGc*  iGc;
-    TBool   iFbsStarted; 
-    RWsSession* iWsSession;    
-    CWsScreenDevice* iWsSessionScreenDev;
-    RWindowGroup *iRootWin;  
-#endif
-    // Owned event observer.
-    CEventObserver* iEventObserver;
-    // Engine model.
-    CVtEngModel* iModel;
-    // plugin states (media, audio, boolean variables)
-    TLcVtStates* iLcVtStates;
-
-    TVtCameraHandler          iCameraHandler;
-    CLcVtLocalVideoPlayer*    iLocalVideoPlayer;
-    CLcVtRemoteVideoPlayer*   iRemoteVideoPlayer;
-    
-    MLcSessionObserver* iObserver;
-    MLcUiProvider* iUiProvider;
-  
-    TLcSessionState iSessionState;
-    
-    // Owned active executor for initialisation / uninitialisation.
-    CLcVtActiveExec*  iActiveExec;
-    
-    CLcVtCmdExecutor* iCmdExecutor;
-    
-    // Reference to request status.
-    TRequestStatus* iShutdownRequest;
-    
-    TLcVtStateBase*  iState;
-    
-    // ASync callback.
-    CAsyncCallBack* iAsyncCallback;
-    
-    // Async callback for layout change
-    //CAsyncCallBack* iLayoutChangeCallback;
-
-    // DTMF tone, used as parameter to KVtEngStartDtmfTone.
-    TPckgBuf< TChar > iDtmfTone;  
-                
-    TBool iLoudspeakerEnabled;
-    TBool iMute;
-    
-    RWindow* iMainWindow;
-    
-    RWsSession iRwSession;
-    RWindowGroup* iRwGroup;
-    CWsScreenDevice* iDev;
-
-    HBufC* iRemoteDisplayName;
-    HBufC* iRemoteDetails;
-
-    TInt VideoSendingKey;
-    
-    LcVtIndicatorController* iIndicatorCtr;
-    };
-    
-
-TLcVtStates& CLcVtSession::LcVtStates()
-    {
-    return *iLcVtStates;
-    }
-#endif // LCVTSESSION_H
-
-// end of file
--- a/vtuis/lcvtplugin/inc/base/lcvtplugincommand.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Plguin command
-*
-*/
-
-#ifndef LCVTPLUGINCOMMAND_H_
-#define LCVTPLUGINCOMMAND_H_
-
-enum
-    {
-    // End active call
-    EPluginCmdEndActiveCall = 5000,
-    // Switch to voice call
-    EPluginCmdCreateVoice,
-    // Create a emergency call
-    EPluginCmdDialEmergency,    
-    // Enable video
-    EPluginCmdEnableVideo,
-    // Enable audio
-    EPluginCmdEnableAudio,
-    // Disable video
-    EPluginCmdDisableVideo,
-    // Disable audio
-    EPluginCmdDisableAudio,
-    // Use primary camera
-    EPluginCmdUsePrimaryCamera,
-    // Use secondary camera
-    EPluginCmdUseSecondaryCamera,
-    // Active Loudspeaker
-    EPluginCmdActivateLoudspeaker,
-    // Deactive Loudspeaker
-    EPluginCmdDeactivateLoudspeaker
-    };
-
-
-#endif /* LCVTPLUGINCOMMAND_H_ */
--- a/vtuis/lcvtplugin/inc/base/mlcvtenginecommandmanager.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
- * mlcvtenginecommandmanager.h
- *
- *  Created on: Jun 29, 2009
- *      Author: z51wang
- */
-
-#ifndef M_LCVTENGINECOMMANDMANAGER_H
-#define M_LCVTENGINECOMMANDMANAGER_H
-
-//  INCLUDES
-#include    <e32base.h>
-
-// FORWARD DECLARATIONS
-class MVtEngCommandObserver;
-
-// CLASS DECLARATION
-
-/**
-*  Command manager class for Video Telephone application.
-*
-*  @since Series 60 2.6
-*/
-class MLcVtEngineCommandManager
-    {
-    public: // New functions
-
-        /**
-        * Adds observer.
-        * @param aObserver observer to be added.
-        */
-        virtual void AddObserverL( MVtEngCommandObserver& aObserver ) = 0;
-
-        /**
-        * Removes observer.
-        * @param aObserver observer to be removed.
-        */
-        virtual void RemoveObserver( MVtEngCommandObserver& aObserver ) = 0;
-
-    };
-
-
-#endif /* M_LCVTENGINECOMMANDMANAGER_H */
--- a/vtuis/lcvtplugin/inc/base/mlcvtshutterobserver.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Interface for reporting application shutdown readiness.
-*
-*/
-
-
-#ifndef M_MLCVTSHUTTEROBSERVER_H
-#define M_MLCVTSHUTTEROBSERVER_H
-
-
-/**
-* Observer interface for reporting shutdown readiness.
-*
-* @since S60 v3.2
-*/
-class MLcVtShutterObserver
-    {
-public:
-
-    /**
-    * Called when application can exit.
-    */
-    virtual void HandleShutdownReady() = 0;
-    };
-    
-#endif // M_MLCVTSHUTTEROBSERVER_H
--- a/vtuis/lcvtplugin/inc/base/mlcvtstatecontext.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Interface for state objects to request application services.
-*
-*/
-
-
-#ifndef M_MLCVTSTATECONTEXT_H
-#define M_MLCVTSTATECONTEXT_H
-
-#include <e32def.h> 
-#include <vtengcommands.h>
-#include "mlcvtshutterobserver.h"
-
-class TLcVtStateBase;
-class CVtEngModel;
-
-/**
-* Provides service interface for vt plugin state objects.
-*
-* @since S60 v3.2
-*/
-class MLcVtStateContext : public MLcVtShutterObserver
-    {
-    public:
-                
-        /**
-        * Starts first phase of startup when prepare is received.
-        */
-        virtual void StartupPhase1L() = 0;
-        
-        /**
-        * Starts application shutdown.
-        */
-        virtual void ShutdownL() = 0;
-        
-        /**
-        * Starts second phase of startup.
-        */
-        virtual void StartupPhase2L() = 0;
-        
-        /**
-        * Sets application to foreground and background.            
-        * @param aForeground ETrue => foreground, EFalse => background
-        */
-        virtual void ChangeApplicationFocus( const TBool aForeground ) = 0;
-        
-        /**
-        * Changes current application state.
-        * @param aState new state
-        */
-        virtual void ChangeState( TLcVtStateBase* aState ) = 0;
-        
-        /**
-        * Starts DTMF tone.
-        * @param aTone DTMF tone.
-        */
-        //virtual void StartDtmfTone( const TChar& aTone ) = 0;
-        
-        /**
-        * Stops tarts DTMF tone.
-        */
-        //virtual void StopDtmfTone() = 0;
-        
-        /**
-        * Returns model.
-        * @return model
-        */
-        virtual CVtEngModel& Model() = 0;
-                        
-        /**
-        * Returns source containing numbers typed by the user.
-        * @return number soure
-        */
-        virtual TDesC* NumberSource() const = 0;
-        
-        /**
-        * Executes engine command.
-        * @param aCommand command id
-        * @param aParams command params
-        */
-        virtual void DoExecuteCmdL( const TVtEngCommandId aCommand,
-                TDesC8* aParams ) = 0;
-        
-        /**
-        * Refreshes application UI.
-        * @param aRefreshFlags identifies what to refresh
-        */
-        virtual void RefreshL( const TInt aRefreshFlags ) = 0;          
-        
-        /**
-        * Updates engine states.
-        */
-        virtual void  RefreshStatesL() = 0;
-
-        /**
-        * Handles layout change.
-        */
-        //virtual void DoHandleLayoutChangedL() = 0;
-
-        /**
-        * Sets call id.
-        */
-        virtual void SetCallIdL( const TInt aCallId ) = 0;
-        
-        /**
-        * Sets display text of remote end.
-        */
-        virtual TBool SetCallNameL( const TDesC& aName ) = 0;
-        
-        /**
-        * Sets call number text of remote end.
-        */
-        virtual void SetCallNumberL( const TDesC& aNumber ) = 0;
-        
-        /**
-         * Start shutdown process
-         */
-        virtual void StartShutdown() = 0;
-
-        
-        /**
-        * Refresh flags
-        */        
-        enum TRefreshFlags
-            {
-            /** Navipane is refreshed */
-            ENaviPane       = 0x01,
-            /** Softkeys are refreshed */
-            ESoftkeys       = 0x02,
-            /** Refreshes blind (video availability) status */
-            EBlind          = 0x04,
-            /** Refreshes state sync with call handling */
-            ESynchronise    = 0x08,
-            /** Refreshes internal states (media etc) */
-            EUiStates       = 0x10,
-            /** Refreshes everything */
-            EAll            = ENaviPane | 
-                              ESoftkeys | 
-                              EBlind | 
-                              ESynchronise | 
-                              EUiStates
-            };
-    };
-
-    
-#endif // M_MLCVTSTATECONTEXT_H
--- a/vtuis/lcvtplugin/inc/common/lcvtutility.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Utility methods for Video Telephone application.
-*
-*/
-
-
-
-#ifndef LCVTUTILITY_H
-#define LCVTUTILITY_H
-
-//  INCLUDES
-#include    <e32base.h>
-#include    <mvtengaudio.h>
-#include    <mvtengmedia.h>
-#include    <w32std.h>
-
-// FORWARD DECLARATIONS
-
-// CLASS DECLARATION
-
-/**
-*  Utility methods for Video Telephone application.
-*
-*  @since Series 60 2.6
-*/
-class LcVtUtility
-    {
-    public: // New functions
-
-        /**
-        * Enumerates audio routing masks.
-        */
-        enum TAudioRoutingMask
-            {
-            // Deactivate loudspeaker.
-            EDeactivateLoudspeaker = (1<<0),
-            // Activate loudspeaker.
-            EActivateLoudspeaker = (1<<1),
-            // Deactivate BT handsfree.
-            EDeactivateBtHandsfree = (1<<2),
-            // Activate BT handsfree.
-            EActivateBtHandsfree = (1<<3)
-            };
-
-        /**
-        * Gets audio routing availabilities.
-        * @param aAudio audio instance.
-        * @param aAvailable availability bitmap.
-        */
-        static void GetAudioRoutingAvailability( 
-            MVtEngAudio& aAudio,
-            TInt& aAvailable );
-
-        /**
-        * Gets outgoing media state.
-        * @param aMedia media instance.
-        * @param aAvailable availability bitmap.
-        */
-        static void GetOutgoingMediaState(
-            MVtEngMedia& aMedia,
-            TInt& aAvailable );
-
-        /**
-        * Gets incoming media state.
-        * @param aMedia media instance.
-        * @param aAvailable availability bitmap.
-        */
-        static void GetIncomingMediaState(
-            MVtEngMedia& aMedia,
-            TInt& aAvailable );
-
-        /**
-        * Checks if media has still image.
-        * @param aMedia media instance.
-        * @return ETrue if media has still image.
-        */
-        static TBool HasStillImage(
-            MVtEngMedia& aMedia );
-
-        /**
-        * Gets freeze's current status.
-        * @param aMedia media instance.
-        * @return  ETrue if active provider is frozen, EFalse otherwise.
-        */
-        static TBool GetFreezeState( 
-            MVtEngMedia& aMedia );  
-                
-        /**
-        * Checks if freeze is supported.
-        * @param aMedia media instance.
-        * @return ETrue if freeze is supported.
-        */
-        static TBool IsFreezeSupported(
-            MVtEngMedia& aMedia );
-    
-        /**
-        * Gets current local video quality setting.
-        * @param aMedia media instance. 
-        * @param aVideoQuality Current local video quality settings.
-        */
-        static void GetVideoQuality( 
-            MVtEngMedia& aMedia,
-            MVtEngMedia::TVideoQuality& aVideoQuality );
-        /**
-        * Gets current object sharing state.
-        * @param aMedia media instance.
-        * @param aShareObjectState contains current object sharing state on
-        * return.
-        */
-        static void GetObjectSharingState( MVtEngMedia& aMedia,
-            MVtEngMedia::TShareObjectState& aShareObjectState );
-        
-        /**
-        * Checks if zooming is allowed.
-        * @param aMedia media instance.
-        * @return ETrue if allowed, EFalse otherwise.
-        */
-        static TBool IsZoomAllowed(
-            MVtEngMedia& aMedia );
-
-        /**
-        * Checks if the device has cameras currently attached.
-        * @param aMedia media instance.
-        * @return ETrue if there are cameras available.
-        */
-        static TBool HasCameras( MVtEngMedia& aMedia );
-
-        /**
-        * Checks if the character is DTMF enabled.
-        * @param aChar The character.
-        * @return ETrue if this character is DTMF character.
-        */
-        static TBool IsDTMFCharacter( const TChar aChar );
-
-    private:
-
-        /**
-        * Checks if audio routing is available.
-        * @param aAudio audio instance.
-        * @param aCurrent current speaker.
-        * @param aSource source speaker.
-        * @param aTarget target speaker.
-        */
-        static TBool IsAudioRoutingAvailable(
-            MVtEngAudio& aAudio,
-            const MVtEngAudio::TAudioRoutingState aCurrent,
-            const MVtEngAudio::TAudioRoutingState aSource,
-            const MVtEngAudio::TAudioRoutingState aTarget );
-
-    };
-
-#endif      // LCVTUTILITY_H
-            
-// End of File
--- a/vtuis/lcvtplugin/inc/common/tlcvtaudiostate.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Audio state class definition.
-*
-*/
-
-
-#ifndef T_LCVTAUDIOSTATE_H
-#define T_LCVTAUDIOSTATE_H
-
-#include <e32base.h>
-
-#include "tlcvtflagcontainer.h"
-
-class CVtEngModel;
-
-/**
- *  TLcVtAudioState
- *
- *  Contains status information about video telephony audio.
- *
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( TLcVtAudioState ) : public TLcVtUpdateableFlagContainer
-    {
-public:
-
-    /**
-     * Constructor
-     *
-     * @param aModel Reference to VT engine model.
-     */
-    inline TLcVtAudioState( CVtEngModel& aModel );
-
-    /**
-     * Return whether audio is enabled or not.
-     *
-     * @return ETrue if audio is enabled EFalse otherwise.
-     */
-    inline TBool IsAudio() const;
-
-    /**
-     * Return whether BT handsfree can be activated or not.
-     *
-     * @return ETrue if BT handsfree can be activated EFalse otherwise.
-     */
-    inline TBool CanActivateBtHf() const;
-
-    /**
-     * Return whether BT handsfree can be deactivated or not.
-     *
-     * @return ETrue if BT handsfree can be deactivated EFalse otherwise.
-     */
-    inline TBool CanDeactivateBtHf() const;
-
-    /**
-     * Return whether loudspeaker can be activated or not.
-     *
-     * @return ETrue if loudpseaker can be activated EFalse otherwise.
-     */
-    inline TBool CanActivateLoudspeaker() const;
-
-    /**
-     * Return whether loudspeaker can be deactivated or not.
-     *
-     * @return ETrue if loudspeaker can be deactivated EFalse otherwise.
-     */
-    inline TBool CanDeactivateLoudspeaker() const;
-
-    /**
-     * Return whether or not audio is permanently stopped.
-     *
-     * @return ETrue if audio is permanently stopped.
-     */
-    inline TBool IsAudioPermanentlyStopped() const;
-
-private: // from TVtUpdateableFlagContainer
-
-    /**
-     * @see TVtUpdateableFlagContainer::UpdateFlags
-     */
-    void UpdateFlags();
-
-private:
-
-    // Enumeration for audio state flags.
-    enum TFlags
-        {
-        /** Is set if audio is currently enabled. */
-        EIsAudio = ( 1<<0 ),
-        /** Is set if BT handsfree can be activated. */
-        ECanActivateBtHf = ( 1<<1 ),
-        /** Is set if BT handsfree can be deactivated. */
-        ECanDeactivateBtHf = ( 1<<2 ),
-        /** Is set if loudspeaker can be activated. */
-        ECanActivateLoudspeaker = ( 1<<3 ),
-        /** Is set if loudspeaker can be deactivated. */
-        ECanDeactivateLoudspeaker = ( 1<<4 ),
-        /** Set if audio is permanently stopped */
-        EIsAudioPermanentlyStopped = ( 1<<5 )
-        };
-
-    // Reference to engine model instance
-    CVtEngModel& iModel;
-
-    };
-
-#include "tlcvtaudiostate.inl"
-
-#endif // T_LCVTAUDIOSTATE_H
--- a/vtuis/lcvtplugin/inc/common/tlcvtaudiostate.inl	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Audio state class inline methods.
-*
-*/
-
-
-// -----------------------------------------------------------------------------
-// TLcVtAudioState::TLcVtAudioState
-// -----------------------------------------------------------------------------
-//
-TLcVtAudioState::TLcVtAudioState( CVtEngModel& aModel )
-: iModel( aModel )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtAudioState::IsAudio
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtAudioState::IsAudio() const
-    {
-    return IsFlag( EIsAudio );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtAudioState::CanActivateBtHf
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtAudioState::CanActivateBtHf() const
-    {
-    return IsFlag( ECanActivateBtHf );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtAudioState::CanDeactivateBtHf
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtAudioState::CanDeactivateBtHf() const
-    {
-    return IsFlag( ECanDeactivateBtHf );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtAudioState::CanActivateLoudspeaker
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtAudioState::CanActivateLoudspeaker() const
-    {
-    return IsFlag( ECanActivateLoudspeaker );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtAudioState::CanDeactivateLoudspeaker
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtAudioState::CanDeactivateLoudspeaker() const
-    {
-    return IsFlag( ECanDeactivateLoudspeaker );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtAudioState::IsAudioPermanentlyStopped
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtAudioState::IsAudioPermanentlyStopped() const
-    {
-    return IsFlag( EIsAudioPermanentlyStopped );
-    }
--- a/vtuis/lcvtplugin/inc/common/tlcvtflagcontainer.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Flag container class definition.
-*
-*/
-
-
-#ifndef T_LCVTFLAGCONTAINER_H
-#define T_LCVTFLAGCONTAINER_H
-
-#include <e32base.h>
-
-/**
- *  TLcVtFlagContainer
- *
- *  Flag container is a class that holds maximum of 32 different flags. Also
- *  contains methods for setting, clearing and getting the flag state.
- *
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( TLcVtFlagContainer )
-    {
-public:
-
-    /**
-     * Constructor.
-     */
-    inline TLcVtFlagContainer();
-
-protected:
-
-    /**
-     * Clears all flags.
-     */
-    inline void Clear();
-
-    /**
-     * Tests flag.
-     */
-    inline TBool IsFlag( TUint32 aFlags ) const;
-
-    /**
-     * Sets flag(s).
-     */
-    inline void SetFlag( TUint32 aFlags );
-
-    /**
-     * Clears flag(s).
-     */
-    inline void ClearFlag( TUint32 aFlags );
-
-    /**
-    * Gets flag value.
-    */
-    inline TUint32 Value() const;
-
-    /**
-    * Sets flag value.
-    */
-    inline void SetValue( TUint32 aValue );
-
-private:
-
-    // Current flags
-    TUint32 iFlags;
-
-    };
-
-/**
- *  TLcVtUpdateableFlagContainer
- *
- *  A flag container with Update() method that can be called to get
- *  flags updated in one pass.
- *
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( TLcVtUpdateableFlagContainer ) : public TLcVtFlagContainer
-    {
-public:
-
-    /**
-    * Issues flag updation.
-    */
-    inline void Update();
-
-private:
-
-    /**
-    * Called when flags needs to be updated (as a result to call Update()).
-    */
-    virtual void UpdateFlags() = 0;
-
-    };
-
-#include "tlcvtflagcontainer.inl"
-
-#endif // T_LCVTFLAGCONTAINER_H
--- a/vtuis/lcvtplugin/inc/common/tlcvtflagcontainer.inl	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Flag container class inline methods.
-*
-*/
-
-
-// -----------------------------------------------------------------------------
-// TLcVtFlagContainer::TLcVtFlagContainer
-// -----------------------------------------------------------------------------
-//
-TLcVtFlagContainer::TLcVtFlagContainer()
-    {
-    Clear();
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtFlagContainer::Clear
-// -----------------------------------------------------------------------------
-//
-void TLcVtFlagContainer::Clear()
-    {
-    iFlags = 0;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtFlagContainer::IsFlag
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtFlagContainer::IsFlag( TUint32 aFlags ) const
-    {
-    return ( iFlags & aFlags );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtFlagContainer::SetFlag
-// -----------------------------------------------------------------------------
-//
-void TLcVtFlagContainer::SetFlag( TUint32 aFlags )
-    {
-    iFlags |= aFlags;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtFlagContainer::ClearFlag
-// -----------------------------------------------------------------------------
-//
-void TLcVtFlagContainer::ClearFlag( TUint32 aFlags )
-    {
-    iFlags &= ~aFlags;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtFlagContainer::Value
-// -----------------------------------------------------------------------------
-//
-TUint32 TLcVtFlagContainer::Value() const
-    {
-    return iFlags;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtFlagContainer::SetValue
-// -----------------------------------------------------------------------------
-//
-void TLcVtFlagContainer::SetValue( TUint32 aValue )
-    {
-    iFlags = aValue;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtUpdateableFlagContainer::Update
-// -----------------------------------------------------------------------------
-//
-void TLcVtUpdateableFlagContainer::Update()
-    {
-    Clear();
-    UpdateFlags();
-    }
--- a/vtuis/lcvtplugin/inc/common/tlcvtmediastate.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,216 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Media state class definition.
-*
-*/
-
-
-#ifndef T_LCVTMEDIASTATE_H
-#define T_LCVTMEDIASTATE_H
-
-#include <e32base.h>
-
-#include "tlcvtflagcontainer.h"
-
-class MVtEngMedia;
-class MVtEngCommandHandler;
-
-/**
- *  TLcVtMediaState
- *
- *  Contains information about media's (video) current status.
- *
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( TLcVtMediaState ) : public TLcVtUpdateableFlagContainer
-    {
-public:
-
-    /**
-     * Constructor.
-     *
-     * @param aMedia Reference to VT engine media object.
-     * @param aCommandHandler Reference to command handler object.
-     */
-    inline TLcVtMediaState( MVtEngMedia& aMedia,
-        MVtEngCommandHandler& aCommandHandler );
-
-    /**
-     * Return whether or not video is being sent.
-     *
-     * @return ETrue if video is being sent.
-     */
-    inline TBool IsVideo() const;
-
-    /**
-     * Return whether or not any camera is available in device.
-     *
-     * @return ETrue if any camera is available in device.
-     */
-    inline TBool HasCamera() const;
-
-    /**
-     * Return whether or not freeze is supported for active video source.
-     *
-     * @return ETrue if freeze is supported for active video source.
-     */
-    inline TBool IsFreezeSupported() const;
-
-    /**
-     * Return whether or not active video source is frozen.
-     *
-     * @return ETrue if video is frozen.
-     */
-    inline TBool IsFrozen() const;
-
-    /**
-     * Return whether or not share is active.
-     *
-     * @return ETrue if still image is being shared.
-     */
-    inline TBool IsSharing() const;
-
-    /**
-     * Return whether or not sharing is being initialized.
-     *
-     * @return ETrue if still image sharing is being initialized.
-     */
-    inline TBool IsInitializingShare() const;
-
-    /**
-     * Return whether or not primary camera is being used by VT.
-     *
-     * @return ETrue if primary camera is being used.
-     */
-    inline TBool IsPrimaryCameraInUse() const;
-
-    /**
-     * Return whether or not secondary camera is being used by VT.
-     *
-     * @return ETrue if secondary camera is being used.
-     */
-    inline TBool IsSecondaryCameraInUse() const;
-
-    /**
-     * Return whether or not it is possible to share.
-     *
-     * @return ETrue if sharing is not allowed.
-     */
-    inline TBool IsNotAbleToShare() const;
-
-    /**
-     * Return whether or not device has primary camera.
-     *
-     * @return ETrue if primary camera is available.
-     */
-    inline TBool HasPrimaryCamera() const;
-
-    /**
-     * Return whether or not device has secondary camera.
-     *
-     * @return ETrue if secondary camera is available.
-     */
-    inline TBool HasSecondaryCamera() const;
-
-    /**
-     * Return whether or not active video source supports contrast setting.
-     *
-     * @return ETrue if contrast settingis allowed.
-     */
-    inline TBool IsContrastSupported() const;
-
-    /**
-     * Return whether or not active video source supports white balance setting.
-     *
-     * @return ETrue if white balance setting is allowed.
-     */
-    inline TBool IsWhiteBalanceSupported() const;
-
-    /**
-     * Return whether or not active video source supports color tone setting.
-     *
-     * @return ETrue if colour tone setting is allowed.
-     */
-    inline TBool IsColorToneSupported() const;
-
-    /**
-     * Return whether or not active video source supports brightness setting.
-     *
-     * @return ETrue if brightness setting is allowed.
-     */
-    inline TBool IsBrightnessSupported() const;
-    
-    /**
-     * Return whether or not video is permanently stopped.
-     *
-     * @return ETrue if video is permanently stopped.
-     */
-    inline TBool IsVideoPermanentlyStopped() const;
-
-private: // from TVtUpdateableFlagContainer
-
-    /**
-     * @see TVtUpdateableFlagContainer::UpdateFlags
-     */
-    void UpdateFlags();
-
-private:
-
-    // Enumeration for media state flags.
-    enum TFlags
-        {
-        /** Set if video is currently enabled. */
-        EIsVideo = ( 1<<0 ),
-        /** Set if device has any cameras */
-        EHasCamera = ( 1<<1 ),
-        /** Set if current active video source supports freezing */
-        EIsFreezeSupported = ( 1<<2 ),
-        /** Set if current active video source is frozen */
-        EIsFrozen = ( 1<<3 ),
-        /** Set if sharing is active */
-        EIsSharing = ( 1<<4 ),
-        /** Set if sharing is being initialized */
-        EIsInitializingShare = ( 1<<5 ),
-        /** Set if device's primary camera is being used by VT application */
-        EIsPrimaryCameraInUse = ( 1<<6 ),
-        /** Set if device's secondary camera is being used by VT application */
-        EIsSecondaryCameraInUse = ( 1<<7 ),
-        /** Set if it is not possible to share */
-        EIsNotAbleToShare = ( 1<<8 ),
-        /** Set if device has primary camera */
-        EHasPrimaryCamera = ( 1<<9 ),
-        /** Set if device has secondary camera */
-        EHasSecondaryCamera = ( 1<<10 ),
-        /** Set if current video source supports contrast setting */
-        EIsContrastSupported = ( 1<<11 ),
-        /** Set if current video source supports white balance setting */
-        EIsWhiteBalanceSupported = ( 1<<12 ),
-        /** Set if current video source supports color tone setting */
-        EIsColorToneSupported = ( 1<<13 ),
-        /** Set if current video source supports brightness setting */
-        EIsBrightnessSupported = ( 1<<14 ),
-        /** Set if video is permanently stopped*/
-        EIsVideoPermanentlyStopped = ( 1<<15 )
-        };
-
-    // Reference to engine media instance.
-    MVtEngMedia& iMedia;
-
-    // Reference to engine command handler instance.
-    MVtEngCommandHandler& iCommandHandler;
-    };
-
-#include "tlcvtmediastate.inl"
-
-#endif // T_LCVTMEDIASTATE_H
--- a/vtuis/lcvtplugin/inc/common/tlcvtmediastate.inl	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,171 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Media state class inline methods.
-*
-*/
-
-
-// -----------------------------------------------------------------------------
-// TLcVtMediaState::TLcVtMediaState
-// -----------------------------------------------------------------------------
-//
-TLcVtMediaState::TLcVtMediaState( MVtEngMedia& aMedia,
-    MVtEngCommandHandler& aCommandHandler  )
-    : iMedia( aMedia ), iCommandHandler( aCommandHandler )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtMediaState::IsVideo
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtMediaState::IsVideo() const
-    {
-    return IsFlag( EIsVideo );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtMediaState::HasCamera
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtMediaState::HasCamera() const
-    {
-    return IsFlag( EHasCamera );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtMediaState::IsFreezeSupported
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtMediaState::IsFreezeSupported() const
-    {
-    return IsFlag( EIsFreezeSupported );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtMediaState::IsFrozen
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtMediaState::IsFrozen() const
-    {
-    return IsFlag( EIsFrozen );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtMediaState::IsSharing
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtMediaState::IsSharing() const
-    {
-    return IsFlag( EIsSharing );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtMediaState::IsInitializingShare
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtMediaState::IsInitializingShare() const
-    {
-    return IsFlag( EIsInitializingShare );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtMediaState::IsPrimaryCameraInUse
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtMediaState::IsPrimaryCameraInUse() const
-    {
-    return IsFlag( EIsPrimaryCameraInUse );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtMediaState::IsSecondaryCameraInUse
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtMediaState::IsSecondaryCameraInUse() const
-    {
-    return IsFlag( EIsSecondaryCameraInUse );
-    }
-    
-// -----------------------------------------------------------------------------
-// TLcVtMediaState::IsNotAbleToShare
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtMediaState::IsNotAbleToShare() const
-    {
-    return IsFlag( EIsNotAbleToShare );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtMediaState::HasPrimaryCamera
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtMediaState::HasPrimaryCamera() const
-    {
-    return IsFlag( EHasPrimaryCamera );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtMediaState::HasSecondaryCamera
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtMediaState::HasSecondaryCamera() const
-    {
-    return IsFlag( EHasSecondaryCamera );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtMediaState::IsContrastSupported
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtMediaState::IsContrastSupported() const
-    {
-    return IsFlag( EIsContrastSupported );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtMediaState::IsWhiteBalanceSupported
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtMediaState::IsWhiteBalanceSupported() const
-    {
-    return IsFlag( EIsWhiteBalanceSupported );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtMediaState::IsColorToneSupported
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtMediaState::IsColorToneSupported() const
-    {
-    return IsFlag( EIsColorToneSupported );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtMediaState::IsBrightnessSupported
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtMediaState::IsBrightnessSupported() const
-    {
-    return IsFlag( EIsBrightnessSupported );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtMediaState::IsVideoPermanentlyStopped
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtMediaState::IsVideoPermanentlyStopped() const
-    {
-    return IsFlag( EIsVideoPermanentlyStopped );
-    }
--- a/vtuis/lcvtplugin/inc/common/tlcvtstates.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,333 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  LC VT states class definition.
-*
-*/
-
-
-#ifndef T_LCVTSTATES_H
-#define T_LCVTSTATES_H
-
-#include <e32base.h>
-
-#include "tlcvtmediastate.h"
-#include "tlcvtaudiostate.h"
-
-class CVtEngModel;
-class MVtEngCameraPreferences;
-
-/**
- *  TLcVtStates
- *
- *  Contains information about Application UI's current status.
- *
- *  @since S60 v3.2
- */
-NONSHARABLE_CLASS( TLcVtStates ) : public TLcVtFlagContainer
-    {
-
-public: // enumerations
-
-    /**
-    * Lc VT plugin execution state (will be set by the plugin state classes)
-    */
-    enum TLcVtExecState
-        {
-        EExecStateStarting,
-        EExecStateRunning,
-        EExecStateResetting,
-        EExecStateFinalized
-        };
-
-public:
-
-    /**
-     * Constructor.
-     */
-    TLcVtStates( CVtEngModel& aModel );
-
-    /**
-     * Updates UI states.
-     */
-    void Update();
-
-    /**
-     * Return whether or not ColorToneSetting
-     * is supported by current camera.
-     *
-     * @return ETrue if at least one color tone setting is available,
-     * EFalse otherwise.
-     */
-    TBool IsColorToneSettingAvailable() const;
-
-    /**
-     * Return whether or not WhiteBalanceSetting
-     * is supported by current camera.
-     *
-     * @return ETrue if at least one white balance setting is available,
-     * EFalse otherwise.
-     */
-    TBool IsWhiteBalanceSettingAvailable() const;
-
-    /**
-     * Return whether or not ontrast setting
-     * is supported by current camera.
-     *
-     * @return ETrue if at contrast setting is available,
-     * EFalse otherwise.
-     */
-    TBool IsContrastSettingAvailable() const;
-
-    /**
-     * Return whether or not brightness setting
-     * is supported by current camera.
-     *
-     * @return ETrue if brightness setting is available,
-     * EFalse otherwise.
-     */
-    TBool IsBrightnessSettingAvailable() const;
-
-    /**
-     * Returns reference to media state object
-     *
-     * @return Reference to media state object.
-     */
-    inline const TLcVtMediaState& MediaState() const;
-
-    /**
-     * Returns reference to audio state object
-     *
-     * @return Reference to audio state object.
-     */
-    inline const TLcVtAudioState& AudioState() const;
-
-    /**
-     * Sets or clears EIsCLIReceived
-     *
-     * @param aSet ETrue if setting will be set, EFalse otherwise.
-     */
-    inline void SetCLIReceived( TBool aSet );
-
-    /**
-     * Check if EIsCLIReceived is set
-     *
-     * @return ETrue if EIsCLIReceived is set EFalse otherwise
-     */
-    inline TBool IsCLIReceived() const;
-
-    /**
-     * Sets or clears EIsLayoutChangeNeeded
-     *
-     * @param aSet ETrue if setting will be set, EFalse otherwise.
-     */
-    inline void SetLayoutChangeNeeded( TBool aSet );
-
-    /**
-     * Check if EIsLayoutChangeNeeded is set
-     *
-     * @return ETrue if EIsLayoutChangeNeeded is set EFalse otherwise
-     */
-    inline TBool IsLayoutChangeNeeded() const;
-    
-    /**
-     * Sets or clears EIsDeviceLockOn
-     *
-     * @param aSet ETrue if setting will be set, EFalse otherwise.
-     */
-    inline void SetDeviceLockOn( TBool aSet );
-
-    /**
-     * Check if EIsDeviceLockOn is set
-     *
-     * @return ETrue if EIsDeviceLockOn is set EFalse otherwise
-     */
-    inline TBool IsDeviceLockOn() const;
-
-    /**
-     * Sets or clears EDetailsReceived
-     *
-     * @param aSet ETrue if setting will be set, EFalse otherwise.
-     */
-    inline void SetDetailsReceived( TBool aSet );
-
-    /**
-     * Check if EDetailsReceived is set
-     *
-     * @return ETrue if EDetailsReceived is set EFalse otherwise
-     */
-    inline TBool IsDetailsReceived() const;
-
-    /**
-     * Sets or clears EWaitingForFirstFrame
-     *
-     * @param aSet ETrue if setting will be set, EFalse otherwise.
-     */
-    inline void SetWaitingForFirstFrame( TBool aSet );
-
-    /**
-     * Check if EWaitingForFirstFrame is set
-     *
-     * @return ETrue if EWaitingForFirstFrame is set EFalse otherwise
-     */
-    inline TBool IsWaitingForFirstFrame() const;
-
-    /**
-     * Sets or clears EUseSQCif
-     *
-     * @param aSet ETrue if setting will be set, EFalse otherwise.
-     */
-    inline void SetUseSQCif( TBool aSet );
-
-    /**
-     * Check if EUseSQCif is set
-     *
-     * @return ETrue if EUseSQCif is set EFalse otherwise
-     */
-    inline TBool IsUseSQCif() const;
-
-    /**
-     * Sets or clears EIsThisApplicationForeground
-     *
-     * @param aSet ETrue if setting will be set, EFalse otherwise.
-     */
-    inline void SetThisApplicationForeground( TBool aSet );
-
-    /**
-     * Check if EIsThisApplicationForeground is set
-     *
-     * @return ETrue if EIsThisApplicationForeground is set EFalse otherwise
-     */
-    inline TBool IsThisApplicationForeground() const;
-
-    /**
-     * Sets or clears EIsDisableBlindSetting
-     *
-     * @param aSet ETrue if setting will be set, EFalse otherwise.
-     */
-    inline void SetDisableBlindSetting( TBool aSet );
-
-    /**
-     * Check if EIsDisableBlindSetting is set
-     *
-     * @return ETrue if EIsDisableBlindSetting is set EFalse otherwise
-     */
-    inline TBool IsDisableBlindSetting() const;
-
-    /**
-     * Sets or clears EExecShowCameraInUse
-     *
-     * @param aSet ETrue if setting will be set, EFalse otherwise.
-     */
-    inline void SetExecShowCameraInUse( TBool aSet );
-
-    /**
-     * Check if EExecShowCameraInUse is set
-     *
-     * @return ETrue if EExecShowCameraInUse is set EFalse otherwise
-     */
-    inline TBool IsExecShowCameraInUse() const;
-
-    /**
-     * Sets or clears EIsWaitingCall
-     *
-     * @param aSet ETrue if setting will be set, EFalse otherwise.
-     */
-    inline void SetWaitingCall( TBool aSet );
-
-    /**
-     * Check if there is waiting video/voice call.
-     *
-     * @return ETrue if waiting call is ongoing, EFalse otherwise
-     */
-    inline TBool IsWaitingCall() const;
-
-    /**
-    * Returns application's execution state.
-    * @return Application's current execution state.
-    */
-    inline TLcVtExecState ExecState() const;
-    
-    /**
-    * Sets application's execution state.
-    * @param aState Application's new execution state.
-    */
-    inline void SetExecState( const TLcVtExecState aState );
-    
-private: // methods to be accessed only by certain classes (see friends)
-
-    
-
-private:
-
-    // Enumeration for ui state flags.
-    enum TFlags
-        {
-        /** Set if CLI is received */
-        EIsCLIReceived = ( 1<<0 ),
-
-        /** Set if layout change is needed */
-        EIsLayoutChangeNeeded = ( 1<<1 ),
-
-        /** Set if device lock is on */
-        EIsDeviceLockOn = ( 1<<2 ),
-
-        /** Set if details have been received */
-        EDetailsReceived = ( 1<<3 ),
-
-        /** Set if waiting for first frame */
-        EWaitingForFirstFrame = ( 1<<4 ),
-
-        /** Set if SQCIF is being used */
-        EUseSQCif = ( 1 << 5 ),
-
-        /** Set if application on foreground */
-        EIsThisApplicationForeground = ( 1<<6 ),
-
-        /** Set if blind setting should be temporarily disabled.
-            This is used in preventing blind bitmap from flashing
-            while operations involving multiple engine commands/events
-            take place (e.g. 'Swap image places' and layout switch). */
-        EIsDisableBlindSetting = ( 1<<7 ),
-
-        /** Set if camera in use note should be shown. */
-        EExecShowCameraInUse = ( 1<<8 ),
-
-        /** Set if waiting call exists */
-        EIsWaitingCall = ( 1<<9 ),
-        };
-
-    // Engine media state
-    TLcVtMediaState iMediaState;
-
-    // Engine audio state
-    TLcVtAudioState iAudioState;
-
-    // Refrence to engine
-    CVtEngModel& iModel;
-
-    // Refrence to camera prefrences
-    MVtEngCameraPreferences* iCameraPref;
-
-    // Application execution state
-    TLcVtExecState iExecState;    
-
-private: // friends
-
-    //friend class TLcVtStateBase;
-
-    };
-
-#include "tlcvtstates.inl"
-
-#endif // T_LCVTSTATES_H
--- a/vtuis/lcvtplugin/inc/common/tlcvtstates.inl	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,242 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  LC VT states class inline methods.
-*
-*/
-
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::MediaState
-// -----------------------------------------------------------------------------
-//
-const TLcVtMediaState& TLcVtStates::MediaState() const
-    {
-    return iMediaState;
-    }
-
-// -----------------------------------------------------------------------------
-// TVtUiStates::AudioState
-// -----------------------------------------------------------------------------
-//
-const TLcVtAudioState& TLcVtStates::AudioState() const
-    {
-    return iAudioState;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::SetCLIReceived
-// -----------------------------------------------------------------------------
-//
-void TLcVtStates::SetCLIReceived( TBool aSet )
-    {
-    aSet ? SetFlag( EIsCLIReceived ) : ClearFlag( EIsCLIReceived );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::IsCLIReceived
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStates::IsCLIReceived() const
-    {
-    return IsFlag( EIsCLIReceived );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::SetLayoutChangeNeeded
-// -----------------------------------------------------------------------------
-//
-void TLcVtStates::SetLayoutChangeNeeded( TBool aSet )
-    {
-    aSet ? SetFlag( EIsLayoutChangeNeeded ) :
-        ClearFlag( EIsLayoutChangeNeeded );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::IsLayoutChangeNeeded
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStates::IsLayoutChangeNeeded() const
-    {
-    return IsFlag( EIsLayoutChangeNeeded );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::SetDeviceLockOn
-// -----------------------------------------------------------------------------
-//
-void TLcVtStates::SetDeviceLockOn( TBool aSet )
-    {
-    aSet ? SetFlag( EIsDeviceLockOn ) :
-        ClearFlag( EIsDeviceLockOn );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::IsDeviceLockOn
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStates::IsDeviceLockOn() const
-    {
-    return IsFlag( EIsDeviceLockOn );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::SetDetailsReceived
-// -----------------------------------------------------------------------------
-//
-void TLcVtStates::SetDetailsReceived( TBool aSet )
-    {
-    aSet ? SetFlag( EDetailsReceived ) :
-        ClearFlag( EDetailsReceived );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::IsDetailsReceived
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStates::IsDetailsReceived() const
-    {
-    return IsFlag( EDetailsReceived );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::SetWaitingForFirstFrame
-// -----------------------------------------------------------------------------
-//
-void TLcVtStates::SetWaitingForFirstFrame( TBool aSet )
-    {
-    aSet ? SetFlag( EWaitingForFirstFrame ) :
-        ClearFlag( EWaitingForFirstFrame );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::IsWaitingForFirstFrame
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStates::IsWaitingForFirstFrame() const
-    {
-    return IsFlag( EWaitingForFirstFrame );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::SetUseSQCif
-// -----------------------------------------------------------------------------
-//
-void TLcVtStates::SetUseSQCif( TBool aSet )
-    {
-    aSet ? SetFlag( EUseSQCif ) :
-        ClearFlag( EUseSQCif );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::IsUseSQCif
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStates::IsUseSQCif() const
-    {
-    return IsFlag( EUseSQCif );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::SetThisApplicationForeground
-// -----------------------------------------------------------------------------
-//
-void TLcVtStates::SetThisApplicationForeground( TBool aSet )
-    {
-    aSet ? SetFlag( EIsThisApplicationForeground ) :
-        ClearFlag( EIsThisApplicationForeground );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::IsThisApplicationForeground
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStates::IsThisApplicationForeground() const
-    {
-    return IsFlag( EIsThisApplicationForeground );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::SetDisableBlindSetting
-// -----------------------------------------------------------------------------
-//
-void TLcVtStates::SetDisableBlindSetting( TBool aSet )
-    {
-    aSet ? SetFlag( EIsDisableBlindSetting ) :
-        ClearFlag( EIsDisableBlindSetting );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::IsDisableBlindSetting
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStates::IsDisableBlindSetting() const
-    {
-    return IsFlag( EIsDisableBlindSetting );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::SetExecShowCameraInUse
-// -----------------------------------------------------------------------------
-//
-void TLcVtStates::SetExecShowCameraInUse( TBool aSet )
-    {
-    aSet ? SetFlag( EExecShowCameraInUse ) :
-        ClearFlag( EExecShowCameraInUse );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::IsExecShowCameraInUse
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStates::IsExecShowCameraInUse() const
-    {
-    return IsFlag( EExecShowCameraInUse );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates:::SetWaitingCall
-// -----------------------------------------------------------------------------
-//
-void TLcVtStates::SetWaitingCall( TBool aSet )
-    {
-    aSet ? SetFlag( EIsWaitingCall ) :
-        ClearFlag( EIsWaitingCall );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::IsWaitingCall
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStates::IsWaitingCall() const
-    {
-    return IsFlag( EIsWaitingCall );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::SetExecState
-// -----------------------------------------------------------------------------
-//
-void TLcVtStates::SetExecState( const TLcVtExecState aState )
-    {
-    iExecState = aState;
-    }
-// -----------------------------------------------------------------------------
-// TLcVtStates::ExecState
-// -----------------------------------------------------------------------------
-//
-TLcVtStates::TLcVtExecState TLcVtStates::ExecState() const
-    {
-    return iExecState;
-    }
-
--- a/vtuis/lcvtplugin/inc/control/clcvtlocalvideoplayer.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  LiveComm Videotelephony's Local Video Player
-*
-*/
-#ifndef LCVTLOCALVIDEOPLAYER_H
-#define LCVTLOCALVIDEOPLAYER_H
-
-#include <e32base.h>
-#include "clcvtvideoplayerbase.h"
-
-
-// FORWARD DECLARATIONS
-class CLcVtSession;
-class TVtCameraHandler;
-class MLcWindow;
-class MLcAudioControl;
-
-class CLcVtLocalVideoPlayer : public CLcVtVideoPlayerBase
-    {
-public: // Constructors and destructor
-    
-    static CLcVtLocalVideoPlayer* NewL( 
-        CLcVtSession* avtSession,
-        MLcAudioControl& aLcAudioControl,
-        TVtCameraHandler& aCameraHandler);
-    
-    ~CLcVtLocalVideoPlayer();
-    
-public: // from CLcVtVideoPlayerBase
-    
-    TLcVideoPlayerState LcVideoPlayerState() const;
-    
-    TBool LcIsPlayingL();
-    
-    void LcPlayL( TLcVideoPlayerSource aSource=ECameraSource );
-    
-    void LcPauseL();
-
-    MLcCameraControl* LcCameraControl();
-    
-    MLcZoomControl* LcZoomControl();
-
-    MLcBrightnessControl* LcBrightnessControl();
-    
-    void SetLcWindowRectL( TRect aRect );
-    
-    void SetLcWindowOrientationL( 
-        TLcWindowOrientation aOrientation );
-
-public:
-    TBool IsOrientationChanged();
-    
-private: // Constructors
-    
-    CLcVtLocalVideoPlayer(
-        CLcVtSession* avtSession,
-        MLcAudioControl& aLcAudioControl,
-        TVtCameraHandler& aCameraHandler);
-    
-    void ConstructL();
-    
-private: // Data
-    
-    TVtCameraHandler& iCameraHandler;
-    TBool           iOrientationChanged;
-    
-    };
-
-
-#endif //LCVTLOCALVIDEOPLAYER_H
--- a/vtuis/lcvtplugin/inc/control/clcvtremotevideoplayer.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  LiveComm Videotelephony's Remte Video Player
-*
-*/
-#ifndef LCVTREMOTEVIDEOPLAYER_H
-#define LCVTREMOTEVIDEOPLAYER_H
-
-#include <e32base.h>
-#include "clcvtvideoplayerbase.h"
-
-class CLcVtRemoteVideoPlayer : public CLcVtVideoPlayerBase
-    {
-public: // Constructors and destructor
-    
-    static CLcVtRemoteVideoPlayer* NewL( 
-            CLcVtSession* avtSession,
-            MLcAudioControl& aLcAudioControl );
-
-    
-    ~CLcVtRemoteVideoPlayer();
- 
-    
-public: // from CLcVtVideoPlayerBase
-    
-    TLcVideoPlayerState LcVideoPlayerState() const;
-    
-    TBool LcIsPlayingL();    
-
-    void SetLcWindowRectL( TRect aRect );
-    
-    
-private: // Constructors
-    
-    CLcVtRemoteVideoPlayer( 
-            CLcVtSession* avtSession,
-            MLcAudioControl& aLcAudioControl );
-    
-    void ConstructL();
-    
-private: // Data    
-    };
-
-#endif //LCVTREMOTEVIDEOPLAYER_H
--- a/vtuis/lcvtplugin/inc/control/clcvtvideoplayerbase.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  LiveComm Videotelephony's Video Player Base Class
-*
-*/
-
-#ifndef LCVTPLAYERS_H
-#define LCVTPLAYERS_H
-
-#include <e32base.h>
-
-#include <lcvideoplayer.h>
-#include <lcwindow.h>
-#include <lcaudiocontrol.h>
-#include <lcsourcefilecontrol.h>
-#include <lcdestinationfilecontrol.h>
-#include "clcvtsession.h"
-
-    
-class CLcVtVideoPlayerBase : public CBase, public MLcVideoPlayer, public MLcWindow
-    {
-    
-public: // Constructors and destructor
-    
-    ~CLcVtVideoPlayerBase();
-    
-public: // from MLcVideoPlayer
-    
-    //TLcVideoPlayerState LcVideoPlayerState() const;
-    
-    //TBool LcIsPlayingL();
-    
-    void LcPlayL( TLcVideoPlayerSource aSource=ECameraSource );
-    
-    void LcPauseL();
-
-    MLcWindow* LcWindow();
-
-    MLcCameraControl* LcCameraControl();
-    
-    MLcSourceFileControl* LcSourceFileControl();
-    
-    MLcDestinationFileControl* LcDestinationFileControl();
-    
-    MLcAudioControl* LcAudioControl();
-
-    MLcZoomControl* LcZoomControl();
-
-    MLcBrightnessControl* LcBrightnessControl();
-
-
-public: // from MLcWindow
-    
-    void EnableLcWindowL( TBool aEnable );
-    
-    TBool IsLcWindowEnabled();        
-    
-    void SetLcWindowRectL( TRect aRect );
-    
-    TRect LcWindowRect();
-    
-    void SetLcWindowOrientationL( 
-        TLcWindowOrientation aOrientation );
-    
-    TLcWindowOrientation LcWindowOrientationL();
-    
-protected: // Constructors
-    
-    CLcVtVideoPlayerBase(
-        CLcVtSession* avtSession,
-        MLcAudioControl& aLcAudioControl );
-    
-protected: // Data        
-    
-    CLcVtSession* ivtSession; // Not owned
-    
-    MLcAudioControl& iLcAudioControl;
-
-    TBool iIsWindowEnabled;
-    
-    TRect iWindowRect;
-    
-    MLcWindow::TLcWindowOrientation iWindowOrientation;
-    };
-   
-
-#endif // LCVTPLAYERS_H
-
-// end of file
--- a/vtuis/lcvtplugin/inc/control/tlcvtcamerahandler.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  LiveComm Videotelephony's Camera Handler
-*
-*/
-
-#ifndef LCVTCAMERAHANDLER_H
-#define LCVTCAMERAHANDLER_H
-
-#include <lccameracontrol.h>
-#include <lcbrightnesscontrol.h>
-#include <lczoomcontrol.h>
-
-class CLcVtSession;
-
-class TVtCameraHandler :    
-    public MLcCameraControl,
-    public MLcBrightnessControl,
-    public MLcZoomControl
-    {   
-    public: // From MLcCameraControl
-        
-        TInt LcCameraCountL();
-
-        TInt CurrentLcCameraIndex();
-        
-        void ToggleLcCameraL();       
-
-    public: // From MLcBrightnessControl
-        
-        TInt MinLcBrightnessL();
-
-        TInt MaxLcBrightnessL();
-
-        TInt LcBrightnessL();
-
-        void SetLcBrightnessL( TInt aValue );
-        
-        void IncreaseLcBrightnessL();
-        
-        void DecreaseLcBrightnessL();
-        
-    public: // From MLcZoomControl
-        
-        TInt MinLcZoomL();
-
-        TInt MaxLcZoomL();
-
-        TInt LcZoomValueL();
-
-        void SetLcZoomValueL( TInt aValue );
-        
-        void LcZoomInL();
-        
-        void LcZoomOutL();     
-    
-    public:
-        
-        TVtCameraHandler();
-        
-        void SetSession( CLcVtSession* aSession );        
-
-    private:
-    
-        enum TCurrentCamera
-            {
-            ECameraNotAvailable = KErrNotFound,
-            EBackCamera = 0, 
-            EFrontCamera = 1
-            };         
-   
-    private: // Data
-        
-        CLcVtSession* ivtSession; // Not owned
- 
-    };
-
-#endif //LCVTCAMERAHANDLER_H
--- a/vtuis/lcvtplugin/inc/states/tlcvtpluginstates.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,279 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Concrete VT plugin state classes
-*
-*/
-
-
-#ifndef T_LCVTPLUGINSTATES_H
-#define T_LCVTPLUGINSTATES_H
-
-#include "tlcvtstatebase.h"
-#include <babitflags.h>
-#include <vtengcommands.h>
-
-
-/**
-*  Initial application state. Responsible for startup phase 1 and
-*  startup phase 2 (see EVtUiAppUiStartup in CVtUiAppUi.cpp).
-*  Certain other state changes are required for phase 2 and history
-*  of their reception is handled with precondition flags.
-*
-*  @since S60 v3.2
-*/
-class TLcVtStateStarting : public TLcVtStateBase
-    {
-public:
-    /**
-    * returns singleton instance of TLcVtStateStarting
-    * @param aCtx state context
-    * @param aUiStates UI states
-    * @return singleton
-    */
-    static TLcVtStateStarting* InstanceL(
-        MLcVtStateContext& aCtx,
-        TLcVtStates& aUiStates );
-
-public: // from TLcVtStateBase
-
-    /** @see TLcVtStateBase */
-    virtual void LcVtStartupPhase1DoneL();
-
-    /** @see TLcVtStateBase */
-    virtual void LcVtStartupPhase2DoneL();
-
-    /** @see TLcVtStateBase */
-    virtual TEventResponse HandleVtEventL( TInt aEvent );
-
-    /** @see TLcVtStateBase */
-    virtual TEventResponse HandleCommandL( const TInt aCommand );
-
-    /** @see TLcVtStateBase */
-    virtual TBool HandleForegroundChangedL( TBool aIsForeground );
-
-    /** @see TLcVtStateBase */
-    virtual TBool PreHandleForegroundChangedL( TBool aIsForeground );
-
-private: // from TLcVtStateBase
-
-    /** @see TLcVtStateBase */
-    virtual void OpenL();
-
-    /** @see TLcVtStateBase */
-    virtual void Close();
-
-private: // new methods
-
-    void CheckSessionStateL();
-    
-    static TInt AsynchOpen( TAny* aAny );
-    
-    void DoOpenL();
-    
-    /** Preconditions that must be passed in order to proceed
-     * to Phase 2 in startup.
-     */
-    enum TPreconditions
-        {
-        /** waiting for CLI from engine*/
-        EWaitingCLI,
-        /** waiting for phase1 to complete */
-        EWaitingPhase1ToComplete,
-        /** waiting for engine to get proper state */
-        EWaitingSessionState
-    };
-
-    /**
-    * Clears precondition passed as argument and checks if any
-    * preconditions hold and if not proceeds to phase 2 of startup.
-    */
-    void CheckPhase2StartupL( const TPreconditions aClearCondition );
-    
-    void HandleCLIReceivedL();
-
-private: // constructors and destructors
-
-    // c++ constructor
-    TLcVtStateStarting(
-        MLcVtStateContext& aCtx,
-        TLcVtStates& aUiStates );
-
-    // Destructor
-    virtual ~TLcVtStateStarting();
-
-private: // data members
-
-    // Precondition for state change to running
-    TBitFlags8 iPreconditions;
-
-    // Singleton
-    static TLcVtStateStarting* iInstance;
-    
-    // Starts phase1 startup in state state context. Needed because
-    // initial state is opened from within state context construction.
-    CAsyncCallBack*     iStartCallback;
-    };
-
-/**
-*  Application state that is active in normal operation.
-*
-*  @since S60 v3.2
-*/
-class TLcVtStateRunning : public TLcVtStateBase
-    {
-public:
-    /**
-    * returns singleton instance of TLcVtStateRunning
-    * @param aCtx state context
-    * @param aUiStates UI states
-    * @return singleton
-    */
-    static TLcVtStateRunning* InstanceL(
-        MLcVtStateContext& aCtx,
-        TLcVtStates& aUiStates );
-
-public: // from TLcVtStateBase
-
-    /** @see TLcVtStateBase */
-    virtual TEventResponse HandleVtEventL( TInt aEvent );
-
-    /** @see TLcVtStateBase */
-    virtual TEventResponse HandleCommandL( const TInt aCommand );
-
-    /** @see TLcVtStateBase */
-    virtual TBool HandleForegroundChangedL( TBool aIsForeground );
-
-    /** @see TLcVtStateBase */
-    virtual TBool PreHandleForegroundChangedL( TBool aIsForeground );
-    /** @see TLcVtStateBase */
-    //virtual void HandleLayoutChangedL();
-
-    /** @see TLcVtStateBase */
-    //virtual void StartDtmfTone( const TChar& aTone );
-
-    /** @see TLcVtStateBase */
-    //virtual void StopDtmfTone();
-
-    /** @see TLcVtStateBase */
-    virtual void OpenL();
-
-private: // from TLcVtStateBase
-    /** @see TLcVtStateBase */
-    virtual void Close();
-
-private: // constructors and destructors
-
-    // c++ constructor
-    TLcVtStateRunning(
-        MLcVtStateContext& aCtx,
-        TLcVtStates& aUiStates );
-
-    // Destructor
-    virtual ~TLcVtStateRunning();
-
-private: // new functions
-
-    /** Requests call handling subsystem to initiate a voice call.
-     * Starts shutdown of the application.
-     */
-    void CreateVoiceCallL();
-
-    /** Dials emergency call and starts shutdown */
-    void DialEmergencyCallL();
-    
-    void ShutdownWithEngineCommandL( const TInt aCommand );
-
-private: // data members
-    // singleton
-    static TLcVtStateRunning* iInstance;
-    
-    };
-
-/**
-*  Application state that is active during shutdown.
-*
-*  @since S60 v3.2
-*/
-class TLcVtStateResetting : public TLcVtStateBase
-    {
-public:
-    /**
-    * returns singleton instance of TLcVtStateResetting
-    * @param aCtx state context
-    * @param aUiStates UI states
-    * @param aCommand engine command to send when resetting state activates
-    * @return singleton
-    */
-    static TLcVtStateResetting* InstanceL(
-        MLcVtStateContext& aCtx,
-        TLcVtStates& aUiStates,
-        const TVtEngCommandId aCommand = KVtEngCommandNone );
-
-public: // from TLcVtStateBase
-
-    /** @see TLcVtStateBase */
-    virtual void LcVtStartupFailedL();
-
-    /** @see TLcVtStateBase */
-    virtual void ShutdownDoneL();
-
-    /** @see TLcVtStateBase */
-    virtual TEventResponse HandleVTCommandPerformedL(
-        TVtEngCommandId aCommand,
-        const TInt aError );
-
-    /** @see TLcVtStateBase */
-    virtual TEventResponse HandleVtEventL( TInt aEvent );
-
-    /** @see TLcVtStateBase */
-    virtual TEventResponse HandleCommandL( const TInt aCommand );
-
-    /** @see TLcVtStateBase */
-    virtual TBool HandleForegroundChangedL( TBool aIsForeground );
-
-    /** @see TLcVtStateBase */
-    virtual TBool PreHandleForegroundChangedL( TBool aIsForeground );
-
-    /** @see TLcVtStateBase */
-    //virtual void HandleLayoutChangedL();
-
-private: // from TLcVtStateBase
-
-    /** @see TLcVtStateBase */
-    virtual void OpenL();
-
-    /** @see TLcVtStateBase */
-    virtual void Close();
-
-private: // constructors and destructors
-
-    // c++ constructor
-    TLcVtStateResetting(
-        MLcVtStateContext& aCtx,
-        TLcVtStates& aUiStates,
-        const TVtEngCommandId aCommand = KVtEngCommandNone );
-
-    // Destructor
-    virtual ~TLcVtStateResetting();
-
-private: // data members
-
-    // Singleton
-    static TLcVtStateResetting* iInstance;
-    
-    // Used in user originated shutdown (end active call/switch to voice)
-    TVtEngCommandId iCommand;
-    };
-
-#endif // T_LCVTPLUGINSTATES_H
--- a/vtuis/lcvtplugin/inc/states/tlcvtstatebase.h	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,248 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Base class for application states.
-*
-*/
-
-
-#ifndef T_LCVTSTATEBASE_H
-#define T_LCVTSTATEBASE_H
-
-#include <e32base.h>
-#include <mvtengsessioninfo.h>
-#include "mlcvtstatecontext.h"
-#include "mlcvtshutterobserver.h"
-#include "tlcvtstates.h"
-
-/**
-* Base class for application states related to application startup, normal
-* operation and shutdown. AppUi delegates decision making by forwarding
-* events/commands it receives to current state.
-* Not all event handlers declared by the base class are applicable in
-* all concrete states. All methods returning TEventResponse imply that it may
-* consume the event completely and caller should not process it further.
-*
-* It should be kept in mind that as new functionality is added to application,
-* state classes may need changes if e.g. handling of specific event should be
-* allowed in appUi. By default event handler in specific state may consume all
-* events. Note that in this context e.g. HandleCommandL is considered as an
-* event handler.
-*
-* @since S60 v3.2
-*/
-class TLcVtStateBase : public MLcVtShutterObserver
-    {
-public: // new functions
-
-    /**
-    * Return value from state's event handlers.
-    */
-    enum TEventResponse
-        {
-        /** Event was handled by a state and should
-         *  not be further processed by caller.
-         */
-        EEventHandled,
-        /** Event can be handled by caller. */
-        EEventNotHandled
-    };
-
-    /**
-    * Performs state dependent actions when phase 1 of
-    * startup is completed.
-    */
-    virtual void LcVtStartupPhase1DoneL();
-
-    /**
-    * Performs state dependent actions when startup fails.
-    */
-    virtual void LcVtStartupFailedL();
-
-    /**
-    * Performs state dependent actions when phase 2 of
-    * startup is completed.
-    */
-    virtual void LcVtStartupPhase2DoneL();
-
-    /**
-    * Handles completion of shutdown.
-    */
-    virtual void ShutdownDoneL();
-
-    /**
-    * Handles completion of an VT engine command.
-    * @param aCommand completed command
-    * @param aError error
-    * @return event response, is caller allowed to handle event
-    */
-    virtual TEventResponse HandleVTCommandPerformedL(
-        const TVtEngCommandId aCommand,
-        const TInt aError );
-
-    /**
-    * Handles event from the engine.
-    * @param aEvent
-    * @return event response, is caller allowed to handle event
-    */
-    virtual TEventResponse HandleVtEventL( const TInt aEvent );
-
-    /**
-    * Handles command from the user (or application framework).
-    * @param aCommand
-    * @return event response, is caller allowed to handle event
-    */
-    virtual TEventResponse HandleCommandL( const TInt aCommand );
-
-    /**
-    * Performs state dependent actions for foreground change event.
-    * @param aIsForeground foreground status passed from UI framework
-    * @return ETrue if application should behave as in foreground
-    */
-    virtual TBool HandleForegroundChangedL( const TBool aIsForeground ) = 0;
-
-    /**
-    * Performs state dependent previous actions for foreground change event.
-    * @param aIsForeground foreground status passed from UI framework
-    * @return ETrue if application should behave as in foreground
-    */
-    virtual TBool PreHandleForegroundChangedL( const TBool aIsForeground ) = 0;
-    
-    /**
-    * Performs state dependent actions for layout change.
-    */
-    //virtual void HandleLayoutChangedL();    
-    
-    /**
-    * Sends DTMF tone if allowed by current state.
-    * @param aTone DTMF tone to send
-    */
-    //virtual void StartDtmfTone( const TChar& aTone );
-
-    /**
-    * Stops DTMF tone if allowed by current state.
-    */
-    //virtual void StopDtmfTone();
-
-    /**
-    * Sets initial application state.
-    * @param aCtx state context providing services to states
-    * @param aUiStates ui states
-    */
-    static void SetInitialStateL(
-        MLcVtStateContext& aCtx,
-        TLcVtStates& aUiStates);
-
-public: // from MLcVtShutterObserver
-
-    /**
-    * Handles 'shutdown ready' event.
-    */
-    virtual void HandleShutdownReady();
-    
-
-protected: // for concrete state classes
-
-    /**
-    * Destructor, for cleanup.
-    */
-    virtual ~TLcVtStateBase();
-
-    /**
-    * Performs entry action for a state.
-    */
-    virtual void OpenL() = 0;
-
-    /**
-    * Performs exit action for a state and deletes that state.
-    */
-    virtual void Close() = 0;
-
-    /**
-    * Sets current state.
-    */
-    void ChangeStateL( TLcVtStateBase& aNewState );
-
-    /**
-    * Sets transition to resetting state as cleanup item.
-    */
-    void CleanupResetPushL();
-
-    /**
-    * Starts shutdown when leave occurred.
-    */
-    static void TransitionToReset( TAny* aAny );
-
-
-    /**
-    * Ends the call if necessary and starts shutdown.
-    * @return ETrue if shutdown started.
-    */
-    TBool CheckEndActiveCallL();
-
-    /**
-    * Returns engine session state.
-    * @param aUpdate is state forced to update
-    * @return session state
-    */
-    MVtEngSessionInfo::TSessionState SessionState(
-        const TBool aUpdate ) const;
-
-    /**
-    * Delegates engine command execution to the state context.
-    */
-    template < typename T >
-    inline void ExecuteEngineCommand(
-        TInt aCommand, T& aParam );
-
-    /**
-    * Sets execution state.
-    */
-    void SetExecState( const TLcVtStates::TLcVtExecState aState );
-
-protected: // constructor
-
-    // c++ constructor
-    TLcVtStateBase( MLcVtStateContext& aCtx, TLcVtStates& aUiStates );
-
-
-private: // new functions
-
-    /**
-    * Updates applications lock state and sends to background if
-    * the device is locked.
-    */
-    void HandleDeviceLockEventL( const TBool aDeviceIsLocked );
-
-protected: // data members
-
-    // Context providing services to states
-    MLcVtStateContext&  iCtx;
-
-    // Various application specific state information
-    TLcVtStates&        iUiStates;
-
-    /** Prevents sending end call command to call handling if ETrue.
-     *  It is not allowed when call clearing is network originated.
-     */
-    
-    /**
-     * shutdown request received
-     */
-    static TBool iShutdownRequested;
-    
-    };
-
-#include "tlcvtstatebase.inl"
-
-#endif // T_LCVTSTATEBASE_H
--- a/vtuis/lcvtplugin/inc/states/tlcvtstatebase.inl	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Base class for application states.
-*
-*/
-
-
-template < typename T >
-inline void TLcVtStateBase::ExecuteEngineCommand( 
-    TInt aCommand, T& aParam )
-    {
-    TPtrC8 params( reinterpret_cast< TUint8* >( &aParam ), 
-        sizeof( T ) );    
-    TRAP_IGNORE( iCtx.DoExecuteCmdL( aCommand, &params ) );
-    }
--- a/vtuis/lcvtplugin/rom/lcvt.iby	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  IBY file
- *
-*/
-
- 
-#ifndef __LCVTPLUGIN_IBY__
-#define __LCVTPLUGIN_IBY__
-
-REM Video telephony plugin libraries
-
-#ifdef __CS_VIDEO_TELEPHONY
-
-ECOM_PLUGIN(lcvtengineplugin.dll,lcvtengineplugin.rsc)
-
-// Enabler for eclipsing ROM binaries
-data=ZSYSTEM\install\lcvtplugin_stub.sis           system\install\lcvtplugin_stub.sis
-
-#endif
-
-#endif
--- a/vtuis/lcvtplugin/src/base/clcvtactiveexec.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,164 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of the CLcVtActiveExec class.
-*
-*/
-
-
-
-// INCLUDE FILES
-#include "clcvtactiveexec.h"
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CLcVtActiveExec::CLcVtActiveExec
-// -----------------------------------------------------------------------------
-//
-CLcVtActiveExec::CLcVtActiveExec(
-        const TInt aPriority )
-    : CActive( aPriority )
-    {
-    CActiveScheduler::Add( this );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtActiveExec::~CLcVtActiveExec
-// -----------------------------------------------------------------------------
-//
-CLcVtActiveExec::~CLcVtActiveExec()
-    {
-    Cancel();
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtActiveExec::Start
-// -----------------------------------------------------------------------------
-//
-void CLcVtActiveExec::Start( 
-        TInt aStartState, 
-        MLcVtActiveExec& aExec )
-    {
-    Cancel();
-
-    iInitialState = aStartState;
-    iCurrentState = aStartState;
-    iNextState = aStartState;
-
-    iActiveExec = &aExec;
-
-    TRequestStatus* status = &iStatus;
-    User::RequestComplete( status, KErrNone );
-    SetActive();
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtActiveExec::InitialState
-// -----------------------------------------------------------------------------
-//
-TInt CLcVtActiveExec::InitialState() const
-    {
-    return iInitialState;
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtActiveExec::RequestStatus
-// -----------------------------------------------------------------------------
-//
-TInt CLcVtActiveExec::RequestStatus() const
-    {
-    return iStatus.Int();
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtActiveExec::RunL
-// -----------------------------------------------------------------------------
-//
-void CLcVtActiveExec::RunL()
-    {
-    User::LeaveIfError( iStatus.Int() );
-    TBool synch = ETrue;
-
-    // Execute to the next asynchronous operation.
-    while ( synch )
-        {
-        iCurrentState = iNextState;
-        if ( iCurrentState )
-            {
-            synch = iActiveExec->ActiveExecExecuteL( 
-                *this,
-                iCurrentState, 
-                iNextState, 
-                iStatus );
-
-            if ( !synch )
-                {
-                SetActive();
-                }
-            }
-        else
-            {   
-            iActiveExec->ActiveExecDone( *this, iInitialState );
-            if ( !IsActive() )
-                {
-                iInitialState = 0;
-                }
-
-            synch = EFalse;
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtActiveExec::DoCancel
-// -----------------------------------------------------------------------------
-//
-void CLcVtActiveExec::DoCancel()
-    {
-    if ( iActiveExec )
-        {
-        iActiveExec->ActiveExecCancel( *this, iCurrentState );
-        
-        iCurrentState = 0;
-        iActiveExec = NULL;
-        iInitialState = 0;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtActiveExec::RunError
-// -----------------------------------------------------------------------------
-//
-TInt CLcVtActiveExec::RunError( TInt aError )
-    {
-    if ( iActiveExec->ActiveExecContinue( *this, iCurrentState, aError ) )
-        {
-        iNextState = iCurrentState;
-
-        TRequestStatus* status = &iStatus;
-        User::RequestComplete( status, KErrNone );
-        SetActive();
-        }
-    else
-        {
-        if ( !IsActive() )
-            {
-            iInitialState = 0;
-            }
-        }
-    
-    return KErrNone;
-    }
-
-//  End of File  
--- a/vtuis/lcvtplugin/src/base/clcvtappshutter.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,258 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Class responsible for application exit.
-*
-*/
-
-
-#include "clcvtappshutter.h"
-#include "mlcvtshutterobserver.h"
-#include "mlcvtstatecontext.h"
-//#include "mlcvtnumbersource.h"
-//#include "tvtuilocalvariation.h"
-#include <cvtlogger.h>
-//#include <eikenv.h>
-//#include <AknUtils.h>
-#include <aknnotewrappers.h>
-#include <StringLoader.h>
-
-// singleton instance
-static CLcVtAppShutter* iAppShutter = NULL;
-
-// -----------------------------------------------------------------------------
-// CLcVtAppShutter::InstanceL
-// -----------------------------------------------------------------------------
-//
-CLcVtAppShutter* CLcVtAppShutter::InstanceL(
-    MLcVtShutterObserver& aObserver )
-    {
-    __VTPRINTENTER( "CLcVtAppShutter.InstanceL" )
-    if ( iAppShutter == NULL )
-        {
-        iAppShutter = new ( ELeave )
-                        CLcVtAppShutter( aObserver );
-        }
-    __VTPRINTEXIT( "CLcVtAppShutter.InstanceL" )
-    return iAppShutter;
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtAppShutter::CLcVtAppShutter
-// -----------------------------------------------------------------------------
-//
-CLcVtAppShutter::CLcVtAppShutter(
-    MLcVtShutterObserver& aObserver ) :
-    iPendingStateFlags( 0 ),
-    iObserver( aObserver )
-    {
-    iPendingStateFlags.Set( EShutterWaitingStart );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtAppShutter::~CLcVtAppShutter
-// -----------------------------------------------------------------------------
-//
-CLcVtAppShutter::~CLcVtAppShutter()
-    {
-    __VTPRINTENTER( "CLcVtAppShutter.~" )
-    // mark singleton null
-    iAppShutter = NULL;
-    delete iCallback;
-    __VTPRINTEXIT( "CLcVtAppShutter.~" )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtAppShutter::StartShutdown
-// Called when application may exit, i.e TVtUiStateResetting state receives
-// ShutdownDoneL message.
-// -----------------------------------------------------------------------------
-//
-void CLcVtAppShutter::StartShutdown()
-    {
-    __VTPRINTENTER( "CLcVtAppShutter.StartShutdown" )
-    iPendingStateFlags.Clear( EShutterWaitingStart );
-    ShutdownIfReadyAndDestroy();
-    __VTPRINTEXIT( "CLcVtAppShutter.StartShutdown" )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtAppShutter::ShutdownWithEmergencyCallL
-// -----------------------------------------------------------------------------
-//
-void CLcVtAppShutter::ShutdownWithEmergencyCallL(
-    MLcVtStateContext& aStateContext )
-    {
-    // Leaves if other than emergency number is supplied...
-    CEmergencyCaller* emergency = CEmergencyCaller::DialEmergencyL( *this,
-        aStateContext );
-    // therefore the flag and member variable must not be set before above call.
-    iPendingStateFlags.Set( EShutterWaitingEmergencyCallback );
-    iEmergencyCaller = emergency;
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtAppShutter::EmergencyCallDoneL
-// -----------------------------------------------------------------------------
-//
-void CLcVtAppShutter::EmergencyCallDoneL()
-    {
-    // Destruction of emergency handler is done asynchrounously to avoid
-    // problems that might
-    iPendingStateFlags.Clear( EShutterWaitingEmergencyCallback );
-    TCallBack cb( EmergencyResponseCallback, this );
-    EnqueCallbackL( cb );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtAppShutter::EmergencyResponseCallback
-// -----------------------------------------------------------------------------
-//
-TInt CLcVtAppShutter::EmergencyResponseCallback( TAny* aAny )
-    {
-    CLcVtAppShutter* shutter =
-        reinterpret_cast<CLcVtAppShutter*>( aAny );
-    // delete callback
-    delete shutter->iCallback;
-    shutter->iCallback = NULL;
-    // delete emergency caller
-    delete shutter->iEmergencyCaller;
-    shutter->iEmergencyCaller = NULL;
-
-    shutter->ShutdownIfReadyAndDestroy();
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtAppShutter::EnqueCallbackL
-// -----------------------------------------------------------------------------
-//
-void CLcVtAppShutter::EnqueCallbackL( TCallBack& aCallback )
-    {
-    __VTPRINTENTER( "CLcVtAppShutter.EnqueAsyncCommsCommandL" )
-    if ( !iCallback )
-        {
-        iCallback = new ( ELeave ) CAsyncCallBack( aCallback, EPriorityHigh );
-        }
-    iCallback->Call();
-    __VTPRINTEXIT( "CLcVtAppShutter.EnqueAsyncCommsCommandL" )
-    __VTPRINTEXIT( "CLcVtAppShutter.EnqueCallbackL" )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtAppShutter::ShutdownIfReadyAndDestroy
-// -----------------------------------------------------------------------------
-//
-void CLcVtAppShutter::ShutdownIfReadyAndDestroy()
-    {
-    __VTPRINTENTER( "CLcVtAppShutter.ShutdownIfReadyAndDestroy" )
-    __VTPRINT2( DEBUG_GEN, "  shutter flags %d",
-        iPendingStateFlags.Value() );
-    if ( !iPendingStateFlags.Value() )
-        {
-        iObserver.HandleShutdownReady();
-        delete this;
-        }
-    __VTPRINTEXIT( "CLcVtAppShutter.ShutdownIfReadyAndDestroy" )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtAppShutter::CEmergencyCaller::DialEmergencyL
-// -----------------------------------------------------------------------------
-//
-CLcVtAppShutter::CEmergencyCaller* CLcVtAppShutter::CEmergencyCaller::
-    DialEmergencyL(
-    CLcVtAppShutter& aObserver,
-    MLcVtStateContext& aStateContext )
-    {
-    __VTPRINTENTER( "CEmergencyCaller.DialEmergencyL" )
-    CLcVtAppShutter::CEmergencyCaller* self = new ( ELeave )
-        CLcVtAppShutter::CEmergencyCaller( aObserver, aStateContext );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    __VTPRINTEXIT( "CEmergencyCaller.DialEmergencyL" )
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtAppShutter::CEmergencyCaller::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CLcVtAppShutter::CEmergencyCaller::ConstructL()
-    {
-    __VTPRINTENTER( "CEmergencyCaller.ConstructL" )
-    /*
-    const MVtUiNumberSource* source = iStateContext.NumberSource();
-    if ( source )
-        {
-        source->GetContents( iNumber );
-        AknTextUtils::ConvertDigitsTo( iNumber, EDigitTypeWestern );
-        User::LeaveIfError( iServer.Connect() );
-        iEmergency = CPhCltEmergencyCall::NewL( this );
-        TBool isEmergenyNumber = EFalse;
-        const TInt err =
-            iEmergency->FindEmergencyPhoneNumber( iNumber, isEmergenyNumber );
-
-        if ( err == KErrNone && isEmergenyNumber )
-            {
-            __VTPRINT( DEBUG_GEN, "iEmergency->DialEmergencyCallL")
-            iEmergency->DialEmergencyCallL( iNumber );
-            }
-        if ( !isEmergenyNumber || err )
-            {
-            __VTPRINT( DEBUG_GEN, "  not EC number => leave" )
-            // Not an emergency call number. Abort emergency call process.
-            User::Leave( KErrArgument );
-            }
-        }
-        */
-    __VTPRINTEXIT( "CEmergencyCaller.ConstructL" )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtAppShutter::CEmergencyCaller::CEmergencyCaller
-// -----------------------------------------------------------------------------
-//
-CLcVtAppShutter::CEmergencyCaller::CEmergencyCaller(
-    CLcVtAppShutter& aObserver,
-    MLcVtStateContext& aStateContext ) :
-    iObserver( aObserver ),
-    iStateContext( aStateContext )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtAppShutter::CEmergencyCaller::~CEmergencyCaller
-// -----------------------------------------------------------------------------
-//
-CLcVtAppShutter::CEmergencyCaller::~CEmergencyCaller()
-    {
-    __VTPRINTENTER( "CEmergencyCaller.~" )
-    delete iEmergency;
-    iServer.Close();
-    __VTPRINTEXIT( "CEmergencyCaller.~" )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtAppShutter::CEmergencyCaller::HandleEmergencyDialL
-// -----------------------------------------------------------------------------
-//
-void CLcVtAppShutter::CEmergencyCaller::HandleEmergencyDialL(
-    const TInt )
-    {
-    __VTPRINTENTER( "CEmergencyCaller.HandleEmergencyDialL" )
-    iObserver.EmergencyCallDoneL();
-    __VTPRINTEXIT( "CEmergencyCaller.HandleEmergencyDialL" )
-    }
-
--- a/vtuis/lcvtplugin/src/base/clcvtcmdexecutor.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,360 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of the CLcVtCmdExecutor class.
-*
-*/
-
-
-// INCLUDE FILES
-#include    "clcvtcmdexecutor.h"
-#include    "mlcvtenginecommandmanager.h"
-#include    <mvtengcommandhandler.h>
-#include    <cvtlogger.h>
-
-// MODULE DATA STRUCTURES
-
-/**
-* Active object to perform asynchronous commands.
-* @since Series 60 2.6
-*/
-class CLcVtCmdExecutor::CActiveCmd
-    : public CActive
-    {
-    public: // Constructors and destructor
-
-        /**
-        * Constructor.
-        */
-        CActiveCmd(
-            CLcVtCmdExecutor& aDialog,
-            MVtEngCommandHandler& aCommandHandler,
-            TVtEngCommandId aCommand,
-            TDesC8* aParams );
-
-        /**
-        * Destructor.
-        */
-        ~CActiveCmd();
-
-    public: // New functions
-
-        /**
-        * Starts active object. Command will be performed in RunL.
-        */
-        void Start();
-
-        /**
-        * Checks if command has been performed.
-        * @return ETrue if command has been performed.
-        */
-        TBool CommandPerformed() const;
-
-    private:
-
-        /**
-        * @see CActive::RunL
-        */
-        void RunL();
-
-        /**
-        * @see CActive::DoCancel.
-        */
-        void DoCancel();
-
-        /**
-        * @see CActive::RunError.
-        */
-        TInt RunError( TInt aResult );
-
-    private:
-
-        // Ref to dialog.
-        CLcVtCmdExecutor& iExecutor;
-
-        // Ref to command handler.
-        MVtEngCommandHandler& iCommandHandler;
-
-        // Command to be executed.
-        TVtEngCommandId iCommand;
-
-        // Owned parameters.
-        TDesC8* iCommandParams;
-
-        // ETrue if command has been performed.
-        TBool iCommandPerformed;
-
-    };
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CLcVtCmdExecutor::CLcVtCmdExecutor
-// -----------------------------------------------------------------------------
-//
-CLcVtCmdExecutor::CLcVtCmdExecutor(
-        CLcVtCmdExecutor** aSelfPtr,
-        MVtEngCommandHandler& aCommandHandler,
-        MLcVtEngineCommandManager& aCommandManager )
-    : iSelfPtr( aSelfPtr ),
-      iCommandHandler( aCommandHandler ),
-      iCommandManager( aCommandManager )
-    {
-    iRequest = NULL;
-    __VTPRINT2( DEBUG_GEN, "CLcVtCmdExecutor.Ctor this=%d", (TInt)this )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtCmdExecutor::~CLcVtCmdExecutor
-// -----------------------------------------------------------------------------
-//
-CLcVtCmdExecutor::~CLcVtCmdExecutor()
-    {
-    __VTPRINTENTER( "CLcVtCmdExecutor.~" )
-    __VTPRINT2( DEBUG_GEN, "CLcVtCmdExecutor.~ this=%d", (TInt)this )
-    if ( iActiveCmd )
-        {
-        if ( !iCommandCompleted && iActiveCmd->CommandPerformed() )
-            {
-            iCommandHandler.CancelCommand( iCommand ); // ignore error
-            }
-        }
-    delete iCommandParams;
-    delete iActiveCmd;
-
-    iCommandManager.RemoveObserver( *this );
-    
-    if ( iSelfPtr )
-        {
-        *iSelfPtr = NULL;
-        iSelfPtr = NULL;
-        }
-
-    if ( iRequest )
-        {
-        __VTPRINT(DEBUG_GEN, "CLcVtCmdExecutor::~CLcVtCmdExecutor RequestComplete")
-        User::RequestComplete( iRequest, KErrCancel );
-        iRequest = NULL;
-        }
-    else
-        {
-        if ( iWait.IsStarted())
-            {
-            __VTPRINT(DEBUG_GEN, "CLcVtCmdExecutor::~CLcVtCmdExecutor AsyncStop")
-            iWait.AsyncStop();
-            }           
-        }
-    
-    
-    __VTPRINTEXIT( "CLcVtCmdExecutor.~" )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtCmdExecutor::ExecuteCmdL
-// -----------------------------------------------------------------------------
-//
-void CLcVtCmdExecutor::ExecuteCmdL(
-        const TVtEngCommandId aCommandId,
-        TDesC8* aParams,
-        TRequestStatus* aRequest )
-    {
-    __VTPRINTENTER( "CLcVtCmdExecutor.ExecuteCmdL" )
-    __VTPRINT2( DEBUG_GEN, "CLcVtCmdExecutor.ExecuteCmdL this=%d", (TInt)this )
-    iCommand = aCommandId;
-    CleanupStack::PushL( this );
-    if ( aParams )
-        {
-        iCommandParams = aParams->AllocL();
-        }
-
-    iCommandManager.AddObserverL( *this );
-    CleanupStack::Pop( this );
-
-    iActiveCmd =
-        new ( ELeave ) CActiveCmd(
-            *this, iCommandHandler, iCommand, iCommandParams );
-    iActiveCmd->Start();    
-    
-    if ( !aRequest )
-        {
-        TInt error = KErrNone;
-        iError = &error;
-        //Start Active Schedule
-        iWait.Start();
-        User::LeaveIfError( error );
-        }
-    else
-        {
-        *aRequest = KRequestPending;        
-        iRequest = aRequest; 
-        } 
-       
-    __VTPRINTEXIT( "CLcVtCmdExecutor.ExecuteCmdL" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtCmdExecutor::Complete
-// -----------------------------------------------------------------------------
-//
-void CLcVtCmdExecutor::Complete( const TInt aError )
-    {
-    if ( iError )
-        {
-        *iError = aError;
-        }
-
-    if ( iRequest )
-        {
-        User::RequestComplete( iRequest, aError );
-        iRequest = NULL;
-        }
-
-    delete this;
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtCmdExecutor::HandleVTCommandPerformedL
-// -----------------------------------------------------------------------------
-//
-void CLcVtCmdExecutor::HandleVTCommandPerformedL(
-        TVtEngCommandId aCommand,
-        const TInt aError )
-    {
-    __VTPRINTENTER( "CLcVtCmdExecutor.HandleVTCommandPerformed" )
-    __VTPRINT2( DEBUG_GEN, "CLcVtCmdExecutor.HandleVTCommandPerformed.cmd.%d", aCommand )
-    __VTPRINT2( DEBUG_GEN, "CLcVtCmdExecutor.HandleVTCommandPerformed.err.%d", aError )
-    if ( iActiveCmd && ( aCommand == iCommand ) )
-        {
-        if ( iActiveCmd->CommandPerformed() && !iCommandCompleted )
-            {
-            __VTPRINT( DEBUG_GEN, "CLcVtCmdExecutor.match" )
-            iCommandCompleted = ETrue;
-            // Corrupted images may leave during initialization, thus we have
-            // to mask out errors when they happen during share initialize.
-            // Error code is handled correctly in CVtUiAppUi::CEventObserver::
-            // HandleVTCommandPerformedL() method, thus it will not be ignored.
-            if ( aCommand == KVtEngInitializeShareImage )
-                {
-                Complete( KErrNone );
-                }
-            else
-                {
-                Complete( aError );
-                }
-            }
-        }
-    __VTPRINTEXIT( "CLcVtCmdExecutor.HandleVTCommandPerformed" )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtCmdExecutor::HandleExecuteFailed
-// -----------------------------------------------------------------------------
-//
-void CLcVtCmdExecutor::HandleExecuteFailed( TInt aResult )
-    {
-    __VTPRINT3( DEBUG_GEN, "CLcVtCmdExecutor.Fail this=%d res=%d",
-        (TInt)this, aResult )
-    Complete( aResult );
-    }
-
-// Implementation of CLcVtCmdExecutor::CActiveCmd:
-
-// -----------------------------------------------------------------------------
-// CLcVtCmdExecutor::CActiveCmd::CActiveCmd
-// -----------------------------------------------------------------------------
-//
-CLcVtCmdExecutor::CActiveCmd::CActiveCmd(
-        CLcVtCmdExecutor& aExecutor,
-        MVtEngCommandHandler& aCommandHandler,
-        TVtEngCommandId aCommand,
-        TDesC8* aParams)
-    : CActive( CActive::EPriorityHigh ),
-      iExecutor( aExecutor ),
-      iCommandHandler( aCommandHandler ),
-      iCommand( aCommand ),
-      iCommandParams( aParams )
-    {
-    CActiveScheduler::Add( this );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtCmdExecutor::CActiveCmd::~CActiveCmd
-// -----------------------------------------------------------------------------
-//
-CLcVtCmdExecutor::CActiveCmd::~CActiveCmd()
-    {
-    __VTPRINT2( DEBUG_GEN, "CLcVtCmdExecutor.CActiveCmd.Dtor this=%d", (TInt)this )
-    Cancel();
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtCmdExecutor::CActiveCmd::Start
-// -----------------------------------------------------------------------------
-//
-void CLcVtCmdExecutor::CActiveCmd::Start()
-    {
-    __VTPRINTENTER( "CLcVtCmdExecutor.CActiveCmd.Start" )
-    TRequestStatus* status = &iStatus;
-    User::RequestComplete( status, KErrNone );
-    SetActive();
-    __VTPRINTEXITR( "CLcVtCmdExecutor.CActiveCmd.Start this=%d", (TInt)this )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtCmdExecutor::CActiveCmd::CommandPerformed
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtCmdExecutor::CActiveCmd::CommandPerformed() const
-    {
-    __VTPRINT3( DEBUG_GEN, "CLcVtCmdExecutor.CActiveCmd.Perf this=%d,cmd=%d",
-        (TInt)this, iCommandPerformed )
-    return iCommandPerformed;
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtCmdExecutor::CActiveCmd::RunL
-// -----------------------------------------------------------------------------
-//
-void CLcVtCmdExecutor::CActiveCmd::RunL()
-    {
-    __VTPRINTENTER( "CLcVtCmdExecutor.CActiveCmd.RunL" )
-    iCommandHandler.ExecuteL( iCommand, iCommandParams );
-    iCommandPerformed = ETrue;
-    __VTPRINTEXITR( "CLcVtCmdExecutor.CActiveCmd.RunL this=%d", (TInt)this )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtCmdExecutor::CActiveCmd::DoCancel
-// -----------------------------------------------------------------------------
-//
-void CLcVtCmdExecutor::CActiveCmd::DoCancel()
-    {
-    __VTPRINT2( DEBUG_GEN, "CLcVtCmdExecutor.CActiveCmd.DoCnl this=%d", (TInt)this )
-    // Request is completed immediately.
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiExecuteCmdDialog::CActiveCmd::RunError
-// -----------------------------------------------------------------------------
-//
-TInt CLcVtCmdExecutor::CActiveCmd::RunError( TInt aResult )
-    {
-    __VTPRINTENTER( "CLcVtCmdExecutor.CActiveCmd.RunError" )
-    // Exception was raised in RunL. Inform the dialog to close itself.
-    iExecutor.HandleExecuteFailed( aResult );
-    __VTPRINTEXITR( "CLcVtCmdExecutor.CActiveCmd.RunError this=%d", (TInt)this )
-    return KErrNone;
-    }
-
-//  End of File
--- a/vtuis/lcvtplugin/src/base/clcvtengine.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  LiveComm Videotelephony Plugin Class
-*
-*/
-
-#include <lcsession.h>
-#include <lcuiprovider.h>
-#include <lcsessionobserver.h>
-#include "clcvtengine.h"
-#include "clcvtsession.h"
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CLcVtEngine* CLcVtEngine::NewL( TAny* aParams )
-    {
-    CLcVtEngine* self = new ( ELeave ) CLcVtEngine;
-    CleanupStack::PushL( self );
-    self->ConstructL(); 
-    CleanupStack::Pop( self );
-    return self;
-    }
-    
-CLcVtEngine::~CLcVtEngine()
-    {
-    delete iSession;
-    }
-    
-MLcSession& CLcVtEngine::Session()
-    {
-    return *iSession;
-    }
- 
-void CLcVtEngine::ConstructL() 
-    {
-    iSession = CLcVtSession::NewL();
-    }
- 
-CLcVtEngine::CLcVtEngine() : CLcEngine()
-    {
-    
-    }
-
-TBool CLcVtEngine::IsFeatureSupported( TLcFeature aLcFeature )
-    {
-    return iSession->IsFeatureSupported( aLcFeature );
-    }
--- a/vtuis/lcvtplugin/src/base/clcvtsession.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2372 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  LiveComm Videotelephony Plugin session Class
-*
-*/
-
-#include <e32base.h>
-#include <e32std.h>
-#include <e32cmn.h>
-#include <featmgr.h>
- 
-#include <w32std.h>
-#include <coecntrl.h>
-#include <eikenv.h>
-#include <eikappui.h>
-#include <apgcli.h>
-#include <centralrepository.h> 
-
-#include "clcvtsession.h"
-
-#include "cvtengmodel.h"
-
-#include "clcvtvideoplayerbase.h"
-#include "clcvtlocalvideoplayer.h"
-#include "clcvtremotevideoplayer.h"
-#include "tlcvtstates.h"
-#include "clcvtcmdexecutor.h"
-#include "mlcvtenginecommandmanager.h"
-#include "lcvtplugincommand.h"
-#include "lcvtutility.h"
-
-// User selectable Call answer status values
-const TInt KAllwaysQuery = 0;
-const TInt KAllwaysAllow = 2;
-
-// Default call index.
-const TInt KVtUiDefaultCallId = 1;
-
-// Granularity of command observer array.
-const TInt KLcVtCommandObserverArrayGranularity = 5;
-
-
-
-// Enumerates states for CLcVtActiveExec.
-enum
-    {    
-    // Operation finished. Must equal to zero.
-    EVtSessionNone,
-    
-    // Active execution states for iActiveExec:
-    
-    //     Startup (prepare engine):
-    EVtSessionStartup = 100,                                    // 100
-    //     Initialise engine.
-    EVtSessionStartupInitEngine = EVtSessionStartup,            // 100
-    //     Prepare viewfinder.
-    EVtSessionStartupPrepareViewfinder,                         // 101
-    //     Prepare remote render.
-    EVtSessionStartupPrepareRemoteRender,                       // 102
-    //     Startup Finish 
-    EVtSessionStartupFinish,                                    // 103
-    
-    //     Shutdown (reset engine):
-    EVtSessionShutdown = 300,                                   // 300
-    //     Hide application.
-    EVtSessionShutdownHideApplication = EVtSessionShutdown,     // 300
-    //     Reset engine.
-    EVtSessionShutdownResetEngine,                              // 301
-    
-        
-    //     Answered:
-    EVtSessionAnswered = 500,                                   // 500    
-    //     Start remote render.
-    EVtSessionAnsweredStartRemoteRender = EVtSessionAnswered,   // 500    
-    //     Prepare Camere
-    EVtSessionAnsweredDoPrepareCamera,                          // 501
-    //     Select camera as source.
-    EVtSessionAnsweredSetlectCamera,                            // 502
-    //     Select blank image as source.
-    EVtSessionAnsweredSetlectNone,
-    //     Start view finder
-    EVtSessionAnsweredStartViewFinder,                          // 504
-    //     Show Application 
-    EVtSessionAnsweredBringToForeground,                        // 505
-    
-    //EVtSessionAnswered = 500,                                   // 500
-    //EVtSessionAnsweredBringToForeground = EVtSessionAnswered,                        // 505
-    
-    //     Finish.
-    EVtSessionAnsweredFinish                                    // 506    
-    };
-
-
-/**
- * Encapsulates event handling.
- * @since Series 60 2.6
- */    
-class CLcVtSession::CEventObserver
-    : public CBase,
-      public MLcVtEngineCommandManager,
-      public MVtEngEventObserver,
-#ifndef NGA_VIDEO_RENDER
-      public MVtEngFrameObserver,
-#endif
-      public MVtEngCommandObserver
-    {    
-    public: // Constructors and destructors
-     
-        /**
-        * Two-phased constructor.
-        * @param aSession plugin session.
-        */        
-        static CEventObserver* NewL(CLcVtSession& aSession);
-        
-        /**
-        * Destructor.
-        */        
-        ~CEventObserver();
-
-    public: // Functions from base classes
-
-        /**
-        * @see MLcVtEngineCommandManager::AddObserverL.
-        */
-        void AddObserverL( MVtEngCommandObserver& aObserver );
-
-        /**
-        * @see MLcVtEngineCommandManager::RemoveObserver.
-        */
-        void RemoveObserver( MVtEngCommandObserver& aObserver );
-        
-        /**
-        * @see MVtEngEventObserver::HandleVtEventL.
-        */        
-        void HandleVtEventL( TInt aEvent );
-        
-        /**
-        * @see MVtEngCommandObserver::HandleVTCommandPerformedL.
-        */        
-        void HandleVTCommandPerformedL(
-                TVtEngCommandId aCommand,
-                const TInt aError );
-#ifndef NGA_VIDEO_RENDER        
-        /**
-        * @see MVtEngFrameObserver::vtHandleFrameL.
-        */        
-        void vtHandleFrameL( TFrameType aType, CFbsBitmap* aBitmap );
-        
-        /**
-        * @see MVtEngFrameObserver::vtSetFrame
-        */        
-        void vtSetFrame( TFrameType aType, CFbsBitmap* aBitmap );                 
-#endif                                       
-    private:
-        
-        /**
-        * Constructor.
-        * @param aSession plugin session.
-        */
-        CEventObserver(CLcVtSession& aSession );
-        
-        /**
-        * Symbian OS constructor.
-        */        
-        void ConstructL();        
-          
-    private:        
-        
-        // Ref to plugin session.
-        CLcVtSession& iSession;    
-        
-        // ETrue when command events are being sent.
-        TBool iInCommandPerformed;
-
-        // Owned array of observers.
-        RPointerArray< MVtEngCommandObserver > iCommandObservers;
-        
-    };
-
-         
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CLcVtSession* CLcVtSession::NewL()
-    {
-    CLcVtSession* self = new ( ELeave ) CLcVtSession();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }     
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CLcVtSession::CLcVtSession( ) 
-    {
-    }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ConstructL()
-    {
-    
-    __VTPRINTENTER( "CLcVtSession.ConstructL" )  
-      
-    __VTPRINT( DEBUG_MEDIA , "FeatureManager::InitializeLibL()" )
-    FeatureManager::InitializeLibL(); 
-        
-    __VTPRINT( DEBUG_MEDIA , "iCameraHandler.SetSession(this)" )
-    iCameraHandler.SetSession(this);
-    __VTPRINT( DEBUG_MEDIA , "iRemoteVideoPlayer = CLcVtRemoteVideoPlayer_NewL" )
-    iRemoteVideoPlayer = CLcVtRemoteVideoPlayer::NewL(this, *this);
-    __VTPRINT( DEBUG_MEDIA , "iLocalVideoPlayer  = CLcVtLocalVideoPlayer_NewL" )
-    iLocalVideoPlayer  = CLcVtLocalVideoPlayer::NewL(this, *this, iCameraHandler);  
-
-#ifndef NGA_VIDEO_RENDER 
-    iFbsStarted = EFalse;   
-            
-    __VTPRINT( DEBUG_MEDIA , "iWsSession = &(CCoeEnv::Static()->WsSession())" )
-    iWsSession = &(CCoeEnv::Static()->WsSession());
-    __VTPRINT( DEBUG_MEDIA , "iWsSessionScreenDev = CCoeEnv::Static()->ScreenDevice()" )
-    iWsSessionScreenDev = CCoeEnv::Static()->ScreenDevice();
-    __VTPRINT( DEBUG_MEDIA , "iRootWin = &(CCoeEnv::Static()->RootWin())" )
-    iRootWin = &(CCoeEnv::Static()->RootWin());
-    
-    __VTPRINT( DEBUG_MEDIA , "ConnectFbsServerL()" )
-    ConnectFbsServerL();    
-#endif
-    __VTPRINT( DEBUG_MEDIA , "iEventObserver = CEventObserver_NewL" )
-    iEventObserver = CEventObserver::NewL( *this );
-
-    iModel = CVtEngModel::NewL( *iEventObserver, *iEventObserver );
-
-    __VTPRINT( DEBUG_MEDIA , "iLcVtStates_new" )
-    iLcVtStates = new ( ELeave ) TLcVtStates( *iModel );
-    __VTPRINT( DEBUG_MEDIA , "iLcVtStates->Update()" )
-    iLcVtStates->Update();    
-    
-    __VTPRINT( DEBUG_MEDIA , "new_iActiveExec" )
-    iActiveExec =
-        new ( ELeave ) CLcVtActiveExec( CActive::EPriorityHigh );  
-        
-    __VTPRINT( DEBUG_MEDIA , "SetCallIdL( KVtUiDefaultCallId )" )
-    SetCallIdL( KVtUiDefaultCallId );
-    
-    __VTPRINT( DEBUG_MEDIA , "iAsyncCallback" )
-    iAsyncCallback =
-        new ( ELeave ) CAsyncCallBack (
-            TCallBack( &DoExit, this ),
-            CActive::EPriorityStandard );   
-#if 0    
-    __VTPRINT( DEBUG_MEDIA , "iLayoutChangeCallback" )
-    iLayoutChangeCallback =
-        new ( ELeave ) CAsyncCallBack(
-            TCallBack( &DelayedHandleLayoutChanged, this ),
-            CActive::EPriorityStandard );   
-#endif    
-    CRepository* repository = CRepository::NewL( KCRUidTelephonySettings );
-
-    if ( repository->Get( KSettingsVTVideoSending, VideoSendingKey ) == KErrNone )
-        {
-        __VTPRINT2( DEBUG_GEN, "CLcVtSession.IsFeatureSupported get key=%d", VideoSendingKey )
-        }
-    else
-        {
-        __VTPRINT( DEBUG_GEN, "CLcVtSession.IsFeatureSupported set key to default KAllwaysAllow" )
-        VideoSendingKey = KAllwaysAllow;
-        }
-    delete repository;
-    
-    iIndicatorCtr = new  ( ELeave ) LcVtIndicatorController();
-    __VTPRINTEXIT( "CLcVtSession.ConstructL" )
-    
-    }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CLcVtSession::~CLcVtSession()
-    {
-    __VTPRINTENTER( "CLcVtSession.~CLcVtSession" )  
-
-    //delete iLayoutChangeCallback;
-    delete iAsyncCallback;
-
-#ifndef NGA_VIDEO_RENDER    
-    DisconnectFbsServer();
-#endif
-    delete iActiveExec;
-    delete iLcVtStates;
-
-    delete iModel;
-    
-    delete iEventObserver;
-    iEventObserver = NULL;
-    
-#ifdef NGA_VIDEO_RENDER
-    DestroyVideoWindows();
-#endif
-
-    delete iLocalVideoPlayer;
-    delete iRemoteVideoPlayer;
-    
-    delete iRemoteDisplayName;
-    delete iRemoteDetails;
-    if (iIndicatorCtr) {
-        iIndicatorCtr->disableActiveCallIndicator();
-        delete iIndicatorCtr;
-    }    
-    __VTPRINTEXIT( "CLcVtSession.~CLcVtSession" )
-    FeatureManager::UnInitializeLib();  
-    }
-
-#ifndef NGA_VIDEO_RENDER
-void CLcVtSession::ConnectFbsServerL()
-    {
-    // VT use bitmaps viewfinder now, So we start FBS server for proto demo  
-    // and later we will use Qt image object to implement bitmaps view finder or we will use direct view finder    
-    TInt err( KErrNone );
-    // Start Font&Bitmap server    
-    err = FbsStartup();
-    if ( err == KErrNone )
-        {
-       err = RFbsSession::Connect();
-       if( err == KErrNone )
-           {
-           iFbsStarted = ETrue;
-           }            
-        }
-    
-    iDummy = new ( ELeave ) CFbsBitmap();  
-    //CleanupStack::PushL( iDummy );
-    User::LeaveIfError( iDummy->Create( TSize( 4096, 1 ), EColor64K ) );      
-    
-    iGc = new (ELeave) CWindowGc( iWsSessionScreenDev );
-    //CleanupStack::PushL( iGc );
-    User::LeaveIfError( iGc->Construct());
-    
-    //CleanupStack::Pop(2);
-    }
-
-
-void CLcVtSession::DisconnectFbsServer()
-    {
-    delete iGc;
-    delete iDummy;    
-    if ( iFbsStarted )
-        {
-        RFbsSession::Disconnect();
-        iFbsStarted = EFalse;        
-        }    
-    }
-#endif
-#ifdef NGA_VIDEO_RENDER
-
-_LIT(KVTWindowGroupName,"32VTPluginVideoWindow");
-
-void CLcVtSession::CreateVideoWindowsL()
-    {
-    __VTPRINTENTER( "CLcVtSession.CreateVideoWindowsL" ) 
-    User::LeaveIfError( iRwSession.Connect() );  
-
-    iRwGroup = new (ELeave) RWindowGroup( iRwSession ) ;        
-    iRwGroup->Construct( (TUint32)iRwGroup, EFalse );
-    
-    iRwGroup->SetName( KVTWindowGroupName );
-    iRwGroup->SetOrdinalPosition( 1 , ECoeWinPriorityNeverAtFront );
-    iRwGroup->AutoForeground(EFalse);
-    
-    iDev = new (ELeave) CWsScreenDevice( iRwSession );
-    iDev->Construct( ); 
-    
-    iRemoteVideoWindow = new (ELeave) RWindow( iRwSession );
-    iRemoteVideoWindow->Construct( *iRwGroup, (TUint32)iRemoteVideoWindow );
-    
-    TRect RMRect = RemoteVideoPlayer()->LcWindow()->LcWindowRect();
-    iRemoteVideoWindow->SetExtent( RMRect.iTl, RMRect.Size() );
-    iRemoteVideoWindow->SetOrdinalPosition( 1, ECoeWinPriorityNeverAtFront );
-    iRemoteVideoWindow->Activate();
-    
-    iLocalVideoWindow = new (ELeave) RWindow( iRwSession );
-    iLocalVideoWindow->Construct( *iRwGroup, (TUint32)iLocalVideoWindow );
-    
-    TRect VFRect = LocalVideoPlayer()->LcWindow()->LcWindowRect();
-    iLocalVideoWindow->SetExtent( VFRect.iTl, VFRect.Size() );
-    iLocalVideoWindow->SetOrdinalPosition( 1, ECoeWinPriorityNeverAtFront );
-    iLocalVideoWindow->Activate();   
-        
-    iRwSession.Flush();  
-
-    __VTPRINTEXIT( "CLcVtSession.CreateVideoWindowsL" )
-    }
-
-void CLcVtSession::DestroyVideoWindows()
-    {
-    
-    delete iDev;
-    iDev = NULL;
-    delete iRemoteVideoWindow;
-    iRemoteVideoWindow = NULL;
-    delete iLocalVideoWindow;
-    iLocalVideoWindow = NULL;
-    delete iRwGroup;
-    iRwGroup = NULL;
-    iRwSession.Close();
-    }
-
-#endif
-
-
-void CLcVtSession::SetLcSessionObserver( MLcSessionObserver* aObserver )
-    {
-    iObserver = aObserver;
-    }
-
-void CLcVtSession::SetLcUiProvider( MLcUiProvider* aUiProvider )
-    {
-    iUiProvider = aUiProvider;
-    }
-    
-TBool CLcVtSession::IsBackgroundStartup()
-    {
-    return ETrue;
-    }
-  
-TBool CLcVtSession::SendDialTone( TChar aKey )
-    {
-    iDtmfTone = aKey;
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.SendDialTone: %d", iDtmfTone() )
-    if ( Execute( KVtEngStartDtmfTone, &iDtmfTone ) != KErrNone )
-        {
-        return EFalse;
-        }
-    else
-        {
-        return ETrue;
-        }
-    }
-
-void CLcVtSession::EstablishLcSessionL()
-    {
-    __VTPRINTENTER( "CLcVtSession.EstablishLcSessionL" )
-    
-    TLcVtStateBase::SetInitialStateL( *this, *iLcVtStates );
-    
-    __VTPRINTEXIT( "CLcVtSession.EstablishLcSessionL" )
-    }
-
-void CLcVtSession::TerminateLcSessionL()
-    {
-    __VTPRINTENTER( "CLcVtSession.TerminateLcSessionL" )    
-    HandleCommandL( EPluginCmdEndActiveCall );
-    __VTPRINTEXIT( "CLcVtSession.TerminateLcSessionL" )
-    }
-
-MLcVideoPlayer* CLcVtSession::RemoteVideoPlayer()
-    {
-    return iRemoteVideoPlayer;
-    }
-
-MLcVideoPlayer* CLcVtSession::LocalVideoPlayer()
-    {
-    return iLocalVideoPlayer;
-    }
-
-MLcSession::TLcSessionState CLcVtSession::LcSessionState() const
-    {
-    return iSessionState;
-    }
-
-const TDesC& CLcVtSession::LocalDisplayName()
-    {
-    return KNullDesC;
-    }
-const TDesC& CLcVtSession::RemoteDisplayName()
-    {
-    if ( iRemoteDisplayName )
-        {
-        return *iRemoteDisplayName;
-        }
-    return KNullDesC;
-    }
-    
-TInt CLcVtSession::SetParameter( TInt aId, TInt aValue )
-    {
-     if (aId == 0)
-         iMainWindow = reinterpret_cast<RWindow*>(aValue);
-         
-    return 0;
-    }
-
-TInt CLcVtSession::ParameterValue( TInt aId )
-    {
-    return 0;
-    }
-
-const TDesC& CLcVtSession::RemoteDetails()
-    {
-    if ( iRemoteDetails )
-        {
-        return *iRemoteDetails;
-        }
-    return KNullDesC;
-    }
-
-void CLcVtSession::UpdateLcSessionL()
-    {     
-    __VTPRINTENTER( "CLcVtSession.UpdateLcSessionL" )
-    
-    if(iLcVtStates->ExecState() != TLcVtStates::EExecStateRunning )
-        {
-        __VTPRINTEXIT( "CLcVtSession.UpdateLcSessionL -- State Not OK" )
-        return;
-        }
-#if 0    
-    if(iLocalVideoPlayer->IsOrientationChanged())
-        HandleLayoutChanged();
-    else
-        UpdateRenderingParametersL();
-#endif
-    UpdateRenderingParametersL();
-    __VTPRINTEXIT( "CLcVtSession.UpdateLcSessionL" )
-    }
-    
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtSession::IsLcAudioMutedL()
-    {
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::MuteLcAudioL( TBool aMute )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtSession::IsLcMicMutedL()
-    {    
-    TBool result = !(iLcVtStates->AudioState().IsAudio());
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.IsLcMicMutedL = %d", result )
-    return result;  
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::MuteLcMicL( TBool aMute )
-    {   
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.MuteLcMicL aMute =  %d", aMute )
-
-    if(aMute)
-        {      
-        HandleCommandL(EPluginCmdDisableAudio);
-        }
-    else
-        {
-        HandleCommandL(EPluginCmdEnableAudio);     
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtSession::IsEnablingLcLoudspeakerAllowed()
-    {
-    return ETrue;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::EnableLcLoudspeakerL( TBool aEnabled )
-    {
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.EnableLcLoudspeakerL aEnabled =  %d", aEnabled )    
-    
-    if(aEnabled)
-        {
-        HandleCommandL(EPluginCmdActivateLoudspeaker);
-        }
-    else
-        {
-        HandleCommandL(EPluginCmdDeactivateLoudspeaker);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtSession::IsLcLoudspeakerEnabled()
-    {
-    TBool result = !(iLcVtStates->AudioState().CanActivateLoudspeaker());
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.IsLcLoudspeakerEnabled = %d", result )
-    return result;    
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-TInt CLcVtSession::LcVolumeL()
-    {
-    MVtEngAudio& audio = iModel->Audio();
-    MVtEngAudio::TAudioRoutingState audioRouting;
-    User::LeaveIfError( audio.GetRoutingState( audioRouting ) );
-    const TInt volume( audio.OutputVolume(
-        !( audioRouting == MVtEngAudio::EAudioLoudspeaker ) ) );
-    
-    return volume;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::SetLcVolumeL( TInt aValue )
-    {   
-    __VTPRINTENTER( "CLcVtSession.SetLcVolumeL" )
-    MVtEngAudio& audio = iModel->Audio();
-    const TInt HandsetVolume( audio.OutputVolume(ETrue) );    
-    const TInt HandsfreeVolume( audio.OutputVolume(EFalse) );    
-    MVtEngAudio::TVtEngOutputVolume volume;
-    volume.iHandsetVolume = HandsetVolume;
-    volume.iHandsfreeVolume = HandsfreeVolume;
-
-    MVtEngAudio::TAudioRoutingState audioRouting;
-    User::LeaveIfError( audio.GetRoutingState( audioRouting ) );    
-    if(audioRouting == MVtEngAudio::EAudioHandset)
-        volume.iHandsetVolume = aValue;
-    else
-        volume.iHandsfreeVolume = aValue;    
-    
-    ExecuteCmdL( KVtEngSetAudioVolume, volume );
-    __VTPRINTEXIT( "CLcVtSession.SetLcVolumeL" )
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::IncreaseLcVolumeL()
-    {
-    ExecuteCmdL( KVtEngIncreaseAudioVolume );
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::DecreaseLcVolumeL()
-    {
-    ExecuteCmdL( KVtEngDecreaseAudioVolume );
-    }
-
-CVtEngModel& CLcVtSession::Model()
-    {
-    return *iModel;
-    }
-
-
-void CLcVtSession::HandleCommandL(const TInt aCommand)
-    {
-    
-    __VTPRINTENTER( "CLcVtSession.HandleCommandL" )
-    
-    if ( iLcVtStates->ExecState() != TLcVtStates::EExecStateRunning )
-        {
-        __VTPRINTEXIT( "CLcVtSession.HandleCommandL NOT ready" )
-        return;
-        }
-    
-    if (  iState->HandleCommandL( aCommand ) == TLcVtStateBase::EEventHandled )
-        {
-        __VTPRINTEXIT( "CLcVtSession.HandleCommandL <silently ignoring> 0" )
-        return;
-        }   
-        
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.HandleCommandL command =  %d", aCommand )
-    
-    switch ( aCommand )
-        {
-        case EPluginCmdEnableAudio:
-            CmdEnableAudioL();
-            break;
-            
-        case EPluginCmdDisableAudio:
-            CmdDisableAudioL();
-            break;
-            
-        case EPluginCmdUsePrimaryCamera:
-            CmdUseCameraL( ETrue );
-            break;
-            
-        case EPluginCmdUseSecondaryCamera:
-            CmdUseCameraL( EFalse );
-            break;
-            
-        case EPluginCmdEnableVideo:
-            CmdEnableVideoL();
-            break;
-            
-        case EPluginCmdDisableVideo:
-            CmdDisableVideoL();
-            break;
-            
-        case EPluginCmdActivateLoudspeaker:
-            CmdActivateLoudspeakerL();
-            break;
-            
-        case EPluginCmdDeactivateLoudspeaker:
-            CmdDeactivateLoudspeakerL();
-            break;
-            
-        }
-    
-    __VTPRINTEXIT( "CLcVtSession.HandleCommandL" )
-    
-    iLcVtStates->Update();
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CmdEnableAudioL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CmdEnableAudioL()
-    {
-    ExecuteCmdL( KVtEngUnmuteOutgoingAudio );
-    iLcVtStates->Update();
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CmdDisableAudioL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CmdDisableAudioL()
-    {
-    ExecuteCmdL( KVtEngMuteOutgoingAudio );
-    iLcVtStates->Update();
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CmdUseCameraL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CmdUseCameraL( const TBool aPrimaryCamera )
-    {
-
-    MVtEngMedia& media = iModel->Media();
-
-    MVtEngMedia::TMediaSource selectedSource =
-        ( aPrimaryCamera ) ?
-            MVtEngMedia::EMediaCameraPri : MVtEngMedia::EMediaCameraSec;
-
-    TInt available = 0;
-    LcVtUtility::GetOutgoingMediaState( media, available );
-    if ( available & MVtEngMedia::EMediaVideo )
-        {
-        ExecuteCmdL( KVtEngStopViewFinder );
-        
-        TRAPD( err, ExecuteCmdL( KVtEngSetSource, selectedSource ) );
-
-        if ( err == KErrNone )
-            {
-            ExecuteCmdL( KVtEngStartViewFinder );
-            }
-        else
-            {
-            //ShowOtherCameraNotUsableNoteL();
-            }
-        }
-    else
-        {
-        /*
-        MVtEngMedia::TPrepareCameraParams params;
-        params.iMediaSource = selectedSource;
-        params.iInitialize = EFalse;
-        TRAPD( err, ExecuteCmdL( KVtEngPrepareCamera, params ) );
-        if ( err != KErrNone )
-            {
-            ShowOtherCameraNotUsableNoteL();
-            }
-            */
-        }
-    
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CmdEnableVideoL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CmdEnableVideoL()
-    {
-    // if outgoing video is frozen
-    MVtEngMedia& media = iModel->Media();
-    if ( LcVtUtility::GetFreezeState( media ) )
-        {
-        ExecuteCmdL( KVtEngUnfreeze );
-        // swap images if needed
-        //RestoreViewFinderL();
-        }
-    else
-        {
-        ExecuteCmdL( KVtEngStopViewFinder );
-        //iUplinkWindow->SetStreamBitmap( NULL );
-        MVtEngMedia::TMediaSource source = MVtEngMedia::EMediaCamera;
-        ExecuteCmdL( KVtEngSetSource, source );
-        MVtEngMedia::TCameraId id;
-        if ( iModel->Media().GetCurrentCameraId( id ) == KErrInUse )
-            {
-            //ShowCameraInUseNoteL();
-            }
-        ExecuteCmdL( KVtEngStartViewFinder );
-        }
-    // update VB settings
-    //UpdateVBSettingL();
-    iLcVtStates->Update();
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CmdDisableVideoL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CmdDisableVideoL()
-    {
-    ExecuteCmdL( KVtEngStopViewFinder );
-
-    //iUplinkWindow->SetStreamBitmap( NULL );
-
-    TInt err = KErrNotFound;
-    if ( LcVtUtility::HasStillImage( iModel->Media() ) )
-        {
-        __VTPRINT( DEBUG_GEN, "CLcVtSession.CmdDisableVideoL.HasStill" )
-        MVtEngMedia::TMediaSource source = MVtEngMedia::EMediaStillImage;
-        TRAP( err, ExecuteCmdL( KVtEngSetSource, source ) );
-        }
-    if ( ( err != KErrNone ) )
-        {
-        __VTPRINT( DEBUG_GEN, "CLcVtSession.CmdDisableVideoL.MediaNone" )
-        MVtEngMedia::TMediaSource source = MVtEngMedia::EMediaNone;
-        ExecuteCmdL( KVtEngSetSource, source );
-        }
-
-    ExecuteCmdL( KVtEngStartViewFinder );
-    iLcVtStates->Update();
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CmdActivateLoudspeakerL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CmdActivateLoudspeakerL()
-    {
-    MVtEngAudio::TVtEngRoutingSetting audioSetting =
-        MVtEngAudio::EActivateHandsfree;
-    ExecuteCmdL( KVtEngSetAudioRouting, audioSetting );
-    iLcVtStates->Update();
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CmdDeactivateLoudspeakerL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CmdDeactivateLoudspeakerL()
-    {
-    MVtEngAudio::TVtEngRoutingSetting audioSetting =
-        MVtEngAudio::EDeactivateHansfree;
-    ExecuteCmdL( KVtEngSetAudioRouting, audioSetting );
-    iLcVtStates->Update();
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::SetZoomFactorL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::SetZoomFactorL( TInt aZoomStep )
-    {
-    __VTPRINTENTER( "CLcVtSessionCLcVtSession.SetZoomFactorL" )
-    MVtEngMedia& media = iModel->Media();
-    if ( LcVtUtility::IsZoomAllowed( media ) )
-        {
-        ExecuteCmdL( KVtEngSetZoomStep, aZoomStep );
-        }
-    __VTPRINTEXIT( "CLcVtSession.SetZoomFactorL" )
-    }
-
-#ifndef NGA_VIDEO_RENDER
-//local video display, VT use bitmaps vf now, and maybe replace by direct vf later
-void CLcVtSession::vtHandleFrameL( CFbsBitmap* aBitmap )
-    {
-    __VTPRINTENTER( "CLcVtSession.vtHandleFrameL" )   
-    
-    /*    
-    TRect VFRect = LocalVideoPlayer()->LcWindow()->LcWindowRect();
-    const TPoint KVFcordinate( VFRect.iTl.iX,  VFRect.iTl.iY );    
-    iMainWindow->Invalidate();
-    iMainWindow->BeginRedraw();
-    iGc->Activate( *iMainWindow );
-    aBitmap->BeginDataAccess();
-    aBitmap->EndDataAccess();
-    iGc->BitBlt( KVFcordinate , aBitmap );
-    iGc->Deactivate();
-    iMainWindow->EndRedraw();
-    */
-    
-    /*
-    TRect VFRect = LocalVideoPlayer()->LcWindow()->LcWindowRect();    
-    const TPoint KVFcordinate( VFRect.iTl.iX -2 ,  VFRect.iTl.iY - 168 );
-    iLocalVideoWindow->Invalidate();
-    iLocalVideoWindow->BeginRedraw();
-    iGc->Activate( *iLocalVideoWindow );
-    iGc->BitBlt( KVFcordinate , aBitmap );
-    iGc->Deactivate();
-    iLocalVideoWindow->EndRedraw();
-    */   
-        
-    __VTPRINTEXIT("CLcVtSession.vtHandleFrameL")     
-    }
-#endif
-
-TInt CLcVtSession::SetForegroundStatus( TBool aIsForeground )
-{
-    __VTPRINTENTER( "CLcVtSession.SetForegroundStatus" )
-    __VTPRINT2( DEBUG_MEDIA , "    foreground: %d", aIsForeground )
-
-    if ( iRwGroup )
-        {
-        TInt priority = aIsForeground ? ECoeWinPriorityNormal : ECoeWinPriorityNeverAtFront;
-        iRwGroup->SetOrdinalPosition( 1 , priority );
-        iRemoteVideoWindow->SetOrdinalPosition( 1 , priority );
-        iLocalVideoWindow->SetOrdinalPosition( 1 , priority );
-        iRwSession.Flush();
-        }
-    if ( aIsForeground )
-       {
-       iIndicatorCtr->disableActiveCallIndicator();
-       }
-    else {
-       iIndicatorCtr->enableActiveCallIndicator();
-       }
-
-    __VTPRINTEXIT( "CLcVtSession.SetForegroundStatus" )
-    
-    return KErrNone;   
-}
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ShutdownL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ShutdownL()
-    {
-    __VTPRINTENTER( "CLcVtSession.ShutdownL" )
-    iActiveExec->Start( EVtSessionShutdown, *this );
-    __VTPRINTEXIT( "CLcVtSession.ShutdownL" )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::StartupPhase1L
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::StartupPhase1L()
-    {
-    __VTPRINTENTER( "CLcVtSession.StartupPhase1L" )
-    iActiveExec->Start( EVtSessionStartup, *this );
-    __VTPRINTEXIT( "CLcVtSession.StartupPhase1L" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::StartupPhase2L
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::StartupPhase2L()
-    {
-    __VTPRINTENTER( "CLcVtSession.StartupPhase2L" )
-    iActiveExec->Start( EVtSessionAnswered, *this );
-    __VTPRINTEXIT( "CLcVtSession.StartupPhase2L" )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecExecuteL
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtSession::ActiveExecExecuteL(
-        CLcVtActiveExec& /*aActiveExec*/,
-        const TInt aState,
-        TInt& aNextState,
-        TRequestStatus& aRequest )
-    {
-    return ActiveExecInitExecuteL(
-            aState,
-            aNextState,
-            aRequest );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecContinue
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtSession::ActiveExecContinue(
-        CLcVtActiveExec& /*aActiveExec*/,
-        TInt& aState,
-        const TInt aError )
-    {
-    return ActiveExecInitContinue( aState, aError );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecCancel
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ActiveExecCancel(
-        CLcVtActiveExec& /*aActiveExec*/,
-        TInt aState )
-    {
-    ActiveExecInitCancel( aState );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecDone
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ActiveExecDone(
-        CLcVtActiveExec& /*aActiveExec*/,
-        const TInt aInitialState )
-    {    
-    ActiveExecInitDone( aInitialState );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecInitCancel
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ActiveExecInitCancel(
-        const TInt /*aState*/ )
-    {
-    __VTPRINTENTER( "CLcVtSession.InitExecCancel" )
-    
-    delete iCmdExecutor;
-
-    if ( iShutdownRequest )
-        {
-        User::RequestComplete( iShutdownRequest, KErrCancel );
-        iShutdownRequest = NULL;
-        }
-    __VTPRINTEXIT( "CLcVtSession.InitExecCancel" )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecInitDone
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ActiveExecInitDone(
-        const TInt aInitialState )
-    {
-    __VTPRINTENTER( "CLcVtSession.ExecInitDone" )
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.InitExecDone.ini=%d", aInitialState )
-    // Operation succeeded
-    
-    // Now we have finished.
-    if ( iState )
-        {
-        if ( aInitialState == EVtSessionAnswered )
-            {
-            TRAP_IGNORE( iState->LcVtStartupPhase2DoneL() );
-			iSessionState = EOpen;
-            iObserver->StateChanged( *this );             
-            }
-        else if ( aInitialState == EVtSessionShutdown )
-            {
-            TRAP_IGNORE( iState->ShutdownDoneL() );
-            }
-        else // EVtSessionStartup
-            {
-            TRAP_IGNORE( iState->LcVtStartupPhase1DoneL() );
-            }
-        }
-    __VTPRINTEXIT( "CLcVtSession.ExecInitDone" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecInitExecuteL
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtSession::ActiveExecInitExecuteL(
-        const TInt aState,
-        TInt& aNextState,
-        TRequestStatus& aRequest )
-    {
-    __VTPRINTENTER( "CLcVtSession.ActiveExecInitExecuteL" )
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.ActiveExecInitExecuteL.st=%d", aState )
-
-    TBool synch = EFalse;
-
-    switch ( aState )
-        {
-        // Startup chain:
-        case EVtSessionStartupInitEngine:
-            //ChangeApplicationFocus(ETrue);
-#if defined (__WINS__)
-            ActiveExecInitExecuteCommandL( KVtEngInitializeEngineDiag, aRequest );
-#else            
-            ActiveExecInitExecuteCommandL( KVtEngInitializeEngine, aRequest );
-#endif            
-            aNextState = EVtSessionStartupPrepareViewfinder; 
-            //aNextState = EVtSessionStartupFinish;            
-            break;
-            
-        case EVtSessionStartupPrepareViewfinder:
-            //iSessionState = EOpen;
-            //iObserver->StateChanged( *this );          
-                        
-#ifdef NGA_VIDEO_RENDER
-            CreateVideoWindowsL();
-#endif           
-            ActiveExecInitPrepareViewFinderL( aRequest );            
-            aNextState = EVtSessionStartupPrepareRemoteRender;
-            break;
-
-        case EVtSessionStartupPrepareRemoteRender:
-            ActiveExecInitPrepareRemoteRenderL( aRequest );
-            aNextState = EVtSessionStartupFinish;
-            break;
-            
-        case EVtSessionStartupFinish:
-            aNextState = EVtSessionNone;
-            synch = ETrue;
-            break;
-            
-            
-        // Shutdown chain:    
-        case EVtSessionShutdownHideApplication:
-            ChangeApplicationFocus( EFalse );
-            synch = ETrue;
-            aNextState = EVtSessionShutdownResetEngine;            
-            break;
-        case EVtSessionShutdownResetEngine:
-            {
-            aRequest = KRequestPending;
-
-            MVtEngCommandHandler& command = iModel->CommandHandler();
-            // There should not be any commands ongoing because
-            // we have canceled all dialogs (and this should
-            // be the only command without dialog).
-            command.CancelCommand( command.PendingCommand() ); // ignore error
-            command.ExecuteL( KVtEngResetEngine, NULL );
-            iShutdownRequest = &aRequest;
-
-            aNextState = EVtSessionNone;
-            }            
-            break;
-        
-        
-            
-        // Answered chain:  
-        case EVtSessionAnsweredStartRemoteRender:            
-            {
-            ActiveExecInitExecuteCommandL( KVtEngStartRenderRemote, aRequest );
-            //TRequestStatus* status = &aRequest;
-            //User::RequestComplete( status, KErrNone );            
-
-            MVtEngSessionInfo::TDirection direction;
-            if ( iModel->Session().GetDirection( direction ) != KErrNone )
-                {
-                direction = MVtEngSessionInfo::EDirectionMT;
-                }
-            
-            MVtEngMedia& media = iModel->Media();    
-            if ( LcVtUtility::HasCameras( media ) )
-                {
-                if ( direction == MVtEngSessionInfo::EDirectionMT )
-                    {
-                        if ( VideoSendingKey == KAllwaysAllow)
-                            {
-                            aNextState = EVtSessionAnsweredDoPrepareCamera;
-                            }
-                        else
-                            {
-                            aNextState = EVtSessionAnsweredSetlectNone;
-                            }
-                    }
-                else
-                    {
-                    //MVtEngSessionInfo::EDirectionMO
-                    aNextState = EVtSessionAnsweredDoPrepareCamera;
-                    }
-                }
-            else
-                {
-                aNextState = EVtSessionAnsweredSetlectNone;
-                }
-            }
-            break;
-            
-        case EVtSessionAnsweredSetlectNone:
-            {
-            ActiveExecInitSetSourceL( MVtEngMedia::EMediaNone, aRequest );
-            aNextState = EVtSessionAnsweredStartViewFinder;            
-            }
-            break;
-        case EVtSessionAnsweredDoPrepareCamera:
-            {
-            MVtEngMedia& media = iModel->Media();
-            MVtEngMedia::TMediaSource source = MVtEngMedia::EMediaCamera;
-            ActiveExecInitPrepareCameraL( source, aRequest );
-            aNextState = EVtSessionAnsweredSetlectCamera;
-            }
-            break;
-            
-        case EVtSessionAnsweredSetlectCamera:
-            ActiveExecInitSetSourceL( MVtEngMedia::EMediaCamera, aRequest );
-            aNextState = EVtSessionAnsweredStartViewFinder;
-            break;
-            
-        case EVtSessionAnsweredStartViewFinder:
-            ActiveExecInitExecuteCommandL( KVtEngStartViewFinder, aRequest );
-            aNextState = EVtSessionAnsweredBringToForeground;            
-            break;
-            
-        case EVtSessionAnsweredBringToForeground:
-            {
-            //CreateVideoWindowsL();
-            
-            ChangeApplicationFocus(ETrue);
-            TRequestStatus* status = &aRequest;
-            User::RequestComplete( status, KErrNone );            
-            aNextState = EVtSessionAnsweredFinish;
-            }
-            break;
-            
-        case EVtSessionAnsweredFinish:
-            {          
-            //iRwGroup->SetOrdinalPosition( 1 , ECoeWinPriorityNormal );
-            
-            TBool handleAsForeground( ETrue );
-            TPtrC8 params( reinterpret_cast< TUint8* >( &handleAsForeground ), sizeof( TBool ) );
-            MVtEngCommandHandler& command = iModel->CommandHandler();            
-            TRAPD( err, command.ExecuteL( KVtEngSetUIForeground, &params ));
-            if(err != KErrNone)
-                {
-                err = KErrNone;
-                }
-            
-            iLcVtStates->Update();
-            
-            iObserver->StateChanged( *iLocalVideoPlayer );
-            iObserver->StateChanged( *iRemoteVideoPlayer );            
-            
-            synch = ETrue;
-            aNextState = EVtSessionNone;
-            }
-            break;
-        }
-    
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.ActiveExecInitExecuteL.sync=%d", synch )
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.ActiveExecInitExecuteL.next=%d", aNextState )
-    __VTPRINTEXITR( "CLcVtSession.ActiveExecInitExecuteL %d", synch )
-    return synch;
-    
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecInitContinue
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtSession::ActiveExecInitContinue(
-        TInt& aState,
-        const TInt /*aError*/ )
-    {
-    __VTPRINTENTER( "CLcVtSession.InitExecCont" )
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.InitExecCont.st=%d", aState ) 
-
-    const TBool cont = EFalse;
-    __VTPRINT2( DEBUG_GEN, "VtUi.InitExecCont.cont=%d", cont )
-
-    if ( !cont )
-        {
-        // Operation failed.
-        if ( iState )
-            {
-            TRAP_IGNORE( iState->LcVtStartupFailedL() );
-            }
-        }
-    __VTPRINTEXITR( "VtUi.InitExecCont %d", cont )
-    return cont;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecInitExecuteCommandL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ActiveExecInitExecuteCommandL(
-        const TVtEngCommandId aCommand,
-        TRequestStatus& aRequest )
-    {
-    iCmdExecutor =
-        ExecuteCmdAsyncL(
-        &iCmdExecutor,
-        aCommand,
-        aRequest );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecInitPrepareViewFinderL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ActiveExecInitPrepareViewFinderL(
-        TRequestStatus& aRequest )
-    {
-    
-    __VTPRINTENTER( "CLcVtSession.ActiveExecInitPrepareViewFinderL" )
-        
-    TRect VFRect = LocalVideoPlayer()->LcWindow()->LcWindowRect();    
-    TSize size (VFRect.Size());
-    
-#ifdef NGA_VIDEO_RENDER  
-    
-    __VTPRINT3(DEBUG_GEN,  "CLcVtSession.ActiveExecInitPrepareViewFinderL size(%d,%d)", size.iWidth, size.iHeight )    
-    
-    iLocalVideoWindow->SetPosition( VFRect.iTl );    
-    iLocalVideoWindow->SetSize( VFRect.Size() ); 
-    
-    iRwSession.Flush(); 
-        
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.VFRect.iTl.iX: %d", VFRect.iTl.iX )
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.VFRect.iTl.iY: %d", VFRect.iTl.iY )
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.VFRect.iWidth: %d", VFRect.Width() )
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.VFRect.iHeight: %d", VFRect.Height() )  
-                   
-    TVtEngRenderingOptionsNGA configViewfinder( *iLocalVideoWindow, iRwSession );
-    iCmdExecutor =
-          ExecuteCmdAsyncL(
-              &iCmdExecutor,
-              KVtEngPrepareViewFinder,
-              configViewfinder,
-              aRequest );   
-    
-    
-    /*
-    TPoint point( 0, 0 );
-    TRect vfRect( point, size ); 
-     
-    TVtEngRenderingOptionsDSA configViewfinder(*iEventObserver, iRwSession ,*iDev, *iLocalVideoWindow, vfRect, vfRect);    
-
-    iCmdExecutor =
-          ExecuteCmdAsyncL(
-              &iCmdExecutor,
-              KVtEngPrepareViewFinderDSA,
-              configViewfinder,
-              aRequest );
-              */                  
-    
-#else
-    
-    __VTPRINT3(DEBUG_GEN,  "CLcVtSession.ActiveExecInitPrepareViewFinderL size(%d,%d)", size.iWidth, size.iHeight )    
-    
-    TVtEngRenderingOptions configViewfinder(*iEventObserver, size);
-
-    iCmdExecutor =
-          ExecuteCmdAsyncL(
-              &iCmdExecutor,
-              KVtEngPrepareViewFinder,
-              configViewfinder,
-              aRequest );   
-    
-#endif    
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecInitPrepareRemoteRenderL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ActiveExecInitPrepareRemoteRenderL(
-        TRequestStatus& aRequest )
-    {
-    
-    TRect RMRect = RemoteVideoPlayer()->LcWindow()->LcWindowRect();    
-    const TSize KRMsize( RMRect.Size());
-    TRect screen( KRMsize );
-    TRect clip( KRMsize );        
-    
-#ifdef NGA_VIDEO_RENDER 
-        
-    iRemoteVideoWindow->SetPosition( RMRect.iTl );
-    iRemoteVideoWindow->SetSize( RMRect.Size() );    
-    
-    iRwSession.Flush(); 
-    
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iTl.iX: %d", RMRect.iTl.iX )
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iTl.iY: %d", RMRect.iTl.iY )
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iWidth: %d", RMRect.Width() )
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iHeight: %d", RMRect.Height() )   
-       
-       
-    TVtEngRenderingOptionsNGA configRemoteRender( *iRemoteVideoWindow, iRwSession );    
-    iCmdExecutor =
-        ExecuteCmdAsyncL(
-            &iCmdExecutor,
-            KVtEngPrepareRemoteRenderNGA,
-            configRemoteRender,
-            aRequest );
-    
-#else
-
-    const TPoint KRMcordinate( RMRect.iTl.iX,  RMRect.iTl.iY );
-    
-    TVtEngRenderingOptionsDP configRemoteRender(*iEventObserver, *iWsSession ,*iWsSessionScreenDev, *iMainWindow, screen, clip, KRMcordinate );  
-
-    iCmdExecutor =
-        ExecuteCmdAsyncL(
-            &iCmdExecutor,
-            KVtEngPrepareRemoteRenderDP,
-            configRemoteRender,
-            aRequest );
-    
-#endif
-    
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecInitPrepareCameraL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ActiveExecInitPrepareCameraL(
-        const MVtEngMedia::TMediaSource aSource,
-        TRequestStatus& aRequest )
-    {
-    MVtEngMedia::TPrepareCameraParams params;
-    params.iMediaSource = aSource;
-    params.iInitialize = ETrue;
-    iCmdExecutor =
-        ExecuteCmdAsyncL(
-            &iCmdExecutor,
-            KVtEngPrepareCamera,
-            params,
-            aRequest );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecInitSetSourceL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ActiveExecInitSetSourceL(
-        const MVtEngMedia::TMediaSource aSource,
-        TRequestStatus& aRequest )
-    {
-    MVtEngMedia::TMediaSource source =
-        aSource;
-    iCmdExecutor =
-        ExecuteCmdAsyncL(
-            &iCmdExecutor,
-            KVtEngSetSource,
-            source,
-            aRequest );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ExecuteCmdAsyncL
-// -----------------------------------------------------------------------------
-//
-CLcVtCmdExecutor* CLcVtSession::ExecuteCmdAsyncL(
-        CLcVtCmdExecutor** aDialogPtr,
-        const TVtEngCommandId aCommand,
-        TRequestStatus& aStatus )
-    {
-    return DoExecuteCmdAsyncL( aDialogPtr, aCommand, NULL, aStatus );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ExecuteCmdAsyncL
-// -----------------------------------------------------------------------------
-//
-template< class T >
-CLcVtCmdExecutor* CLcVtSession::ExecuteCmdAsyncL(
-        CLcVtCmdExecutor** aDialogPtr,
-        const TVtEngCommandId aCommand,
-        T& aParam,
-        TRequestStatus& aStatus )
-    {
-    TPtrC8 params( reinterpret_cast< TUint8* >( &aParam ), sizeof( T ) );
-    return DoExecuteCmdAsyncL( aDialogPtr, aCommand, &params, aStatus );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::DoExecuteCmdAsyncL
-// -----------------------------------------------------------------------------
-//
-CLcVtCmdExecutor* CLcVtSession::DoExecuteCmdAsyncL(
-        CLcVtCmdExecutor** aDialogPtr,
-        const TVtEngCommandId aCommand,
-        TDesC8* aParams,
-        TRequestStatus& aStatus )
-    {
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.DoExecAsync.cmd=%d", aCommand )
-    MVtEngCommandHandler& command = iModel->CommandHandler();
-    const TInt caps = command.GetCommandCaps( aCommand );
-
-    if ( caps >= KErrNone )
-        {
-        const TBool asynchronous =
-            ( caps & MVtEngCommandHandler::EAttribAsync );
-
-        if ( asynchronous  )
-            {
-            CLcVtCmdExecutor* executor =
-                new ( ELeave ) CLcVtCmdExecutor(
-                    aDialogPtr,
-                    iModel->CommandHandler(),
-                    *iEventObserver );
-            executor->ExecuteCmdL( aCommand, aParams, &aStatus );
-            return executor;
-            }
-        else
-            {
-            command.ExecuteL( aCommand, aParams );
-            RefreshStatesL();
-            TRequestStatus* status = &aStatus;
-            User::RequestComplete( status, KErrNone );
-            }
-        }
-    else
-        {
-        // Failed.
-        User::Leave( caps );
-        }
-    
-    return NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ExecuteCmdL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ExecuteCmdL( const TVtEngCommandId aCommand )
-    {
-    DoExecuteCmdL( aCommand, NULL );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ExecuteCmdL
-// -----------------------------------------------------------------------------
-//
-template< class T >
-void CLcVtSession::ExecuteCmdL(
-        const TVtEngCommandId aCommand,
-        T& aParam )
-    {
-    TPtrC8 params( reinterpret_cast< TUint8* >( &aParam ), sizeof( T ) );
-    DoExecuteCmdL( aCommand, &params );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::DoExecuteCmdL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::DoExecuteCmdL(
-        const TVtEngCommandId aCommand,
-        TDesC8* aParams )
-    {
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.DoExec.cmd=%d", aCommand )
-    MVtEngCommandHandler& command = iModel->CommandHandler();
-    const TInt caps = command.GetCommandCaps( aCommand );
-
-    if ( caps >= KErrNone )
-        {
-        const TBool asynchronous =
-            ( caps & MVtEngCommandHandler::EAttribAsync );
-
-        if ( asynchronous  )
-            {            
-            CLcVtCmdExecutor* executor =
-                new ( ELeave ) CLcVtCmdExecutor(
-                    NULL,
-                    iModel->CommandHandler(),
-                    *iEventObserver );
-            iUiProvider->BlockUi(ETrue);
-            //executor->ExecuteCmdL( aCommand, aParams, NULL );
-            TRAPD( err, executor->ExecuteCmdL( aCommand, aParams, NULL ) );
-            iUiProvider->BlockUi(EFalse);
-            if(err != KErrNone)
-                User::Leave(err);
-            
-            }
-        else
-            {
-            command.ExecuteL( aCommand, aParams );
-            RefreshStatesL();
-            }
-        }
-    else
-        {
-        // Failed.
-        User::Leave( caps );
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::Execute
-// -----------------------------------------------------------------------------
-//
-TInt CLcVtSession::Execute( const TVtEngCommandId aCommand, TDesC8* aParam )
-    {
-    MVtEngCommandHandler& command = iModel->CommandHandler();
-    TRAPD( err, command.ExecuteL( aCommand, aParam ) );
-#ifdef VTDEBUG
-    if ( err != KErrNone )
-        {
-        __VTPRINT3( DEBUG_GEN, "CLcVtSession.Execute.Nok.cmd=%d,err=%d", aCommand, err )
-        }
-#endif // VTDEBUG
-    return err;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ChangeApplicationFocus
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ChangeApplicationFocus( const TBool aForeground )
-    {
-    __VTPRINTENTER( "CLcVtSession.ChangeApplicationFocus" )
-    if ( iUiProvider ){
-        iUiProvider->HandleForegroundStatus(aForeground);
-    }
-    __VTPRINTEXIT( "CLcVtSession.ChangeApplicationFocus" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ChangeState
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ChangeState( TLcVtStateBase* aState )
-    {
-    __VTPRINTENTER( "CLcVtSession.ChangeState" )
-    iState = aState;
-    __VTPRINTEXIT( "CLcVtSession.ChangeState" )
-    }
-
-#if 0
-// -----------------------------------------------------------------------------
-// CLcVtSession::StartDtmfTone
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::StartDtmfTone( const TChar& aTone )
-    {
-    // should be called only through current application state
-    iDtmfTone = aTone;
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.DTMF.Start.%d", iDtmfTone() )
-    if ( Execute( KVtEngStartDtmfTone, &iDtmfTone ) != KErrNone )
-        {
-        iDtmfTone = 0;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::StopDtmfTone
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::StopDtmfTone()
-    {
-    // should be called only through current application state
-    if ( iDtmfTone() )
-        {
-        __VTPRINT( DEBUG_GEN, "CLcVtSession.DTMF.STOP" )
-        (void) Execute( KVtEngStopDtmfTone, NULL );
-        iDtmfTone = 0;
-        }
-    }
-#endif
-// -----------------------------------------------------------------------------
-// CLcVtSession::SetCallIdL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::SetCallIdL( const TInt aCallId )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::SetCallNameL
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtSession::SetCallNameL( const TDesC& aName )
-    {
-    HBufC* name = aName.AllocL();
-    delete iRemoteDisplayName;
-    iRemoteDisplayName = name;
-    return ETrue;
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::SetCallNameL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::SetCallNumberL( const TDesC& aNumber )
-    {
-    HBufC* number = aNumber.AllocL();
-    delete iRemoteDetails;
-    iRemoteDetails = number;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::StartShutdown
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::StartShutdown()
-    {
-    __VTPRINTENTER( "CLcVtSession.StartShutdown" )
-    iSessionState = EClosing;
-    if ( iObserver != NULL )
-        {
-        iObserver->StateChanged( *this ); 
-        }
-    //iUiProvider->BlockUi(ETrue);
-    __VTPRINTEXIT( "CLcVtSession.StartShutdown" )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::NumberSource
-// -----------------------------------------------------------------------------
-//
-TDesC* CLcVtSession::NumberSource() const
-    {
-    return NULL;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::RefreshL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::RefreshL( const TInt aRefreshFlags )
-    {
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::RefreshStatesL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::RefreshStatesL()
-    {
-    __VTPRINTENTER( "CLcVtSession.RefreshStatesL" )
-    // If transaction (set of commands) is pending refresh in delayed until
-    // all of them are processed.
-    __VTPRINTEXIT( "CLcVtSession.RefreshStatesL" )
-    }
-
-#if 0
-// -----------------------------------------------------------------------------
-// CLcVtSession::HandleLayoutChanged
-// -----------------------------------------------------------------------------
-//
-TInt CLcVtSession::HandleLayoutChanged()
-    {
-    __VTPRINTENTER( "CLcVtSession.HandleLayoutChanged" )
-    iLayoutChangeCallback->CallBack();
-    __VTPRINTEXIT( "CLcVtSession.HandleLayoutChanged" )
-    return KErrNone;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::DelayedHandleLayoutChanged
-// -----------------------------------------------------------------------------
-//
-TInt CLcVtSession::DelayedHandleLayoutChanged( TAny* aPtr )
-    {
-    __VTPRINTENTER( "CLcVtSession.DelayedHandleLayoutChanged" )
-    CLcVtSession* self = reinterpret_cast< CLcVtSession* > ( aPtr );
-    //self->iUiStates->SetDisableBlindSetting( ETrue );
-    TRAPD( err, self->HandleLayoutChangedL() );
-    //self->iUiStates->SetDisableBlindSetting( EFalse );
-    //self->RefreshBlind();
-    __VTPRINTENTER( "CLcVtSession.DelayedHandleLayoutChanged" )
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::HandleLayoutChangedL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::HandleLayoutChangedL()
-    {
-    __VTPRINTENTER( "CLcVtSession.LayoutChg" )
-    
-    if ( iState )
-    {
-    iState->HandleLayoutChangedL();
-    }
-    
-    /*
-    if ( !iAllowVideoDlgShowed )
-        {
-        if ( iState )
-            {
-            iState->HandleLayoutChangedL();
-            }
-        }
-    else
-        {
-        iUiStates->SetLayoutChangeNeeded( EFalse );
-        DoHandleLayoutChangedL();
-        }
-        */
-    __VTPRINTEXIT( "CLcVtSession.LayoutChg" )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::DoHandleLayoutChangedL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::DoHandleLayoutChangedL()
-    {
-    __VTPRINTENTER( "CLcVtSession.DoLayoutChg" )
-    
-    // Fully update rendering parameters
-    UpdateRenderingParametersL();
-    // Notify engine about layout change
-    //iLayoutChg = ETrue;
-    TRAPD( error, ExecuteCmdL( KVtEngHandleLayoutChange ) );
-    //iLayoutChg = EFalse;
-
-    // Not ready error is allowed to happen (e.g. when sharing)
-    if ( error && ( error != KErrNotReady ) )
-        {
-        User::Leave( error );
-        }
-    else
-        {
-        __VTPRINT( DEBUG_GEN,
-            "CLcVtSession.DoLayoutChg KVtEngHandleLayoutChange == KErrNotReady (ok)" )
-        }
-        
-    __VTPRINTEXIT( "CLcVtSession.DoLayoutChg" )
-    }
-#endif
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::UpdateRenderingParametersL
-// -----------------------------------------------------------------------------
-//
-#ifdef NGA_VIDEO_RENDER
-
-void CLcVtSession::UpdateRenderingParametersL()
-    {
-    __VTPRINTENTER( "CLcVtSession.UpdateRenderingParametersL" )
-    
-    iRwGroup->SetOrdinalPosition( 1 , ECoeWinPriorityNormal );
-    
-    TRect RMRect = RemoteVideoPlayer()->LcWindow()->LcWindowRect();
-    iRemoteVideoWindow->SetExtent( RMRect.iTl, RMRect.Size() ); 
-    iRemoteVideoWindow->SetOrdinalPosition( 1 , ECoeWinPriorityNeverAtFront );
-    iRemoteVideoWindow->SetTransparencyAlphaChannel();
-    
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iTl.iX: %d", RMRect.iTl.iX )
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iTl.iY: %d", RMRect.iTl.iY )
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iWidth: %d", RMRect.Width() )
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iHeight: %d", RMRect.Height() )    
-    
-    
-    TRect VFRect = LocalVideoPlayer()->LcWindow()->LcWindowRect();
-    iLocalVideoWindow->SetExtent( VFRect.iTl, VFRect.Size() );
-    iLocalVideoWindow->SetOrdinalPosition( 1, ECoeWinPriorityNeverAtFront );
-    iLocalVideoWindow->SetTransparencyAlphaChannel();
-    
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.VFRect.iTl.iX: %d", VFRect.iTl.iX )
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.VFRect.iTl.iY: %d", VFRect.iTl.iY )
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.VFRect.iWidth: %d", VFRect.Width() )
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.VFRect.iHeight: %d", VFRect.Height() )    
-    
-    iRwSession.Flush();    
-
-    __VTPRINTEXIT( "CLcVtSession.UpdateRenderingParametersL" )
-    
-    }
-
-
-#else
-
-void CLcVtSession::UpdateRenderingParametersL()
-    {
-    
-    __VTPRINTENTER( "CLcVtSession.UpdateRenderingParametersL" )
-    
-    MVtEngMedia& media = iModel->Media();
-    const TBool viewFinderStarted =
-        media.RenderingStarted( MVtEngMedia::EMediaOutgoing );
-    const TBool remoteRenderStarted =
-        media.RenderingStarted( MVtEngMedia::EMediaIncoming );
-
-    // Stop viewfinder & remote render.
-    if( viewFinderStarted )
-        {
-        ExecuteCmdL( KVtEngStopViewFinder );
-        }
-    ExecuteCmdL( KVtEngStopRenderRemote );
-
-    TRect VFRect = LocalVideoPlayer()->LcWindow()->LcWindowRect();    
-    TSize size (VFRect.Size());  
-    
-    TVtEngRenderingOptions configViewfinder(*iEventObserver,size);
-
-    ExecuteCmdL( KVtEngPrepareViewFinder, configViewfinder );
-
-    // Prepare remote render.
-    TRect RMRect = RemoteVideoPlayer()->LcWindow()->LcWindowRect();    
-    const TSize KRMsize( RMRect.Size());
-    TRect screen( KRMsize );
-    TRect clip( KRMsize );
-    const TPoint KRMcordinate( RMRect.iTl.iX,  RMRect.iTl.iY );   
-    
-    TVtEngRenderingOptionsDP configRemoteRender(*iEventObserver, *iWsSession ,*iWsSessionScreenDev, *iMainWindow, screen, clip, KRMcordinate );  
-
-    TRAPD ( err, ExecuteCmdL(
-        KVtEngPrepareRemoteRenderDP,
-        configRemoteRender ) );    
-    
-     if ( err != KErrNone )
-        {
-        if ( viewFinderStarted )
-            {
-            // Start viewfinder.
-            ExecuteCmdL( KVtEngStartViewFinder );
-            }
-        User::Leave ( err );
-        } 
-
-    // Start remote render.
-    TRAP_IGNORE( ExecuteCmdL( KVtEngStartRenderRemote ) );
-
-    if ( viewFinderStarted )
-        {
-        // Start viewfinder.
-        ExecuteCmdL( KVtEngStartViewFinder );
-        }
-
-    __VTPRINTEXIT( "CLcVtSession.UpdateRenderingParametersL" )
-    
-    }
-
-#endif
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::HandleEngineResetL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::HandleEngineResetL()
-    {
-    __VTPRINTENTER( "CLcVtSession.HandleEngineResetL" )
-    if ( iShutdownRequest )
-        {
-        __VTPRINT( DEBUG_GEN, "  CLcVtSession.HandleEngineResetL shutdown" )
-        User::RequestComplete( iShutdownRequest, KErrNone );
-        iShutdownRequest = NULL;
-        }
-    __VTPRINTEXIT( "CLcVtSession.HandleEngineResetL" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::HandleShutdownReady
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::HandleShutdownReady()
-    {
-    __VTPRINTENTER( "CLcVtSession.HandleShutdownReady" )
-
-    if(iAsyncCallback->IsActive())
-        {
-        iAsyncCallback->Cancel();
-        }
-
-    iAsyncCallback->Set(
-        TCallBack( &DoExit, this ) );
-    iAsyncCallback->CallBack();
-    __VTPRINTEXIT( "CLcVtSession.HandleShutdownReady" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::DoExit
-// -----------------------------------------------------------------------------
-//
-TInt CLcVtSession::DoExit( TAny* aSession )
-    {
-    __VTPRINTENTER( "CLcVtSession.DoExit" )
-    CLcVtSession* self = static_cast< CLcVtSession* >( aSession );
-    self->iAsyncCallback->Cancel();
-    // Before exiting ensure there are no pending actions.
-    self->ActiveExecInitCancel( 0 );  
-    self->CloseApp();    
-    __VTPRINTEXIT( "CLcVtSession.DoExit" )
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CloseApp
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CloseApp()
-    {
-    __VTPRINTENTER( "CLcVtSession.CloseApp" )
-    //iUiProvider->BlockUi(EFalse);
-#if 0
-    if(iEventObserver)
-        {
-         delete iEventObserver;
-         iEventObserver = NULL;
-        }
-#endif
-    iSessionState = EClosed;
-    iObserver->StateChanged( *this ); 
-    __VTPRINTEXIT( "CLcVtSession.CloseApp" )
-    }
-
-// Implementation of CLcVtSession::CEventObserver
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CEventObserver::CEventObserver
-// -----------------------------------------------------------------------------
-//
-CLcVtSession::CEventObserver::CEventObserver( CLcVtSession& aSession )
-    :iSession(aSession),
-    iCommandObservers( KLcVtCommandObserverArrayGranularity )
-    {        
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CEventObserver::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CEventObserver::ConstructL()
-    {                
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CEventObserver::NewL
-// -----------------------------------------------------------------------------
-//
-CLcVtSession::CEventObserver* CLcVtSession::CEventObserver::NewL( CLcVtSession& aSession )
-   {
-   CEventObserver* self = new ( ELeave ) CEventObserver(aSession  );
-   CleanupStack::PushL( self );
-   self->ConstructL();
-   CleanupStack::Pop( self );
-   return self;
-   }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CEventObserver::~CEventObserver
-// -----------------------------------------------------------------------------
-//
-CLcVtSession::CEventObserver::~CEventObserver()
-   {
-   iCommandObservers.Close();        
-   }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CEventObserver::AddObserverL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CEventObserver::AddObserverL(
-       MVtEngCommandObserver& aObserver )
-    {
-    User::LeaveIfError(
-    iCommandObservers.Append( &aObserver ) );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CEventObserver::RemoveObserver
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CEventObserver::RemoveObserver(
-        MVtEngCommandObserver& aObserver )
-    {
-    const TInt pos = iCommandObservers.Find( &aObserver );
-    if ( pos != KErrNotFound )
-        {
-        if ( !iInCommandPerformed )
-            {
-            iCommandObservers.Remove( pos );
-            }
-        else
-            {
-            iCommandObservers[ pos ] = NULL;
-            }
-        }
-    }
-    
-
-void CLcVtSession::CEventObserver::HandleVtEventL( TInt aEvent )
-    {
-    __VTPRINTENTER( "CEventObserver.HandleVtEventL" )
-    __VTPRINT2( DEBUG_GEN, "CEventObserver.HandleVtEventL event=%d ",aEvent );
-    
-    /** Allow application state to handle event first. It may also deny further
-      * handling by indicating the event was handled */
-    if ( iSession.iState &&
-            iSession.iState->HandleVtEventL( aEvent )
-            == TLcVtStateBase::EEventHandled )
-        {
-        __VTPRINTEXITR( "CEventObserver.HandleVtEventL %d", 0 )
-        return;
-        }
-    
-    iSession.iLcVtStates->Update();
-    
-    iSession.iObserver->Updated(*(iSession.iLocalVideoPlayer));
-    iSession.iObserver->Updated(*(iSession.iRemoteVideoPlayer));    
-    
-    __VTPRINTEXIT( "CEventObserver.HandleVtEventL" )
-    }
-        
-void CLcVtSession::CEventObserver::HandleVTCommandPerformedL(
-        TVtEngCommandId aCommand,
-        const TInt aError )
-    {         
-     __VTPRINTENTER( "CEventObserver.HandleVTCommandPerformedL" )
-     __VTPRINT3( DEBUG_GEN, "CEventObserver.HandleVTCommandPerformedL cmd=%d , result=%d",aCommand, aError );   
-     
-     if ( iSession.iState &&
-             iSession.iState->HandleVTCommandPerformedL( aCommand, aError ) ==
-          TLcVtStateBase::EEventHandled )
-         {
-         // state didn't allow further processing of command completion
-         __VTPRINTEXITR( "CEventObserver.HandleVTCommandPerformedL %d", 0 )
-         return;
-         }
-     
-     iSession.RefreshStatesL();
-
-     iSession.iLcVtStates->Update();
-     
-     const TInt count = iCommandObservers.Count();
-     TInt nullPosition = KErrNotFound;
-
-     iInCommandPerformed = ETrue;
-
-     // iInCommandPerformed equals ETrue while inside the following loop;
-     // Exceptions must not be raised.
-     for ( TInt index = 0; index < count; index++ )
-         {
-         MVtEngCommandObserver* obs = iCommandObservers[ index ];
-         if ( obs )
-             {
-             TRAP_IGNORE( obs->HandleVTCommandPerformedL( aCommand, aError ) );
-             }
-         else
-             {
-             // We store only one position; eventually all NULL elements of the
-             // array will be removed.
-             nullPosition = index;
-             }
-         }
-     iInCommandPerformed = EFalse;
-
-     if ( nullPosition != KErrNotFound )
-         {
-         iCommandObservers.Remove( nullPosition );
-         }
-
-     
-     // Specific handling of some commands:
-     if ( aCommand == KVtEngResetEngine ) // Engine has been reset
-         {
-         //__ASSERT_ALWAYS( !aError, VtUiPanic::Panic( EVtUiPanicResetFailed ) );
-         iSession.HandleEngineResetL();
-         }
-         
-     
-     __VTPRINTEXITR( "CEventObserver.HandleVTCommandPerformedL %d", 1 )
-                  
-    }
-
-#ifndef NGA_VIDEO_RENDER
-void CLcVtSession::CEventObserver::vtHandleFrameL(
-         TFrameType aType,
-         CFbsBitmap* aBitmap )
-    {
-    iSession.vtHandleFrameL( aBitmap);
-    }
-
-void CLcVtSession::CEventObserver::vtSetFrame(
-        TFrameType aType,
-        CFbsBitmap* aBitmap )
-    {
-    }
-#endif
-
-TBool CLcVtSession::IsFeatureSupported( CLcEngine::TLcFeature aLcFeature )
-{
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.IsFeatureSupported feature=%d", aLcFeature)
-    TBool flag = EFalse;
-
-    switch ( aLcFeature )
-        {
-        case CLcEngine::ELcSendVideoQuery:
-            {
-            //MO call: return false; MT call: return true if key = Ask first, return false if key = No or Yes.
-            MVtEngSessionInfo::TDirection direction;
-            if ( iModel->Session().GetDirection( direction ) != KErrNone )
-                {
-                direction = MVtEngSessionInfo::EDirectionMT;
-                }
-            __VTPRINT2( DEBUG_GEN, "CLcVtSession.IsFeatureSupported direction=%d", direction )
-
-            if ( direction == MVtEngSessionInfo::EDirectionMT 
-                 && VideoSendingKey == KAllwaysQuery )
-                {
-                flag = ETrue;
-                }
-            }
-            break;
-
-        default:
-            break;
-        }
-
-    // return feature not supported if not handled
-    return flag;
-}
-
-// End of file
-
-/*
- * 
-// -----------------------------------------------------------------------------
-// CLcVtSession::UpdateLocalVideoRenderParamL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::UpdateLocalVideoRenderParamL()
-    { 
-    __VTPRINTENTER( "CLcVtSession.UpdateLocalVideoRenderParamL" )
-    
-    if(iLcVtStates->ExecState() != TLcVtStates::EExecStateRunning )
-        {
-        __VTPRINTEXIT( "CLcVtSession.UpdateLocalVideoRenderParamL -- not running state" )
-        return;
-        }
-    
-    MVtEngMedia& media = Model().Media();                
-    const TBool viewFinderStarted =
-        media.RenderingStarted( MVtEngMedia::EMediaOutgoing );
-    
-    if( viewFinderStarted )
-        {
-        ExecuteCmdL( KVtEngStopViewFinder );
-        }  
-    
-    TRect VFRect = LocalVideoPlayer()->LcWindow()->LcWindowRect();    
-    TSize size (VFRect.Size());  
-    
-    TVtEngRenderingOptions configViewfinder(*iEventObserver,size);
-
-    ExecuteCmdL( KVtEngPrepareViewFinder, configViewfinder );
-    
-    if ( viewFinderStarted )
-        {
-        // Start viewfinder.
-        ExecuteCmdL( KVtEngStartViewFinder );
-        }    
-    
-    __VTPRINTEXIT( "CLcVtSession.UpdateLocalVideoRenderParamL" )    
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::UpdateRemoteVideoRenderParamL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::UpdateRemoteVideoRenderParamL()
-    {    
-    __VTPRINTENTER( "CLcVtSession.UpdateRemoteVideoRenderParamL" )
-    
-    if(iLcVtStates->ExecState() != TLcVtStates::EExecStateRunning )
-        {
-        __VTPRINTEXIT( "CLcVtSession.UpdateRemoteVideoRenderParamL -- not running state" )
-        return;
-        }    
-    
-    MVtEngMedia& media = Model().Media();
-    const TBool remoteRenderStarted =
-        media.RenderingStarted( MVtEngMedia::EMediaIncoming );
-    
-    ExecuteCmdL( KVtEngStopRenderRemote );
-    
-    TRect RMRect = RemoteVideoPlayer()->LcWindow()->LcWindowRect();    
-    const TSize KRMsize( RMRect.Size());
-    TRect screen( KRMsize );
-    TRect clip( KRMsize );
-    const TPoint KRMcordinate( RMRect.iTl.iX,  RMRect.iTl.iY );    
-    
-    __VTPRINT2( DEBUG_MEDIA , "    RMRect.iTl.iX: %d", RMRect.iTl.iX)
-    __VTPRINT2( DEBUG_MEDIA , "    RMRect.iTl.iY: %d", RMRect.iTl.iY )
-    __VTPRINT2( DEBUG_MEDIA , "    RMRect.iWidth: %d", RMRect.Width() )
-    __VTPRINT2( DEBUG_MEDIA , "    RMRect.iHeight: %d", RMRect.Height() )    
-    
-    TVtEngRenderingOptionsDP configRemoteRender(*iEventObserver, *iWsSession ,*iWsSessionScreenDev, *iMainWindow, screen, clip, KRMcordinate );  
-
-    ExecuteCmdL(
-        KVtEngPrepareRemoteRenderDP,
-        configRemoteRender );    
-    
-    TRAP_IGNORE( ExecuteCmdL( KVtEngStartRenderRemote ) );
-    
-    __VTPRINTEXIT( "CLcVtSession.UpdateRemoteVideoRenderParamL" )
-
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::LayoutChangedL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::LayoutChangedL()
-    {    
-    __VTPRINTENTER( "CLcVtSession.LayoutChangedL" )
-    
-    if(iLcVtStates->ExecState() != TLcVtStates::EExecStateRunning )
-        {
-        __VTPRINTEXIT( "CLcVtSession.LayoutChangedL -- not running state" )
-        return;
-        }    
-    
-    TRAPD( error, ExecuteCmdL( KVtEngHandleLayoutChange ) );
-    
-    __VTPRINTEXIT( "CLcVtSession.LayoutChangedL" )
-    }
- 
- */
--- a/vtuis/lcvtplugin/src/base/dllmain.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
-* ==============================================================================
-*  Name        : dllmain.cpp
-*  Part of     : 
-*  Description : 
-*  Version     : 
-*
-*  Copyright ?2004 Nokia Corporation.
-*  This material, including documentation and any related
-*  computer programs, is protected by copyright controlled by
-*  Nokia Corporation. All rights are reserved. Copying,
-*  including reproducing, storing, adapting or translating, any
-*  or all of this material requires the prior written consent of
-*  Nokia Corporation. This material also contains confidential
-*  information which may not be disclosed to others without the
-*  prior written consent of Nokia Corporation.
-* ==============================================================================
-*/
-#include <e32std.h>
-#include <implementationproxy.h>
-#include "clcvtengine.h"
-
-// Map the interface UIDs to implementation factory functions
-const TImplementationProxy Implementations[] =
-    {
-    IMPLEMENTATION_PROXY_ENTRY( 0x20021342, CLcVtEngine::NewL )
-    };
-
-// -----------------------------------------------------------------------------
-// ImplementationGroupProxy
-//
-// Exported proxy for instantiation method resolution
-// -----------------------------------------------------------------------------
-//
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aCount )
-    {
-    aCount = sizeof( Implementations ) / sizeof( TImplementationProxy );
-    return Implementations;
-    }
--- a/vtuis/lcvtplugin/src/common/lcvtutility.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,319 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Implementation of the VtUiUtility class.
-*
-*/
-
-
-
-// INCLUDE FILES
-#include    "lcvtutility.h"
-#include    <featmgr.h>
-#include    <mvtengmedia.h>
-#include    <cvtlogger.h>
-
-// Characters to open number entry.
-//_LIT( KVtUiDTMFCharacters, "0123456789*#" );
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// LcVtUtility::GetAudioRoutingAvailability
-// -----------------------------------------------------------------------------
-//
-void LcVtUtility::GetAudioRoutingAvailability(
-        MVtEngAudio& aAudio,
-        TInt& aAvailable )
-    {
-    aAvailable = 0;    
-    //const TBool bluetoothAudioSupported = ETrue;        
-
-    MVtEngAudio::TAudioRoutingState routingState;
-    if ( aAudio.GetRoutingState( routingState ) == KErrNone )
-        {
-        // Deactivate BT handsfree.
-        if ( /*bluetoothAudioSupported &&*/
-             IsAudioRoutingAvailable(
-                aAudio,
-                routingState,
-                MVtEngAudio::EAudioBT,
-                MVtEngAudio::EAudioHandset ) )
-            {
-            aAvailable |= EDeactivateBtHandsfree;
-            }
-
-        // Activate BT handsfree.
-        if ( /*bluetoothAudioSupported &&*/
-             ( IsAudioRoutingAvailable(
-                 aAudio,
-                 routingState,
-                 MVtEngAudio::EAudioHandset,
-                 MVtEngAudio::EAudioBT ) ||
-               IsAudioRoutingAvailable(
-                aAudio,
-                routingState,
-                MVtEngAudio::EAudioLoudspeaker,
-                MVtEngAudio::EAudioBT ) ) )
-            {
-            aAvailable |= EActivateBtHandsfree;
-            }
-
-        // Deactivate loudspeaker
-        if ( IsAudioRoutingAvailable(
-                aAudio,
-                routingState,
-                MVtEngAudio::EAudioLoudspeaker,
-                MVtEngAudio::EAudioHandset ) )
-            {
-            aAvailable |= EDeactivateLoudspeaker;
-            }
-
-        // Activate loudspeaker
-        if ( IsAudioRoutingAvailable(
-                aAudio,
-                routingState,
-                MVtEngAudio::EAudioHandset,
-                MVtEngAudio::EAudioLoudspeaker ) ||
-             ( /*bluetoothAudioSupported &&*/ 
-               IsAudioRoutingAvailable( 
-                   aAudio,
-                   routingState, 
-                   MVtEngAudio::EAudioBT, 
-                   MVtEngAudio::EAudioLoudspeaker ) ) )
-            {
-            aAvailable |= EActivateLoudspeaker;
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// LcVtUtility::GetOutgoingMediaState
-// -----------------------------------------------------------------------------
-//
-void LcVtUtility::GetOutgoingMediaState(
-        MVtEngMedia& aMedia,
-        TInt& aAvailable )
-    {
-    TInt outgoingMediaState;
-    const TInt err =
-        aMedia.GetMediaState(
-            MVtEngMedia::EMediaOutgoing,
-            outgoingMediaState );
-    if ( err == KErrNone )
-        {
-        // If source is still image, then video sending is off.
-        MVtEngMedia::TMediaSource source;
-        if ( aMedia.GetSource( source ) == KErrNone )
-            {
-            if ( source == MVtEngMedia::EMediaStillImage )
-                {
-                outgoingMediaState &= ~MVtEngMedia::EMediaVideo;
-                }
-            }
-        TBool freezeSupported;
-        if( aMedia.GetFreezeSupported( freezeSupported ) == KErrNone )
-            {
-            TBool isFrozen;
-            if( freezeSupported && aMedia.GetFreezeState( isFrozen ) == KErrNone )
-                {
-                if( isFrozen )
-                    {
-                    outgoingMediaState &= ~MVtEngMedia::EMediaVideo;
-                    }
-                }
-            }
-        }
-    else
-        {
-        outgoingMediaState =
-            ( MVtEngMedia::EMediaAudio | MVtEngMedia::EMediaVideo );
-        }
-    aAvailable = outgoingMediaState;
-    }
-
-// -----------------------------------------------------------------------------
-// LcVtUtility::GetIncomingMediaState
-// -----------------------------------------------------------------------------
-//
-void LcVtUtility::GetIncomingMediaState(
-        MVtEngMedia& aMedia,
-        TInt& aAvailable )
-    {
-    TInt mediaState;
-    const TInt err =
-        aMedia.GetMediaState(
-            MVtEngMedia::EMediaIncoming,
-            mediaState );
-    if ( err != KErrNone )
-        {
-        mediaState =
-            ( MVtEngMedia::EMediaAudio | MVtEngMedia::EMediaVideo );
-        }
-
-    aAvailable = mediaState;
-    }
-
-// -----------------------------------------------------------------------------
-// LcVtUtility::HasStillImage
-// -----------------------------------------------------------------------------
-//
-TBool LcVtUtility::HasStillImage(
-        MVtEngMedia& aMedia )
-    {
-    TInt caps;
-    const TInt capsErr = aMedia.GetSourcesCaps( caps );
-    return ( capsErr == KErrNone ) &&
-           ( caps & MVtEngMedia::ESourceCapsStillImage );
-    }
-
-// -----------------------------------------------------------------------------
-// LcVtUtility::GetFreezeState
-// -----------------------------------------------------------------------------
-//
-TBool LcVtUtility::GetFreezeState(
-        MVtEngMedia& aMedia )
-    {
-    TBool isFrozen;
-    const TInt err = aMedia.GetFreezeState( isFrozen );
-    if ( err == KErrNone )
-        {
-        return isFrozen;
-        }
-    else //provider was not ready
-        {
-        return EFalse;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// LcVtUtility::IsFreezeSupported
-// -----------------------------------------------------------------------------
-//
-TBool LcVtUtility::IsFreezeSupported(
-        MVtEngMedia& aMedia )
-    {
-    TBool isFreezeSupported;
-    const TInt err = aMedia.GetFreezeSupported( isFreezeSupported );
-    if ( err == KErrNone )
-        {
-        return isFreezeSupported;
-        }
-    else //provider was not ready
-        {
-        return EFalse;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// LcVtUtility::GetVideoQuality
-// -----------------------------------------------------------------------------
-//
-void LcVtUtility::GetVideoQuality(
-            MVtEngMedia& aMedia,
-            MVtEngMedia::TVideoQuality& aVideoQuality )
-    {
-    aMedia.GetVideoQuality( aVideoQuality );
-    }
-
-// -----------------------------------------------------------------------------
-// LcVtUtility::GetObjectSharingState
-// -----------------------------------------------------------------------------
-//
-void LcVtUtility::GetObjectSharingState(
-    MVtEngMedia& aMedia,
-    MVtEngMedia::TShareObjectState& aShareObjectState )
-    {
-    aMedia.GetObjectSharingState( aShareObjectState );
-    }
-
-
-// -----------------------------------------------------------------------------
-// LcVtUtility::IsZoomAllowed
-// -----------------------------------------------------------------------------
-//
-TBool LcVtUtility::IsZoomAllowed(
-        MVtEngMedia& aMedia )
-    {
-    TBool result = EFalse;
-
-    TInt currentStep;
-    if ( aMedia.GetCurrentZoomStep( currentStep ) == KErrNone )
-        {
-        TInt max;
-        if ( aMedia.GetMaxZoomStep( max ) == KErrNone )
-            {
-            // Zooming is allowed if maximum zoom step is greater than
-            // zero and camera is in use (and not still image / none).
-            TInt avail;
-            GetOutgoingMediaState( aMedia, avail );
-
-            result = ( max > 0 ) && ( avail & MVtEngMedia::EMediaVideo );
-            }
-        }
-
-    __VTPRINT2( DEBUG_GEN, "Ui.AllowZoom.%d", result )
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// LcVtUtility::HasCameras
-// -----------------------------------------------------------------------------
-//
-TBool LcVtUtility::HasCameras( MVtEngMedia& aMedia )
-    {
-    TInt sourceCaps;
-    if ( aMedia.GetSourcesCaps( sourceCaps ) != KErrNone )
-        {
-        sourceCaps = 0;
-        }
-    return ( sourceCaps & MVtEngMedia::ESourceCapsPrimaryCamera ) ||
-           ( sourceCaps & MVtEngMedia::ESourceCapsSecondaryCamera );
-    }
-
-// -----------------------------------------------------------------------------
-// LcVtUtility::IsAudioRoutingAvailable
-// -----------------------------------------------------------------------------
-//
-TBool LcVtUtility::IsAudioRoutingAvailable(
-        MVtEngAudio& aAudio,
-        const MVtEngAudio::TAudioRoutingState aCurrent,
-        const MVtEngAudio::TAudioRoutingState aSource,
-        const MVtEngAudio::TAudioRoutingState aTarget )
-    {
-    TBool result = EFalse;
-    if ( aCurrent == aSource )
-        {
-        TBool available = EFalse;
-        TInt err = aAudio.GetRoutingAvailability( aTarget, available );
-
-        result = ( ( err == KErrNone ) && ( available ) );
-        }
-
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// LcVtUtility::IsDTMFCharacter
-// -----------------------------------------------------------------------------
-//
-TBool LcVtUtility::IsDTMFCharacter( const TChar aChar )
-    {
-    return EFalse;
-    /*
-    return
-        ( KVtUiDTMFCharacters().Locate( aChar ) != KErrNotFound );
-        */
-    }
-
-//  End of File
--- a/vtuis/lcvtplugin/src/common/tlcvtaudiostate.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Audio state class.
-*
-*/
-
-
-#include <cvtengmodel.h>
-
-#include "tlcvtaudiostate.h"
-#include "lcvtutility.h"
-
-// -----------------------------------------------------------------------------
-// TLcVtAudioState::UpdateFlags
-// -----------------------------------------------------------------------------
-//
-void TLcVtAudioState::UpdateFlags()
-    {
-    TInt avail( 0 );
-
-    LcVtUtility::GetAudioRoutingAvailability( iModel.Audio(), avail );
-
-    const TBool videoCallConnected ( iModel.Media().VideoCallConnected());
-    //Before update AudioRouting, video call state must to be checked.
-    //AudioRouting can not be changed if call is not in EConnected state.
-    if ( videoCallConnected )
-        {
-        if ( avail & LcVtUtility::EDeactivateBtHandsfree )
-            {
-            SetFlag( ECanDeactivateBtHf );
-            }
-        if ( avail & LcVtUtility::EActivateBtHandsfree )
-            {
-            SetFlag( ECanActivateBtHf );
-            }
-        if ( avail & LcVtUtility::EDeactivateLoudspeaker )
-            {
-            SetFlag( ECanDeactivateLoudspeaker );
-            }
-        if ( avail & LcVtUtility::EActivateLoudspeaker )
-            {
-            SetFlag( ECanActivateLoudspeaker );
-            }
-        }
-
-    LcVtUtility::GetOutgoingMediaState( iModel.Media(), avail );
-
-    if ( avail & MVtEngMedia::EMediaAudio )
-        {
-        SetFlag( EIsAudio );
-        }
-
-    TInt status ( 0 );
-    iModel.Media().GetMediaState( MVtEngMedia::EMediaOutgoing, status );
-    if ( !(status & MVtEngMedia::EMediaAudioChannelOpen ) )
-        {
-        SetFlag( EIsAudioPermanentlyStopped );
-        }
-
-    }
--- a/vtuis/lcvtplugin/src/common/tlcvtmediastate.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Media state class.
-*
-*/
-
-
-#include <cvtlogger.h>
-#include <mvtengmedia.h>
-#include <mvtengcommandhandler.h>
-
-#include "tlcvtmediastate.h"
-#include "lcvtutility.h"
-
-// -----------------------------------------------------------------------------
-// TLcVtMediaState::UpdateFlags
-// -----------------------------------------------------------------------------
-//
-void TLcVtMediaState::UpdateFlags()
-    {
-    __VTPRINTENTER( "MediaState.UpdateFlags" )
-    TInt avail( 0 );
-
-    LcVtUtility::GetOutgoingMediaState( iMedia, avail );
-
-    if ( avail & MVtEngMedia::EMediaVideo )
-        {
-        SetFlag( EIsVideo );
-        }
-
-    if ( LcVtUtility::HasCameras( iMedia ) )
-        {
-        SetFlag( EHasCamera );
-        }
-
-    if ( LcVtUtility::IsFreezeSupported( iMedia ) )
-        {
-        SetFlag( EIsFreezeSupported );
-        }
-
-    if ( LcVtUtility::GetFreezeState( iMedia ) )
-        {
-        SetFlag( EIsFrozen );
-        }
-
-    MVtEngMedia::TShareObjectState shareObjectState;
-    LcVtUtility::GetObjectSharingState( iMedia, shareObjectState );
-
-    if ( shareObjectState == MVtEngMedia::ESharingImage )
-        {
-        SetFlag( EIsSharing );
-        }
-    else if ( ( shareObjectState == MVtEngMedia::EInitializingShareImage ) ||
-         ( shareObjectState == MVtEngMedia::EInitializingShareVideoClip ) )
-        {
-        SetFlag( EIsInitializingShare );
-        }
-    else if ( shareObjectState == MVtEngMedia::ENotAbleToShare )
-        {
-        SetFlag( EIsNotAbleToShare );
-        }
-    // Camera configuration
-
-    MVtEngMedia::TCameraId cameraId;
-    TInt err = iMedia.GetCurrentCameraId( cameraId );
-
-    // Don't care if camera is not ready, just what is selected camera
-    if ( err == KErrNone || err == KErrNotReady )
-        {
-        SetFlag( ( cameraId == MVtEngMedia::EPrimaryCamera ) ?
-            EIsPrimaryCameraInUse : EIsSecondaryCameraInUse );
-        }
-
-    TInt sourcesCaps( 0 );
-    iMedia.GetSourcesCaps( sourcesCaps );
-    if ( sourcesCaps & MVtEngMedia::ESourceCapsPrimaryCamera )
-        {
-        SetFlag( EHasPrimaryCamera );
-        }
-    if ( sourcesCaps & MVtEngMedia::ESourceCapsSecondaryCamera )
-        {
-        SetFlag( EHasSecondaryCamera );
-        }
-       
-    TInt status ( 0 ); 
-    iMedia.GetMediaState( MVtEngMedia::EMediaOutgoing, status );
-    if ( !( status & MVtEngMedia::EMediaVideoChannelOpen ) )
-        {        
-        SetFlag( EIsVideoPermanentlyStopped );
-        }      
-
-    __VTPRINTEXITR( "MediaState.UpdateFlags bits = %b", Value() )
-
-    // Video preferences
-/*
-    TInt caps( iCommandHandler.GetCommandCaps( KVtEngSetContrast ) );
-    if ( caps & MVtEngCommandHandler::EAttribEnabled )
-        {
-        SetFlag( EIsContrastSupported );
-        }
-
-    caps = iCommandHandler.GetCommandCaps( KVtEngSetBrightness );
-    if ( caps & MVtEngCommandHandler::EAttribEnabled )
-        {
-        SetFlag( EIsBrightnessSupported );
-        }
-
-    caps = iCommandHandler.GetCommandCaps( KVtEngSetWhiteBalance );
-    if ( caps & MVtEngCommandHandler::EAttribEnabled )
-        {
-        SetFlag( EIsWhiteBalanceSupported );
-        }
-
-    caps = iCommandHandler.GetCommandCaps( KVtEngSetColorTone );
-    if ( caps & MVtEngCommandHandler::EAttribEnabled )
-        {
-        SetFlag( EIsColorToneSupported );
-        }
-
-*/
-    }
--- a/vtuis/lcvtplugin/src/common/tlcvtstates.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,136 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Video UI states class.
-*
-*/
-
-
-#include <cvtengmodel.h>
-#include <mvtengcamerapreferences.h>
-#include <cvtlogger.h>
-
-#include "tlcvtstates.h"
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::TLcVtStates
-// -----------------------------------------------------------------------------
-//
-TLcVtStates::TLcVtStates( CVtEngModel& aModel )
-    : iMediaState( aModel.Media(), aModel.CommandHandler() ), iAudioState( aModel ),
-    iModel( aModel ), iExecState( EExecStateStarting)    
-    {
-    // get camera preferences
-    iCameraPref = static_cast<MVtEngCameraPreferences*>
-        ( iModel.Extension( KVtEngExtensionCameraPreferences ) );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::Update
-// -----------------------------------------------------------------------------
-//
-void TLcVtStates::Update()
-    {
-    __VTPRINTENTER( "TLcVtStates.Update" )
-    iMediaState.Update();
-    iAudioState.Update();
-    __VTPRINTEXIT( "TLcVtStates.Update" )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::IsColorToneSettingAvailable
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStates::IsColorToneSettingAvailable() const
-    {
-    __VTPRINTENTER( "TLcVtStates.IsColorToneSettingAvailable" )
-    TUint32 supportedModes;
-    // Get supported whitebalance modes
-    if ( iCameraPref )
-        {
-        if ( iCameraPref->GetSupportedColorTones( supportedModes ) )
-            {
-            // error occured
-            __VTPRINTEXIT( "TLcVtStates.IsColorToneSettingAvailableErr" )
-            return EFalse;
-            }
-        }
-
-    // Clean the flag, flags that are possible are
-    // A bitfield of suported colortones
-    // ENormal         = 0x00,
-    // ESepia          = 0x01,
-    // EGrayscale      = 0x02,
-    // ENegative       = 0x04
-    supportedModes &= 0x07;
-
-    // If supported modes is 0 automatic,then return EFalse
-    __VTPRINTEXIT( "TLcVtStates.IsColorToneSettingAvailable" )
-    return supportedModes;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::IsWhiteBalanceSettingAvailable
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStates::IsWhiteBalanceSettingAvailable() const
-    {
-    __VTPRINTENTER( "TLcVtStates.IsWhiteBalanceSettingAvailable" )
-    TUint32 supportedModes;
-    // Get supported whitebalance modes
-    if ( iCameraPref )
-        {
-        if ( iCameraPref->GetSupportedWhiteBalanceModes( supportedModes ) )
-            {
-            // error occured
-            __VTPRINTEXIT( "TLcVtStates.IsWhiteBalanceSettingAvailableErr" )
-            return EFalse;
-            }
-        }
-    __VTPRINT2( DEBUG_GEN, "IsWhiteBalanceSettingAvailable=%d", supportedModes )
-    // If supported modes is 0 ,then return EFalse
-    __VTPRINTEXIT( "TLcVtStates.IsWhiteBalanceSettingAvailable2" )
-    return supportedModes;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::IsContrastSettingAvailable
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStates::IsContrastSettingAvailable() const
-    {
-    __VTPRINTENTER( "TLcVtStates.IsContrastSettingAvailable" )
-    TBool ret( ETrue );
-    if ( iCameraPref )
-        {
-        TInt temp;
-        ret = !iCameraPref->GetContrast( temp );
-        }
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStates::IsBrightnessSettingAvailable
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStates::IsBrightnessSettingAvailable() const
-    {
-    __VTPRINTENTER( "TLcVtStates.IsBrightnessSettingAvailable" )
-    TBool ret( ETrue );
-    if ( iCameraPref )
-         {
-         TInt temp;
-         ret = !iCameraPref->GetBrightness( temp );
-         }
-    return ret;
-    }
--- a/vtuis/lcvtplugin/src/control/clcvtlocalvideoplayer.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,182 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  LiveComm Videotelephony's Local Video Player
-*
-*/
-
-#include "clcvtlocalvideoplayer.h"
-#include "tlcvtcamerahandler.h"
-#include "lcvtplugincommand.h"
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-
-CLcVtLocalVideoPlayer* CLcVtLocalVideoPlayer::NewL( 
-    CLcVtSession* avtSession,
-    MLcAudioControl& aLcAudioControl,
-    TVtCameraHandler& aCameraHandler)
-    {
-    CLcVtLocalVideoPlayer* self = 
-        new( ELeave )CLcVtLocalVideoPlayer( 
-            avtSession,
-            aLcAudioControl, 
-            aCameraHandler);
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CLcVtLocalVideoPlayer::CLcVtLocalVideoPlayer( 
-    CLcVtSession* avtSession,
-    MLcAudioControl& aLcAudioControl,
-    TVtCameraHandler& aCameraHandler) :
-    CLcVtVideoPlayerBase( avtSession, aLcAudioControl ),
-    iCameraHandler( aCameraHandler ) 
-    {
-    iOrientationChanged = EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CLcVtLocalVideoPlayer::ConstructL()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CLcVtLocalVideoPlayer::~CLcVtLocalVideoPlayer()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-MLcVideoPlayer::TLcVideoPlayerState 
-CLcVtLocalVideoPlayer::LcVideoPlayerState() const
-    {
-    TLcVideoPlayerState playerState;
-    if ( ivtSession->LcVtStates().MediaState().IsVideo() )
-        {
-        playerState = MLcVideoPlayer::EPlaying;
-        }
-    else
-        {
-        playerState = MLcVideoPlayer::EPaused;
-        }
-    __VTPRINT2( DEBUG_GEN, "CLcVtLocalVideoPlayer.LcVideoPlayerState = %d", playerState )
-    return playerState;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtLocalVideoPlayer::LcIsPlayingL()
-    {         
-    TBool result = (LcVideoPlayerState() == MLcVideoPlayer::EPlaying);
-    __VTPRINT2( DEBUG_GEN, "CLcVtLocalVideoPlayer.LcIsPlayingL = %d", result )
-    return result;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-void CLcVtLocalVideoPlayer::LcPlayL(TLcVideoPlayerSource /*aSource*/)
-    {
-    __VTPRINT( DEBUG_GEN, "CLcVtLocalVideoPlayer.LcPlayL" )
-    ivtSession->HandleCommandL(EPluginCmdEnableVideo);
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-void CLcVtLocalVideoPlayer::LcPauseL()
-    {
-    __VTPRINT( DEBUG_GEN, "CLcVtLocalVideoPlayer.LcPauseL" )
-    ivtSession->HandleCommandL(EPluginCmdDisableVideo);
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-MLcCameraControl* CLcVtLocalVideoPlayer::LcCameraControl()
-    {
-    return &iCameraHandler;
-    }
-
-
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-MLcZoomControl* CLcVtLocalVideoPlayer::LcZoomControl()
-    {
-    return &iCameraHandler;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-MLcBrightnessControl* CLcVtLocalVideoPlayer::LcBrightnessControl()
-    {
-    return &iCameraHandler;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcWindow
-// -----------------------------------------------------------------------------
-//
-void CLcVtLocalVideoPlayer::SetLcWindowRectL( TRect aRect )
-    {
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.RMRect.iTl.iX: %d", aRect.iTl.iX )
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.RMRect.iTl.iY: %d", aRect.iTl.iY )
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.RMRect.iWidth: %d", aRect.Width() )
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.RMRect.iHeight: %d", aRect.Height() ) 
-    
-    CLcVtVideoPlayerBase::SetLcWindowRectL( aRect );    
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcWindow
-// -----------------------------------------------------------------------------
-//
-void CLcVtLocalVideoPlayer::SetLcWindowOrientationL( TLcWindowOrientation aOrientation )
-    {    
-    __VTPRINT2( DEBUG_MEDIA , "CLcVtLocalVideoPlayer.SetLcWindowOrientationL: %d", aOrientation ) 
-    iOrientationChanged = EFalse;    
-    if( aOrientation != iWindowOrientation )
-        iOrientationChanged = ETrue;    
-    CLcVtVideoPlayerBase::SetLcWindowOrientationL( aOrientation );    
-    }
-
-TBool CLcVtLocalVideoPlayer::IsOrientationChanged()
-    {
-    return iOrientationChanged;
-    }
--- a/vtuis/lcvtplugin/src/control/clcvtremotevideoplayer.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  LiveComm Videotelephony's Remte Video Player
-*
-*/
-
-#include "clcvtremotevideoplayer.h"
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CLcVtRemoteVideoPlayer* CLcVtRemoteVideoPlayer::NewL(
-    CLcVtSession* avtSession,
-    MLcAudioControl& aLcAudioControl )
-    {
-    CLcVtRemoteVideoPlayer* self = 
-        new( ELeave ) CLcVtRemoteVideoPlayer( avtSession, aLcAudioControl );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CLcVtRemoteVideoPlayer::CLcVtRemoteVideoPlayer( 
-    CLcVtSession* avtSession,
-    MLcAudioControl& aLcAudioControl ) :
-    CLcVtVideoPlayerBase( avtSession, aLcAudioControl )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CLcVtRemoteVideoPlayer::ConstructL()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CLcVtRemoteVideoPlayer::~CLcVtRemoteVideoPlayer()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-MLcVideoPlayer::TLcVideoPlayerState 
-CLcVtRemoteVideoPlayer::LcVideoPlayerState() const
-    {
-    TLcVideoPlayerState playerState = MLcVideoPlayer::EPlaying;
-    return playerState;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtRemoteVideoPlayer::LcIsPlayingL()
-    {    
-    return ETrue;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcWindow
-// -----------------------------------------------------------------------------
-//
-void CLcVtRemoteVideoPlayer::SetLcWindowRectL( TRect aRect )
-    {    
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iTl.iX: %d", aRect.iTl.iX )
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iTl.iY: %d", aRect.iTl.iY )
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iWidth: %d", aRect.Width() )
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iHeight: %d", aRect.Height() )    
-    
-    CLcVtVideoPlayerBase::SetLcWindowRectL( aRect );    
-    }
-
--- a/vtuis/lcvtplugin/src/control/clcvtvideoplayerbase.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,199 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  LiveComm Videotelephony's Video Player Base Class
-*
-*/
-
-#include "clcvtvideoplayerbase.h"
-#include "clcvtsession.h"
-
-
-CLcVtVideoPlayerBase::CLcVtVideoPlayerBase( 
-    CLcVtSession* avtSession,
-    MLcAudioControl& aLcAudioControl ) :
-    ivtSession( avtSession ),
-    iLcAudioControl( aLcAudioControl )
-    {
-    iIsWindowEnabled = ETrue;
-    iWindowOrientation = MLcWindow::EPortrait;
-    }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CLcVtVideoPlayerBase::~CLcVtVideoPlayerBase()
-    {
-    }
-
-
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-#if 0
-MLcVideoPlayer::TLcVideoPlayerState 
-CLcVtVideoPlayerBase::LcVideoPlayerState() const
-    {
-    return MLcVideoPlayer::EUnavailable;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtVideoPlayerBase::LcIsPlayingL()
-    {
-    return EFalse;
-    }
-#endif
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-void CLcVtVideoPlayerBase::LcPlayL( TLcVideoPlayerSource /*aSource*/ )
-    {
-    // NOP
-    __VTPRINT( DEBUG_GEN, "CLcVtVideoPlayerBase.LcPlayL" )
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-void CLcVtVideoPlayerBase::LcPauseL()
-    {
-    // NOP
-    __VTPRINT( DEBUG_GEN, "CLcVtVideoPlayerBase.LcPauseL" )
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-MLcWindow* CLcVtVideoPlayerBase::LcWindow()
-    {
-    return this;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-MLcCameraControl* CLcVtVideoPlayerBase::LcCameraControl()
-    {
-    return NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-MLcSourceFileControl* CLcVtVideoPlayerBase::LcSourceFileControl()
-    {
-    return NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-MLcDestinationFileControl* CLcVtVideoPlayerBase::LcDestinationFileControl()
-    {
-    return NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-MLcAudioControl* CLcVtVideoPlayerBase::LcAudioControl()
-    {
-    return &iLcAudioControl;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-MLcZoomControl* CLcVtVideoPlayerBase::LcZoomControl()
-    {
-    return NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcVideoPlayer
-// -----------------------------------------------------------------------------
-//
-MLcBrightnessControl* CLcVtVideoPlayerBase::LcBrightnessControl()
-    {
-    return NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcWindow
-// -----------------------------------------------------------------------------
-//
-void CLcVtVideoPlayerBase::EnableLcWindowL( TBool aEnable )
-    {    
-    iIsWindowEnabled = aEnable;    
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcWindow
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtVideoPlayerBase::IsLcWindowEnabled()
-    {
-    return iIsWindowEnabled;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcWindow
-// -----------------------------------------------------------------------------
-//
-void CLcVtVideoPlayerBase::SetLcWindowRectL( TRect aRect )
-    {
-    iWindowRect = aRect;    
-    }
-
-
-// -----------------------------------------------------------------------------
-// From MLcWindow
-// -----------------------------------------------------------------------------
-//
-TRect CLcVtVideoPlayerBase::LcWindowRect()
-    {
-    return iWindowRect;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcWindow
-// -----------------------------------------------------------------------------
-//
-void CLcVtVideoPlayerBase::SetLcWindowOrientationL( 
-    TLcWindowOrientation aOrientation )
-    {    
-    iWindowOrientation = aOrientation;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcWindow
-// -----------------------------------------------------------------------------
-//
-MLcWindow::TLcWindowOrientation CLcVtVideoPlayerBase::LcWindowOrientationL()
-    {
-    return iWindowOrientation;
-    }
--- a/vtuis/lcvtplugin/src/control/tlcvtcamerahandler.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,239 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  LiveComm Videotelephony's Camera Handler
-*
-*/
-
-
-#include "tlcvtcamerahandler.h"
-#include "clcvtsession.h"
-#include "tlcvtstates.h"
-#include "lcvtplugincommand.h"
-#include "lcvtutility.h"
-#include "cvtengmodel.h"
-
-
-TVtCameraHandler::TVtCameraHandler() :
-ivtSession( NULL )    
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcCameraControl
-// -----------------------------------------------------------------------------
-//
-TInt TVtCameraHandler::LcCameraCountL()
-    {
-    return 2;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcCameraControl
-// -----------------------------------------------------------------------------
-//
-TInt TVtCameraHandler::CurrentLcCameraIndex()
-    {    
-    if(ivtSession->LcVtStates().MediaState().IsPrimaryCameraInUse())
-        return EFrontCamera;
-    
-    return EBackCamera;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcCameraControl
-// -----------------------------------------------------------------------------
-//
-void TVtCameraHandler::ToggleLcCameraL()
-    {
-    if(ivtSession->LcVtStates().MediaState().IsPrimaryCameraInUse())
-        ivtSession->HandleCommandL(EPluginCmdUseSecondaryCamera);
-    else
-        ivtSession->HandleCommandL(EPluginCmdUsePrimaryCamera);
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcBrightnessControl
-// -----------------------------------------------------------------------------
-//
-TInt TVtCameraHandler::MinLcBrightnessL()
-    {
-    return 0;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcBrightnessControl
-// -----------------------------------------------------------------------------
-//
-TInt TVtCameraHandler::MaxLcBrightnessL()
-    {
-    return 0;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcBrightnessControl
-// -----------------------------------------------------------------------------
-//
-TInt TVtCameraHandler::LcBrightnessL()
-    {
-    return 0;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcBrightnessControl
-// -----------------------------------------------------------------------------
-//
-void TVtCameraHandler::SetLcBrightnessL( TInt aValue )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcBrightnessControl
-// -----------------------------------------------------------------------------
-//
-void TVtCameraHandler::IncreaseLcBrightnessL()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcBrightnessControl
-// -----------------------------------------------------------------------------
-//
-void TVtCameraHandler::DecreaseLcBrightnessL()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcZoomControl
-// -----------------------------------------------------------------------------
-//
-TInt TVtCameraHandler::MinLcZoomL()
-    {
-    return 0;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcZoomControl
-// -----------------------------------------------------------------------------
-//
-TInt TVtCameraHandler::MaxLcZoomL()
-    {
-    MVtEngMedia& media = ivtSession->Model().Media();
-    
-    if(!LcVtUtility::IsZoomAllowed(media))
-        {
-        __VTPRINT( DEBUG_GEN, "TVtCameraHandler.MaxLcZoomL ZoomNotAllow" )
-        return 0;
-        }
-    
-    TInt max( 0 );
-    const TInt error( media.GetMaxZoomStep( max ) );
-    max = ( error ? 0 : max );
-    
-    __VTPRINT2( DEBUG_GEN, "TVtCameraHandler.MaxLcZoomL value=%d", max )
-    
-    return max;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcZoomControl
-// -----------------------------------------------------------------------------
-//
-TInt TVtCameraHandler::LcZoomValueL()
-    {
-    MVtEngMedia& media = ivtSession->Model().Media();
-
-    if(!LcVtUtility::IsZoomAllowed(media))
-        {
-        __VTPRINT( DEBUG_GEN, "TVtCameraHandler.LcZoomValueL ZoomNotAllow" )
-        return 0;
-        }
-    
-    TInt current( 0 );
-    const TInt error( media.GetCurrentZoomStep( current ) );
-    current = ( error ? 0 : current );    
-    __VTPRINT2( DEBUG_GEN, "TVtCameraHandler.LcZoomValueL value=%d", 0 )
-    return current;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcZoomControl
-// -----------------------------------------------------------------------------
-//
-void TVtCameraHandler::SetLcZoomValueL( TInt aValue )
-    {    
-    MVtEngMedia& media = ivtSession->Model().Media();
-    
-    if(!LcVtUtility::IsZoomAllowed(media))
-        {
-        __VTPRINT( DEBUG_GEN, "TVtCameraHandler.SetLcZoomValueL ZoomNotAllow" )
-        return;
-        }
-    
-    if( aValue < 0 || aValue > MaxLcZoomL() )
-        {
-        __VTPRINT( DEBUG_GEN, "TVtCameraHandler.SetLcZoomValueL - Invalidate value" )
-        return;
-        }
-    
-    __VTPRINT2( DEBUG_GEN, "TVtCameraHandler.SetLcZoomValueL Call SetZoomFactorL(%d)" , aValue );
-    ivtSession->SetZoomFactorL( aValue );
-    
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcZoomControl
-// -----------------------------------------------------------------------------
-//
-void TVtCameraHandler::LcZoomInL()
-    {
-    MVtEngMedia& media = ivtSession->Model().Media();
-    
-    if(!LcVtUtility::IsZoomAllowed(media))
-        {
-        __VTPRINT( DEBUG_GEN, "TVtCameraHandler.LcZoomInL ZoomNotAllow" )
-        return;
-        }
-    
-    __VTPRINT( DEBUG_GEN, "TVtCameraHandler.LcZoomInL Call SetLcZoomValueL" )
-    SetLcZoomValueL(LcZoomValueL() + 1);    
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcZoomControl
-// -----------------------------------------------------------------------------
-//
-void TVtCameraHandler::LcZoomOutL()
-    {
-    MVtEngMedia& media = ivtSession->Model().Media();
-    
-    if(!LcVtUtility::IsZoomAllowed(media))
-        {
-        __VTPRINT( DEBUG_GEN, "TVtCameraHandler.LcZoomOutL ZoomNotAllow" )
-        return;
-        }
-    
-    __VTPRINT( DEBUG_GEN, "TVtCameraHandler.LcZoomOutL Call SetLcZoomValueL" )
-    SetLcZoomValueL(LcZoomValueL() - 1);
-    }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void TVtCameraHandler::SetSession( CLcVtSession* aSession )
-    {
-    ivtSession = aSession;
-    }
-
-
--- a/vtuis/lcvtplugin/src/states/tlcvtstatebase.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,382 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  base class for lc vt plugin states
-*
-*/
-
-
-#include "tlcvtstatebase.h"
-#include "tlcvtstates.h"
-#include "tlcvtpluginstates.h"
-#include "clcvtappshutter.h"
-#include "mlcvtstatecontext.h"
-#include <StringLoader.h>
-#include <cvtlogger.h>
-#include <cvtengmodel.h>
-#include <vtengevents.h>
-#include <mvtengcommandhandler.h>
-
-// By default call ending command is allowed to send to call handling.
-
-// Initially no shutdown request
-TBool TLcVtStateBase::iShutdownRequested = EFalse;
-
-// -----------------------------------------------------------------------------
-// c++ constructor
-// -----------------------------------------------------------------------------
-//
-TLcVtStateBase::TLcVtStateBase(
-    MLcVtStateContext& aCtx,
-    TLcVtStates& aUiStates ) : iCtx(aCtx), iUiStates( aUiStates )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// Destructor
-// -----------------------------------------------------------------------------
-//
-TLcVtStateBase::~TLcVtStateBase()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::LcVtStartupPhase1DoneL
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateBase::LcVtStartupPhase1DoneL()
-    {
-    // no default behavior
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::LcVtStartupPhase2DoneL
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateBase::LcVtStartupPhase2DoneL()
-    {
-    // no default behavior
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::ShutdownDoneL
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateBase::ShutdownDoneL()
-    {
-    // no default behavior
-    }
-#if 0
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::HandleForegroundChangedL
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStateBase::HandleForegroundChangedL(
-    const TBool /*aIsForegroung*/ )
-    {
-    // no default behavior
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::PreHandleForegroundChangedL
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStateBase::PreHandleForegroundChangedL(
-    const TBool /*aIsForegroung*/ )
-    {
-    // no default behavior
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::StartDtmfTone
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateBase::StartDtmfTone( const TChar& /*aTone*/ )
-    {
-    // no default behavior
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::StopDtmfTone
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateBase::StopDtmfTone()
-    {
-    // no default behavior
-    }
-#endif
-
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::SetInitialStateL
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateBase::SetInitialStateL(
-    MLcVtStateContext& aCtx,
-    TLcVtStates& aUiStates )
-    {
-    __VTPRINTENTER( "TLcVtStateBase.SetInitialState" )
-    TLcVtStateBase* initialState =
-        TLcVtStateStarting::InstanceL( aCtx, aUiStates );
-    aCtx.ChangeState( initialState );
-    initialState->OpenL();
-    __VTPRINTEXIT( "TLcVtStateBase.SetInitialState" )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::LcVtStartupFailedL
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateBase::LcVtStartupFailedL()
-    {
-    __VTPRINTENTER( "TLcVtStateBase.AppUiStartupFailedL" )
-    // Shutdown
-    ChangeStateL( *TLcVtStateResetting::InstanceL( iCtx, iUiStates ) );
-    __VTPRINTEXIT( "TLcVtStateBase.AppUiStartupFailedL" )
-    }
-#if 0
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::OpenL
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateBase::OpenL()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::Close
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateBase::Close()
-    {
-    }
-#endif
-
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::ChangeStateL
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateBase::ChangeStateL( TLcVtStateBase& aNewState )
-    {
-    __VTPRINTENTER( "TLcVtStateBase.ChangeStateL" )
-
-    // Check for transition to already active state.
-    TLcVtStateBase* state = &aNewState;
-    if ( state == this )
-        {
-        __VTPRINTEXITR( "TLcVtStateBase.ChangeStateL %d", 0 )
-        return;
-        }
-    const TVtEngCommandId pending =
-        iCtx.Model().CommandHandler().PendingCommand();
-    if ( pending !=  KVtEngCommandNone &&
-         state == TLcVtStateResetting::InstanceL( iCtx, iUiStates ) )
-        {
-        // delay shutdown until engine command completes
-        __VTPRINT2( DEBUG_GEN, "TLcVtStateBase.ChangeStateL, pengind command is: %d", pending );
-        TLcVtStateBase::iShutdownRequested = ETrue;
-
-        if ( pending == KVtEngInitializeShareImage )
-            {
-            iCtx.Model().CommandHandler().CancelCommand( pending );
-            }
-
-        __VTPRINTEXITR( "TLcVtStateBase.ChangeStateL %d", KErrNotReady )
-        return;
-        }
-    __VTPRINT( DEBUG_GEN,
-        " TLcVtStateBase.ChangeStateL !! STATE TRANSITION !!" )
-    iCtx.ChangeState( &aNewState );
-    Close();
-    // perform entry action for new state
-    aNewState.OpenL();
-    __VTPRINTEXITR( "TLcVtStateBase.ChangeStateL %d", 1 )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::CleanupResetPushL
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateBase::CleanupResetPushL()
-    {
-    // Shutdown if leave occurs in critical ops.
-    CleanupStack::PushL(
-        TCleanupItem( TransitionToReset, this ) );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::TransitionToReset
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateBase::TransitionToReset( TAny* aAny )
-    {
-    TLcVtStateBase* state = reinterpret_cast< TLcVtStateBase* >( aAny );
-    TRAP_IGNORE( state->ChangeStateL( *TLcVtStateResetting::InstanceL(
-        state->iCtx, state->iUiStates ) ) );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::HandleVTCommandPerformedL
-// -----------------------------------------------------------------------------
-//
-TLcVtStateBase::TEventResponse TLcVtStateBase::HandleVTCommandPerformedL(
-            TVtEngCommandId /*aCommand*/,
-            const TInt /*aError*/ )
-    {
-    __VTPRINTENTER( "TLcVtStateBase.HandleVTCommandPerformedL" )
-    // By default all UI is allowed to handle all command completions.
-    TEventResponse handled = EEventNotHandled;
-
-    // check if shutdown requested while command was pending
-    const TVtEngCommandId pending = iCtx.Model().CommandHandler().PendingCommand();
-    if ( pending == KVtEngCommandNone &&
-            TLcVtStateBase::iShutdownRequested )
-        {
-        __VTPRINT( DEBUG_GEN, "Handling delayed shutdown" );
-        ChangeStateL( *TLcVtStateResetting::InstanceL(
-            iCtx, iUiStates ) );
-        }
-    __VTPRINTEXIT( "TLcVtStateBase.HandleVTCommandPerformedL" )
-    return handled;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::HandleVtEventL
-// -----------------------------------------------------------------------------
-//
-TLcVtStateBase::TEventResponse TLcVtStateBase::HandleVtEventL(
-    const TInt aEvent )
-    {
-    __VTPRINTENTER( "TLcVtStateBase.HandleVtEventL" )
-    TEventResponse handled = EEventHandled;
-    switch ( aEvent )
-        {
-    case KVtEngDeviceLockOn:
-    case KVtEngDeviceLockOff:
-        HandleDeviceLockEventL( aEvent == KVtEngDeviceLockOn );
-        break;
-    case KVtEngRemoteDisconnect:
-        /** Don't allow sending of end active call command to call handling
-         *  because requesting disconnect from the network after NW originated
-         *  termination violates standards.
-         */
-        break;
-    default:
-        handled = EEventNotHandled;
-        break;
-        }
-    __VTPRINTEXIT( "TLcVtStateBase.HandleVtEventL" )
-    return handled;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::HandleCommandL
-// -----------------------------------------------------------------------------
-//
-TLcVtStateBase::TEventResponse TLcVtStateBase::HandleCommandL(
-    const TInt /*aCommand*/ )
-    {
-    __VTPRINTENTER( "TLcVtStateBase.HandleCommandL" )
-    TEventResponse handled = EEventNotHandled;
-    __VTPRINTEXITR( "TLcVtStateBase.HandleCommandL %d", handled )
-    return handled;
-    }
-#if 0
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::HandleLayoutChangedL
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateBase::HandleLayoutChangedL( )
-    {
-    __VTPRINTENTER( "TLcVtStateBase.HandleLayoutChangedL" )
-    // By default only indicate that layout change needs to be handled.
-    iUiStates.SetLayoutChangeNeeded( ETrue );
-    __VTPRINTEXIT( "TLcVtStateBase.HandleLayoutChangedL" )
-    }
-#endif
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::HandleShutdownReady
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateBase::HandleShutdownReady()
-    {
-     __VTPRINTENTER( "TLcVtStateBase.HandleShutdownReady" )
-    // forwarded to AppUi which handles UI framework exit
-    iCtx.HandleShutdownReady();
-    iCtx.ChangeState( NULL );
-    // deletes current state
-    Close();
-     __VTPRINTEXIT( "TLcVtStateBase.HandleShutdownReady" )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::HandleDeviceLockEventL
-//
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateBase::HandleDeviceLockEventL( const TBool aDeviceIsLocked )
-    {
-    __VTPRINTENTER( "TLcVtStateBase.HandleDeviceLockEventL" )
-    iUiStates.SetDeviceLockOn( aDeviceIsLocked );
-    if ( aDeviceIsLocked )
-        {
-        iCtx.ChangeApplicationFocus( EFalse );
-        }
-    __VTPRINTEXITR( "TLcVtStateBase.HandleDeviceLockEventL lock state=%d",
-        aDeviceIsLocked )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::CheckEndActiveCallL
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStateBase::CheckEndActiveCallL()
-    {
-    __VTPRINTENTER( "TLcVtStateBase.CheckEndActiveCallL" )
-    const MVtEngSessionInfo::TSessionState state = SessionState( EFalse );
-    TBool shutdownStarted( EFalse );
-    if ( state == MVtEngSessionInfo::EIdle )
-        {
-        __VTPRINT( DEBUG_GEN, "VtUi.Release bearer" )
-        // h.245 session is ended
-        ChangeStateL( *TLcVtStateResetting::InstanceL( iCtx, iUiStates ) );        
-        shutdownStarted = ETrue;
-        }
-    __VTPRINTEXITR( "TLcVtStateBase.CheckEndActiveCallL %d",
-        shutdownStarted )
-    return shutdownStarted;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::SessionState
-// -----------------------------------------------------------------------------
-//
-MVtEngSessionInfo::TSessionState TLcVtStateBase::SessionState(
-    const TBool aUpdate ) const
-    {
-    const CVtEngModel& model = iCtx.Model();
-    const MVtEngSessionInfo& session = model.Session();
-    return session.State( aUpdate );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateBase::SetExecState
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateBase::SetExecState( const TLcVtStates::TLcVtExecState aState )
-    {
-    __VTPRINTENTER( "TLcVtStateBase.SetExecState" )
-    iUiStates.SetExecState( aState );
-    __VTPRINTEXITR( "TLcVtStateBase.SetExecState %d", aState )
-    }
--- a/vtuis/lcvtplugin/src/states/tlcvtstateresetting.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,254 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  waiting details application state
-*
-*/
-
-
-#include "tlcvtstates.h"
-#include "tlcvtpluginstates.h"
-#include "mlcvtstatecontext.h"
-#include "clcvtappshutter.h"
-#include <cvtlogger.h>
-#include <vtengevents.h>
-
-TLcVtStateResetting* TLcVtStateResetting::iInstance = NULL;
-
-// c++ constructor
-TLcVtStateResetting::TLcVtStateResetting( 
-    MLcVtStateContext& aCtx, 
-    TLcVtStates& aUiStates, 
-    const TVtEngCommandId aCommand )
-    : TLcVtStateBase( aCtx, aUiStates ), 
-      iCommand( aCommand )
-    {
-        __VTPRINT2( DEBUG_GEN, "TLcVtStateResetting.ctr iCommand=%d", iCommand )
-        iCtx.StartShutdown();
-    }
-
-// Destructor
-TLcVtStateResetting::~TLcVtStateResetting()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateResetting::
-// -----------------------------------------------------------------------------
-//
-TLcVtStateResetting* TLcVtStateResetting::InstanceL( 
-    MLcVtStateContext& aCtx, 
-    TLcVtStates& aUiStates,
-    const TVtEngCommandId aCommand )
-    {
-    __VTPRINTENTER( "TLcVtStateResetting.InstanceL" )
-    if ( iInstance == NULL )
-        {
-        iInstance = new ( ELeave ) TLcVtStateResetting( 
-            aCtx, aUiStates, aCommand );
-        }
-    else if ( aCommand != KVtEngCommandNone )
-        { // if call ending is UI originated, command is given
-        iInstance->iCommand  = aCommand;
-        __VTPRINT2( DEBUG_GEN, "TLcVtStateResetting.InstanceL iCommand=%d", 
-            iInstance->iCommand )
-        }
-    __VTPRINTEXIT( "TLcVtStateResetting.InstanceL" )
-    return iInstance;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateResetting::ShutdownDoneL
-// AppUi has finished its own shutdown steps. Notify app shutter that it may 
-// proceed.
-// 
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateResetting::ShutdownDoneL()
-    {
-    __VTPRINTENTER( "TLcVtStateResetting.ShutdownDone" )
-    CLcVtAppShutter* shutter = CLcVtAppShutter::InstanceL( *this );
-    shutter->StartShutdown();
-    __VTPRINTEXIT( "TLcVtStateResetting.ShutdownDone" )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateResetting::AppUiStartupFailedL
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateResetting::LcVtStartupFailedL()
-    {
-    __VTPRINTENTER( "TLcVtStateResetting.LcVtStartupFailedL" )
-    // no-op (overrides default behavior)
-    __VTPRINTEXIT( "TLcVtStateResetting.LcVtStartupFailedL" )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateResetting::HandleVTCommandPerformedL
-// -----------------------------------------------------------------------------
-//
-TLcVtStateBase::TEventResponse TLcVtStateResetting::HandleVTCommandPerformedL
-    ( 
-    TVtEngCommandId aCommand,
-    const TInt /*aError*/ )
-    {
-    __VTPRINTENTER( "TLcVtStateResetting.HandleVTCommandPerformedL" )
-    // By default responses to commands are ignored while resetting
-    TEventResponse handled = EEventHandled;
-    switch ( aCommand )
-        {
-        case KVtEngResetEngine:
-            // Allow UI to process reset command response        
-            handled = EEventNotHandled;
-            break;
-        case KVtEngTerminateSession:
-        case KVtEngSwitchToVoice:
-            // 
-            handled = EEventNotHandled;
-            iCtx.ShutdownL();
-            break;
-        default:
-            break;            
-        }
-    __VTPRINTEXIT( "TLcVtStateResetting.HandleVTCommandPerformedL" )
-    return handled;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateResetting::HandleVtEventL
-// -----------------------------------------------------------------------------
-//
-TLcVtStateBase::TEventResponse TLcVtStateResetting::HandleVtEventL(
-    const TInt aEvent )
-    {
-    __VTPRINTENTER( "TLcVtStateResetting.HandleVtEventL" )
-    TEventResponse handled = EEventHandled;
-    switch ( aEvent )
-        {
-    // While resetting appUi should not handle these events.
-    case KVtEngSourceChanged:
-    case KVtEngCameraChanged:
-    case KVtEngSourceCapsChanged:
-    case KVtEngSessionStateChanged:
-    case KVtEngDurationSettingChanged:
-    case KVtEngAudioOutputVolumeChanged:
-    case KVtEngAudioRoutingAvailabilityChanged:
-    case KVtEngAudioRoutingChanged:
-    case KVtEngAudioMuted:
-    case KVtEngAudioUnmuted:
-    case KVtEngRemoteVideoStopped:
-    case KVtEngSessionWaitingCallActive:
-    case KVtEngSessionWaitingCallInactive:
-        break;
-    default:
-        // allow appUi to handle other events
-        handled = EEventNotHandled;
-        break;
-        }
-    __VTPRINTEXIT( "TLcVtStateResetting.HandleVtEventL" )
-    return handled;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateResetting::HandleCommandL
-// -----------------------------------------------------------------------------
-//
-TLcVtStateBase::TEventResponse TLcVtStateResetting::HandleCommandL(
-    const TInt /*aCommand*/ )
-    {
-    __VTPRINTENTER( "TLcVtStateResetting.HandleCommandL" )
-    /* All commands ignored while resetting. CAknAppUi::Exit() is called
-       when shutdown is completed with asistance of CVtUiAppShutter */
-    __VTPRINTEXIT( "TLcVtStateResetting.HandleCommandL" )
-     return EEventHandled;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateResetting::HandleForegroundChangedL
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStateResetting::HandleForegroundChangedL(
-    const TBool /*aIsForeground*/ )
-    {
-    __VTPRINTENTER( "TLcVtStateResetting.HandleForegroundChangedL" )
-    __VTPRINTEXIT( "TLcVtStateResetting.HandleForegroundChangedL" )
-    // not on "foreground" while resetting
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateResetting::PreHandleForegroundChangedL
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStateResetting::PreHandleForegroundChangedL(
-    const TBool /*aIsForegroung*/ )
-    {
-    // no default behavior
-    return EFalse;
-    }
-
-#if 0
-// -----------------------------------------------------------------------------
-// TLcVtStateResetting::HandleLayoutChangedL
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateResetting::HandleLayoutChangedL()
-    {
-    __VTPRINTENTER( "TLcVtStateResetting.HandleLayoutChangedL" )
-    // no-op (overrides default behavior)
-    __VTPRINTEXIT( "TLcVtStateResetting.HandleLayoutChangedL" )
-    }
-#endif        
-// -----------------------------------------------------------------------------
-// TLcVtStateResetting::OpenL
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateResetting::OpenL()
-    {
-    __VTPRINTENTER( "TLcVtStateResetting.OpenL" )
-    SetExecState( TLcVtStates::EExecStateResetting );
-    //iCtx.StopDtmfTone();
-    iCtx.ChangeApplicationFocus( EFalse );
-    
-    if ( iCommand != KVtEngCommandNone )
-        {        
-        // Command is either KVtEngTerminateSession or KVtEngSwitchToVoice
-        // Need to wait for callback before ShutdownL can be called on context.
-        iCtx.DoExecuteCmdL( iCommand, NULL );
-        }
-    else
-        {
-        // This branch is executed when resetting state is opened due
-        // to emergency call or state change to one causing shutdown.
-        // No need to wait for any callbacks (emergency call callback
-        // handled by CVtUiAppShutter).
-        iCtx.ShutdownL();
-        }
-    __VTPRINTEXIT( "TLcVtStateResetting.OpenL" )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateResetting::Close
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateResetting::Close()
-    {
-    __VTPRINTENTER( "TLcVtStateResetting.Close" )
-    SetExecState( TLcVtStates::EExecStateFinalized );
-    if ( TLcVtStateResetting::iInstance )
-        {
-        delete TLcVtStateResetting::iInstance;
-        TLcVtStateResetting::iInstance = NULL;
-        }
-    __VTPRINTEXIT( "TLcVtStateResetting.Close" )
-    }
--- a/vtuis/lcvtplugin/src/states/tlcvtstaterunning.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,291 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  running (normal operation) application state
-*
-*/
-
-
-#include "tlcvtstates.h"
-#include "tlcvtpluginstates.h"
-#include "mlcvtstatecontext.h"
-#include "clcvtappshutter.h"
-#include <cvtlogger.h>
-#include <vtengevents.h>
-#include <StringLoader.h>
-#include "lcvtplugincommand.h"
-
-TLcVtStateRunning* TLcVtStateRunning::iInstance = NULL;
-
-// c++ constructor
-TLcVtStateRunning::TLcVtStateRunning(
-    MLcVtStateContext& aCtx, TLcVtStates& aUiStates )
-    : TLcVtStateBase( aCtx, aUiStates )
-    {
-    }
-
-// Destructor
-TLcVtStateRunning::~TLcVtStateRunning()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateRunning::InstanceL
-// -----------------------------------------------------------------------------
-//
-TLcVtStateRunning * TLcVtStateRunning::InstanceL(
-    MLcVtStateContext& aCtx,
-    TLcVtStates& aUiStates )
-    {
-    __VTPRINTENTER( "TLcVtStateRunning.InstanceL" )
-    if ( iInstance == NULL )
-        iInstance = new ( ELeave ) TLcVtStateRunning( aCtx, aUiStates );
-    __VTPRINTEXIT( "TLcVtStateRunning.InstanceL" )
-    return iInstance;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateRunning::HandleVtEventL
-// -----------------------------------------------------------------------------
-//
-TLcVtStateBase::TEventResponse TLcVtStateRunning::HandleVtEventL(
-    const TInt aEvent )
-    {
-    __VTPRINTENTER( "TLcVtStateRunning.HandleVtEventL" )
-    // let TVtUiAppStateBase base class do common tasks
-    TEventResponse handled = TLcVtStateBase::HandleVtEventL( aEvent );
-    switch ( aEvent )
-        {
-    case KVtEngDeviceLockOn:
-    case KVtEngDeviceLockOff:
-        TLcVtStateBase::HandleVtEventL( aEvent );
-        if ( aEvent == KVtEngDeviceLockOff )
-            {
-            iCtx.ChangeApplicationFocus( ETrue );
-            }
-        break;
-    case KVtEngSessionStateChanged:
-        if ( CheckEndActiveCallL() )
-            {
-            // At this point shutdown is in progress. Don't allow
-            // appUi to do actions due to this event.
-            handled = EEventHandled;
-            }
-        break;
-    default:
-        break;
-        }
-    __VTPRINTEXIT( "TLcVtStateRunning.HandleVtEventL" )
-    return handled;
-    }
-
-
-// -----------------------------------------------------------------------------
-// TLcVtStateRunning::HandleCommandL
-// -----------------------------------------------------------------------------
-//
-TLcVtStateBase::TEventResponse TLcVtStateRunning::HandleCommandL(
-    const TInt aCommand )
-    {
-    __VTPRINTENTER( "TLcVtStateRunning.HandleCommandL" )
-    /** By default all commands are enabled by running state.
-      * Other details command validations are done elsewhere
-      */  
-    TEventResponse handled = EEventHandled;
-    
-    switch ( aCommand )
-        {
-    case EPluginCmdEndActiveCall:
-        ShutdownWithEngineCommandL( KVtEngTerminateSession );
-        break;
-    case EPluginCmdCreateVoice:
-        CreateVoiceCallL();
-        break;
-    case EPluginCmdDialEmergency:
-        // Attempt emergency call. Note that emergency number check is done
-        // after calling DialEmergencyCallL and if supplied number is not
-        // emergency leave occurs.
-        TRAP_IGNORE( DialEmergencyCallL() );
-        break;
-    default:
-        handled = TLcVtStateBase::HandleCommandL( aCommand );
-        break;
-        }
-        
-    __VTPRINTEXITR( "TLcVtStateRunning.HandleCommandL %d", handled )
-    return handled;
-    }
-
-
-// -----------------------------------------------------------------------------
-// TLcVtStateRunning::HandleForegroundChangedL
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStateRunning::HandleForegroundChangedL( const TBool aIsForeground )
-    {
-    __VTPRINTENTER( "TLcVtStateRunning.HandleForegroundChangedL" )
-
-    iCtx.RefreshL( MLcVtStateContext::ENaviPane );
-
-    TBool handleAsForeground( aIsForeground );
-    TPtrC8 params( reinterpret_cast< TUint8* >( &handleAsForeground ),
-        sizeof( TBool ) );
-    iCtx.DoExecuteCmdL( KVtEngSetUIForeground, &params );
-    __VTPRINTEXIT( "TLcVtStateRunning.HandleForegroundChangedL" )
-    return handleAsForeground;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateRunning::PreHandleForegroundChangedL
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStateRunning::PreHandleForegroundChangedL( const TBool aIsForeground )
-    {
-    __VTPRINTENTER( "TLcVtStateRunning.PreHandleForegroundChangedL" )
-    TBool handleAsForeground( aIsForeground );
-    TPtrC8 params( reinterpret_cast< TUint8* >( &handleAsForeground ), sizeof( TBool ) );
-    iCtx.DoExecuteCmdL( KVtEngSetUIForeground, &params );
-    __VTPRINTEXIT( "TLcVtStateRunning.PreHandleForegroundChangedL" )
-    return handleAsForeground;
-    }
-#if 0
-// -----------------------------------------------------------------------------
-// TLcVtStateRunning::HandleLayoutChangedL
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateRunning::HandleLayoutChangedL( )
-    {
-    __VTPRINTENTER( "TLcVtStateRunning.HandleLayoutChangedL" )
-    iUiStates.SetLayoutChangeNeeded( EFalse );
-    iCtx.DoHandleLayoutChangedL();
-    __VTPRINTEXIT( "TLcVtStateRunning.HandleLayoutChangedL" )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateRunning::StartDtmfTone
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateRunning::StartDtmfTone( const TChar& aTone )
-    {
-    iCtx.StartDtmfTone( aTone );
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateRunning::StopDtmfTone
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateRunning::StopDtmfTone()
-    {
-    iCtx.StopDtmfTone();
-    }
-#endif
-// -----------------------------------------------------------------------------
-// TLcVtStateRunning::CreateVoiceCallL
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateRunning::CreateVoiceCallL()
-    {
-    __VTPRINTENTER( "TLcVtStateRunning.CreateVoiceCallL" )
-    
-    //TInt result( KErrNone );
-    /*
-    HBufC* prompt =
-        StringLoader::LoadLC( R_VIDEOTELUI_QTN_QUERY_CREATE_VOICE_CALL );
-
-    // Create and initialize query dialog
-    CAknQueryDialog* createVoiceCallDlg = CAknQueryDialog::NewL();
-    CleanupStack::PushL( createVoiceCallDlg );
-    createVoiceCallDlg->SetPromptL( *prompt );
-    CleanupStack::Pop(); // createVoiceCallDlg
-
-    iCreateVoiceCallDlg = createVoiceCallDlg;
-    TInt result( KErrNone );
-    TRAPD( error, result = iCreateVoiceCallDlg->ExecuteLD(
-        R_VIDEOTELUI_CREATE_VOICE_QUERY ) );
-    // Just set to NULL because ExecuteLD() deletes instance
-    iCreateVoiceCallDlg = NULL;
-    // Leave if ExecuteLD() left
-    User::LeaveIfError( error );
-    CleanupStack::PopAndDestroy( ); // prompt
-    if ( result )
-        {
-        //user answered yes
-        iCtx.DoExecuteCmdL( KVtEngSwitchToVoice, NULL );
-        }
-        */
-    __VTPRINTEXITR( "TLcVtStateRunning.CreateVoiceCallL %d", KErrNone )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateRunning::ShutdownWithEngineCommandL
-// Starts shutdown with command to engine.
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateRunning::ShutdownWithEngineCommandL( const TInt aCommand )
-    {
-    __VTPRINTENTER(
-        "TLcVtStateRunning.ShutdownWithEngineCommandL" )
-    TLcVtStateBase* resetState =
-        TLcVtStateResetting::InstanceL( iCtx, iUiStates, aCommand ); 
-    CLcVtAppShutter* shutter = CLcVtAppShutter::InstanceL( *resetState );
-
-    // open resetting state, handles engine command request/reply
-    ChangeStateL( *resetState );
-
-    __VTPRINTEXIT( "TLcVtStateRunning.ShutdownWithEngineCommandL" )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateRunning::DialEmergencyCallL
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateRunning::DialEmergencyCallL()
-    {
-    __VTPRINTENTER(
-        "TLcVtStateRunning.DialEmergencyCallL" )
-    TLcVtStateBase* resetState =
-        TLcVtStateResetting::InstanceL( iCtx, iUiStates );
-    CLcVtAppShutter* shutter = CLcVtAppShutter::InstanceL( *resetState );
-    if ( shutter )
-        {
-        // Make emergency call and proceed when 1) state has given permission 
-        // and 2) callback from emergency call api is received
-        shutter->ShutdownWithEmergencyCallL( iCtx );
-        ChangeStateL( *resetState );
-        }
-    __VTPRINTEXIT( "TLcVtStateRunning.DialEmergencyCallL" )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateRunning::OpenL
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateRunning::OpenL()
-    {
-    __VTPRINTENTER( "TLcVtStateRunning.OpenL" )
-    SetExecState( TLcVtStates::EExecStateRunning );
-    iCtx.RefreshStatesL();
-    __VTPRINTEXIT( "TLcVtStateRunning.OpenL" )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateRunning::Close
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateRunning::Close()
-    {
-    __VTPRINTENTER( "TLcVtStateRunning.Close" )
-    delete TLcVtStateRunning::iInstance;
-    TLcVtStateRunning::iInstance = NULL;
-    __VTPRINTEXIT( "TLcVtStateRunning.Close" )
-    }
--- a/vtuis/lcvtplugin/src/states/tlcvtstatestarting.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,317 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  waiting details application state
-*
-*/
-
-
-#include "tlcvtstates.h"
-#include "tlcvtpluginstates.h"
-#include "mlcvtstatecontext.h"
-#include "clcvtappshutter.h"
-#include <cvtlogger.h>
-#include <vtengevents.h>
-#include <vtengcommands.h>
-#include <cvtengmodel.h>
-#include <mvtengsessioninfo.h>
-
-
-TLcVtStateStarting* TLcVtStateStarting::iInstance = NULL;
-
-// c++ constructor
-TLcVtStateStarting::TLcVtStateStarting(
-    MLcVtStateContext& aCtx, TLcVtStates& aUiStates ) 
-    : TLcVtStateBase( aCtx, aUiStates )
-    {
-    iPreconditions.Set( EWaitingCLI );
-    iPreconditions.Set( EWaitingPhase1ToComplete );
-    iStartCallback = NULL;
-    }
-
-// Destructor
-    TLcVtStateStarting::~TLcVtStateStarting()
-    {
-    delete iStartCallback;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateStarting::InstanceL
-//
-// -----------------------------------------------------------------------------
-//
-TLcVtStateStarting * TLcVtStateStarting::InstanceL(
-    MLcVtStateContext& aCtx, TLcVtStates& aUiStates )
-    {
-    __VTPRINTENTER( "TLcVtStateStarting.InstanceL" )
-    if ( iInstance == NULL )
-        {
-        iInstance = new ( ELeave ) TLcVtStateStarting( aCtx, aUiStates );
-        }
-    __VTPRINTEXIT( "TLcVtStateStarting.InstanceL" )
-    return iInstance;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateStarting::LcVtStartupPhase1DoneL
-//
-// Phase 1 of application startup is completed, check if we can proceed to
-// phase 2.
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateStarting::LcVtStartupPhase1DoneL()
-    {
-    __VTPRINTENTER( "TLcVtStateStarting.LcVtStartupPhase1DoneL" )
-    // From startup phase point of view we're ready to proceed
-    // to phase 2. Clear that precondition and proceed if otherwise ready.
-    CheckPhase2StartupL( EWaitingPhase1ToComplete );
-    __VTPRINTEXIT( "TLcVtStateStarting.LcVtStartupPhase1DoneL" )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateStarting::LcVtStartupPhase2DoneL
-//
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateStarting::LcVtStartupPhase2DoneL()
-    {
-    __VTPRINTENTER( "TLcVtStateStarting.LcVtStartupPhase2DoneL" )
-    // Phase 2 completed, proceed to next state
-    ChangeStateL( *TLcVtStateRunning::InstanceL( iCtx, iUiStates ) );
-    __VTPRINTEXIT( "TLcVtStateStarting.LcVtStartupPhase2DoneL" )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateStarting::HandleVtEventL
-//
-// -----------------------------------------------------------------------------
-//
-TLcVtStateBase::TEventResponse TLcVtStateStarting::HandleVtEventL(
-    const TInt aEvent )
-    {
-    __VTPRINTENTER( "TLcVtStateStarting.HandleVtEventL" )
-    TEventResponse handled = EEventHandled;
-    switch ( aEvent )
-        {
-    case KVtEngRemoteDisconnect:
-        // base class handles this.
-        handled = TLcVtStateBase::HandleVtEventL( aEvent );
-        break;
-    case KVtEngSessionStateChanged:
-        {
-        // check if session state is proper for proceeding to next phase
-        // in startup.
-        CheckSessionStateL();
-        }
-        break;
-    case KVtEngRemoteVideoStarted:
-        // allow to start remote video rendering
-    case KVtEngSourceChanged:
-        // allow handling of source changed event
-        handled = EEventNotHandled; 
-        break;
-    case KVtEngCLIAvailable:
-        HandleCLIReceivedL();
-        break;
-  
-    case KVtEngDeviceLockOn:
-    case KVtEngDeviceLockOff:
-    default:
-        handled = TLcVtStateBase::HandleVtEventL( aEvent );
-        break;
-        }
-    __VTPRINTEXIT( "TLcVtStateStarting.HandleVtEventL" )
-    return handled;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateStarting::HandleCommandL
-//
-// -----------------------------------------------------------------------------
-//
-TLcVtStateBase::TEventResponse TLcVtStateStarting::HandleCommandL(
-    const TInt /*aCommand*/ )
-    {
-    __VTPRINTENTER( "TLcVtStateStarting.HandleCommandL" )
-    __VTPRINTEXIT( "TLcVtStateStarting.HandleCommandL" )
-    //return EEventNotHandled;
-    return EEventHandled;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateStarting::HandleForegroundChangedL
-//
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStateStarting::HandleForegroundChangedL( const TBool aIsForeground )
-    {
-    __VTPRINTENTER( "TLcVtStateStarting.HandleForegroundChangedL" )        
-    
-    iCtx.RefreshL( MLcVtStateContext::ENaviPane );
-    
-    // behave as in background if CLI (=details) has not yet received
-    TBool handleAsForeground( aIsForeground && iUiStates.IsDetailsReceived() ); 
-    TLcVtStateBase::ExecuteEngineCommand( KVtEngSetUIForeground, 
-        handleAsForeground );
-    
-    __VTPRINTEXIT( "TLcVtStateStarting.HandleForegroundChangedL" )
-    return handleAsForeground;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateStarting::PreHandleForegroundChangedL
-// -----------------------------------------------------------------------------
-//
-TBool TLcVtStateStarting::PreHandleForegroundChangedL(
-    const TBool /*aIsForegroung*/ )
-    {
-    // no default behavior
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateStarting::OpenL
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateStarting::OpenL()
-    {
-    __VTPRINTENTER( "TLcVtStateStarting.OpenL" )
-    iStartCallback = new ( ELeave ) CAsyncCallBack (
-            TCallBack( &AsynchOpen, this ),
-            CActive::EPriorityStandard );
-    iStartCallback->CallBack();  
-    __VTPRINTEXIT( "TLcVtStateStarting.OpenL" )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateStarting::AsynchOpen
-// asynchronous entry to the state.
-// -----------------------------------------------------------------------------
-//
-TInt TLcVtStateStarting::AsynchOpen( TAny* aAny )
-    {
-    __VTPRINTENTER( "TLcVtStateStarting.AsynchOpen" )
-    TLcVtStateStarting* state = reinterpret_cast<TLcVtStateStarting*>( aAny );
-    delete state->iStartCallback;
-    state->iStartCallback = NULL;
-    TRAPD( res, state->DoOpenL() );
-    __VTPRINTEXITR( "TLcVtStateStarting.AsynchOpen err=%d", res )
-    return res;
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateStarting::DoOpenL
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateStarting::DoOpenL()
-    {
-    __VTPRINTENTER( "TLcVtStateStarting.DoOpenL" )
-    if ( !CheckEndActiveCallL() )
-        {
-        // not shutting down, proceed to phase 1
-        iCtx.StartupPhase1L();
-        }
-    __VTPRINTEXIT( "TLcVtStateStarting.DoOpenL" )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateStarting::CheckSessionStateL
-// Resolve action based on session state change in the engine.
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateStarting::CheckSessionStateL()
-    {
-    __VTPRINTENTER( "TLcVtStateStarting.CheckSessionStateL" )
-    const MVtEngSessionInfo::TSessionState state = SessionState( EFalse );
-    switch ( state )
-        {
-    case MVtEngSessionInfo::EConnected:
-    case MVtEngSessionInfo::ENegotiating:
-    case MVtEngSessionInfo::EOpen:
-        // From session state point of view we're ready to proceed.
-        // Clear precondition and proceed if otherwise ready.
-        CheckPhase2StartupL( EWaitingSessionState );
-        break;
-    default:
-        // Is session state such that we need to shutdown?
-        CheckEndActiveCallL();
-        break;
-        }
-    __VTPRINTEXIT( "TLcVtStateStarting.CheckSessionStateL" )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateStarting::CheckPhase2StartupL
-//
-// mark precondition passed and if no more preconditions exist proceed
-// in startup.
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateStarting::CheckPhase2StartupL(
-    const TPreconditions aCond )
-    {
-    __VTPRINTENTER( "TLcVtStateStarting.CheckPhase2StartupL" )
-    // First check that at least one precondition holds
-    if ( iPreconditions.Value() )
-        {
-        iPreconditions.Clear( aCond );
-        if ( !iPreconditions.Value() )
-            {
-            CleanupResetPushL();  // start shutdown if StartupPhase2L leaves
-            iCtx.StartupPhase2L();
-            CleanupStack::Pop(); // CleanupResetPushL
-            }
-        }
-#ifdef VTDEBUG
-    else {
-        __VTPRINT( DEBUG_GEN, "TLcVtStateStarting.CheckPhase2StartupL NoOp!" )
-        }
-#endif // VTDEBUG
-    __VTPRINTEXITR( "TLcVtStateStarting.CheckPhase2StartupL cond=%d",
-        (TInt) iPreconditions.Value() )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateStarting::HandleCLIReceivedL
-// CLI reception from engine is one of the two preconditions for proceeding
-// to phase2 startup.
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateStarting::HandleCLIReceivedL()
-    {
-    __VTPRINTENTER( "TLcVtStateStarting.HandleCLIReceivedL" )
-    const MVtEngSessionInfo& session = iCtx.Model().Session();
-    MVtEngSessionInfo::TCLI cli;
-    if ( session.GetCLI( cli ) == KErrNone )
-        {
-        iUiStates.SetDetailsReceived( ETrue );
-        iUiStates.SetCLIReceived( cli.iVoiceCallPossible );
-        iCtx.SetCallIdL( cli.iCallId );
-        iCtx.SetCallNameL( cli.iName );
-        iCtx.SetCallNumberL( cli.iCallNumber );
-        }
-    CheckPhase2StartupL( EWaitingCLI );
-    __VTPRINTEXIT( "TLcVtStateStarting.HandleCLIReceivedL" )
-    }
-
-// -----------------------------------------------------------------------------
-// TLcVtStateStarting::Close
-// -----------------------------------------------------------------------------
-//
-void TLcVtStateStarting::Close()
-    {
-    __VTPRINTENTER( "TLcVtStateStarting.Close" )
-    delete TLcVtStateStarting::iInstance;
-    TLcVtStateStarting::iInstance = NULL;
-    __VTPRINTEXIT( "TLcVtStateStarting.Close" )
-    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/aif/videoteluiaif.rss	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  AIF resource for Video Telephone.
+*
+*/
+
+
+
+//  INCLUDES
+#include <aiftool.rh>
+
+
+//  RESOURCE DEFINITIONS 
+
+// -----------------------------------------------------------------------------
+//   
+// AIF_DATA
+// Resource for AIF.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE AIF_DATA
+    {
+    app_uid = 0x101F8681;
+    num_icons = 1;
+    hidden = KAppIsHidden;
+    }
+
+// End of File
Binary file vtuis/videotelui/cenrep/keys_s60videotelephony.xls has changed
Binary file vtuis/videotelui/conf/s60videotelephony.confml has changed
Binary file vtuis/videotelui/conf/s60videotelephony_102072D0.crml has changed
Binary file vtuis/videotelui/conf/s60videotelephony_10281872.crml has changed
Binary file vtuis/videotelui/data/VtStartRecord.wav has changed
Binary file vtuis/videotelui/data/VtStopRecord.wav has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/data/videotelui.rss	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,1932 @@
+/*
+* Copyright (c) 2004, 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:  Resources for Video Telephone application.
+*
+*/
+
+
+
+//  RESOURCE IDENTIFIER
+NAME        VTUI
+
+//  INCLUDES
+#include    <eikon.rh>
+#include    <avkon.rsg>
+#include    <avkon.rh>
+#include    <avkon.loc>
+#include    <data_caging_paths_strings.hrh>
+#include    <avkon.mbg>
+#include    <videotelui.mbg>
+#include    <aknsconstants.hrh>
+
+#include    <videotelui.loc>
+#include    "videotelui.hrh"
+
+
+#include    <appinfo.rh>
+
+//  CONSTANTS
+#define KVtStartSoundFile   "z:\\system\\sounds\\digital\\VtStartRecord.wav"
+#define KVtStopSoundFile    "z:\\system\\sounds\\digital\\VtStopRecord.wav"
+//  RESOURCE DEFINITIONS
+
+// -----------------------------------------------------------------------------
+//
+// Resource file signature.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE RSS_SIGNATURE
+    {
+    }
+
+// -----------------------------------------------------------------------------
+//
+// Default name of the document. No such document, so empty.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE TBUF
+    {
+    buf = "";
+    }
+
+// -----------------------------------------------------------------------------
+//
+// Application information.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE EIK_APP_INFO
+    {
+    status_pane = r_videotelui_status_pane;
+    menubar = r_videotelui_menubar;
+    cba = r_videotelui_softkeys_end_call;
+    custom_app_info_extension = r_videotelui_info_extension;
+    }
+// -----------------------------------------------------------------------------
+//
+// Info extension
+// r_videotelui_info_extension
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE EIK_APP_INFO_EXT r_videotelui_info_extension
+    {
+    popup_toolbar = r_videotelui_fixed _toolbar;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_localisable_app_info
+// Captions for this application.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE LOCALISABLE_APP_INFO r_videotelui_localisable_app_info
+    {
+    short_caption = qtn_apps_videophone_grid;
+    caption_and_icon =
+        CAPTION_AND_ICON_INFO
+            {
+            caption = qtn_apps_videophone_grid;
+#ifdef __SCALABLE_ICONS
+            number_of_icons = 1;
+
+
+            icon_file =
+                "Z:"APP_BITMAP_DIR"\\videotelui_aif.mif";
+#else
+            number_of_icons = 1;
+            icon_file =
+                "Z:"APP_BITMAP_DIR"\\videotelui_aif.mbm";
+
+
+#endif // __SCALABLE_ICONS
+            };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_status_pane
+// Status pane for the application.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE STATUS_PANE_APP_MODEL r_videotelui_status_pane
+    {
+    layout = R_AVKON_STATUS_PANE_LAYOUT_USUAL;
+    panes =
+        {
+        SPANE_PANE
+            {
+            id = EEikStatusPaneUidTitle;
+            type = EAknCtTitlePane;
+            resource = r_videotelui_title_pane;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_menubar
+// Menubar for the application.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE MENU_BAR r_videotelui_menubar
+    {
+    titles =
+        {
+        MENU_TITLE
+            {
+            menu_pane = r_videotelui_menu;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_ok_menubar
+// Menubar for the application.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE MENU_BAR r_videotelui_ok_menubar
+    {
+    titles =
+        {
+        MENU_TITLE
+            {
+            menu_pane = r_videotelui_ok_menu;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_menu
+// Options menu for the application. This menu is opened when Options softkey
+// is pressed.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE MENU_PANE r_videotelui_menu
+    {
+    items =
+        {
+        MENU_ITEM // Enable
+            {
+            command = EVtUiCmdEnableMain;
+            txt = qtn_incal_enable_main_option;
+            cascade = r_videotelui_enable_menu;
+            },
+        MENU_ITEM // Disable
+            {
+            command = EVtUiCmdDisableMain;
+            txt = qtn_incal_disable_main_option;
+            cascade = r_videotelui_disable_menu;
+            },
+        MENU_ITEM // Use primary camera
+            {
+            command = EVtUiCmdUsePrimaryCamera;
+            txt = qtn_incal_camera_1_option;
+            },
+        MENU_ITEM // Use secondary camera
+            {
+            command = EVtUiCmdUseSecondaryCamera;
+            txt = qtn_incal_camera_2_option;
+            },
+        MENU_ITEM // Swap images places
+            {
+            command = EVtUiCmdSwapImagesPlaces;
+            txt = qtn_incal_swap_vt_images;
+            },
+        MENU_ITEM // Snapshot
+            {
+            command = EVtUiCmdSnapshot;
+            txt = qtn_incal_snapshot_option;
+            },
+        MENU_ITEM // Send DTMF
+            {
+            command = EVtUiCmdSendDTMF;
+            txt = qtn_incal_send_dtmf_tone_option;
+            },
+        MENU_ITEM // Share file
+            {
+            command = EVtUiCmdShareObjectImage;
+            txt = qtn_incal_video_call_share_file;
+            },
+        MENU_ITEM // Handset (deactivate loudspeaker)
+            {
+            command = EVtUiCmdDeactivateLoudspeaker;
+            txt = qtn_incal_deact_ihf_option;
+            },
+        MENU_ITEM // Loudspeaker
+            {
+            command = EVtUiCmdActivateLoudspeaker;
+            txt = qtn_incal_act_ihf_option;
+            },
+        MENU_ITEM // BT handsfree
+            {
+            command = EVtUiCmdActivateBT;
+            txt = qtn_incal_bt_handsfree_option;
+            },
+        MENU_ITEM // Handset (deactivate BT)
+            {
+            command = EVtUiCmdDeactivateBT;
+            txt = qtn_incal_handset_option;
+            },
+        MENU_ITEM // Video to voice
+            {
+            command = EVtUiCmdCreateVoice;
+            txt = qtn_incal_video_to_voice;
+            },
+        MENU_ITEM
+            {
+            command = EVtUiCmdAdjustVideo;
+            txt = qtn_incal_video_adjust_option;
+            cascade = r_videotelui_video_adjust_menu;
+            },
+        MENU_ITEM // Zoom
+            {
+            command = EVtUiCmdZoom;
+            txt = qtn_incal_zoom_own_video;
+            },
+        MENU_ITEM // End active call
+            {
+            command = EVtUiCmdEndActiveCall;
+            txt = qtn_incal_drop_option;
+            },
+        MENU_ITEM // Go to Idle
+            {
+            command = EVtUiCmdGoToIdle;
+#ifdef RD_BOOT_CUSTOMIZABLE_AI
+            txt = qtn_incal_goto_idle;
+#else
+            txt = qtn_incal_goto_active_idle;
+#endif // RD_BOOT_CUSTOMIZABLE_AI
+            },
+        MENU_ITEM // Help
+            {
+            command = EAknCmdHelp;
+            txt = qtn_options_help;
+            },
+        MENU_ITEM // Exit
+            {
+            command = EAknCmdExit;
+            txt = qtn_options_exit;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_ok_menu
+// Options menu for the application. This menu is opened when selection key
+// is pressed.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE MENU_PANE r_videotelui_ok_menu
+    {
+    items =
+        {
+        MENU_ITEM // Disable
+            {
+            command = EVtUiCmdDisableMain;
+            txt = qtn_incal_disable_main_option;
+            cascade = r_videotelui_disable_menu;
+            },
+        MENU_ITEM // Snapshot
+            {
+            command = EVtUiCmdSnapshot;
+            txt = qtn_incal_snapshot_option;
+            },
+        MENU_ITEM // End active call
+            {
+            command = EVtUiCmdEndActiveCall;
+            txt = qtn_incal_drop_option;
+            },
+        MENU_ITEM // Use primary camera
+            {
+            command = EVtUiCmdUsePrimaryCamera;
+            txt = qtn_incal_camera_1_option;
+            },
+        MENU_ITEM // Use secondary camera
+            {
+            command = EVtUiCmdUseSecondaryCamera;
+            txt = qtn_incal_camera_2_option;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_enable_menu
+// "Enable" submenu for the application.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE MENU_PANE r_videotelui_enable_menu
+    {
+    items =
+        {
+        MENU_ITEM
+            {
+            command = EVtUiCmdEnableVideo;
+            txt = qtn_incal_change_video_option;
+            },
+        MENU_ITEM
+            {
+            command = EVtUiCmdEnableAudio;
+            txt = qtn_incal_change_audio_option;
+            },
+        MENU_ITEM
+            {
+            command = EVtUiCmdEnableBoth;
+            txt = qtn_incal_change_both_option;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_disable_menu
+// "Disable" submenu for the application.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE MENU_PANE r_videotelui_disable_menu
+    {
+    items =
+        {
+        MENU_ITEM
+            {
+            command = EVtUiCmdDisableVideo;
+            txt = qtn_incal_change_video_option;
+            },
+        MENU_ITEM
+            {
+            command = EVtUiCmdDisableAudio;
+            txt = qtn_incal_change_audio_option;
+            },
+        MENU_ITEM
+            {
+            command = EVtUiCmdDisableBoth;
+            txt = qtn_incal_change_both_option;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_video_adjust_menu
+// "Adjust video" submenu for the application.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE MENU_PANE r_videotelui_video_adjust_menu
+	{
+    items =
+        {
+        MENU_ITEM
+            {
+            command = EVtUiCmdAdjustVideoVideoQuality;
+            txt = qtn_incal_video_prefer_option;
+            },
+        MENU_ITEM
+            {
+            command = EVtUiCmdAdjustVideoWhiteBalance;
+            txt = qtn_incal_video_white_balance_option;
+            },
+        MENU_ITEM
+            {
+            command = EVtUiCmdAdjustVideoBrightness;
+            txt = qtn_incal_video_brightness_option;
+            },
+        MENU_ITEM
+            {
+            command = EVtUiCmdAdjustVideoContrast;
+            txt = qtn_incal_video_contrast_option;
+            },
+        MENU_ITEM
+            {
+            command = EVtUiCmdAdjustVideoColourTone;
+            txt = qtn_incal_video_colour_tone_option;
+            }
+        };
+	}
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_softkeys_enable_video
+// Options & Enable video softkeys
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE CBA r_videotelui_softkeys_enable_video
+    {
+    buttons =
+        {
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyOptions;
+            txt = text_softkey_option;
+            },
+        CBA_BUTTON
+            {
+            id = EVtUiCmdEnableVideo;
+            txt = qtn_incal_softk_enable_video;
+            },
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyContextOptions;
+            txt = text_softkey_empty;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_softkeys_enable_audio
+// Options & Enable audio softkeys
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE CBA r_videotelui_softkeys_enable_audio
+    {
+    buttons =
+        {
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyOptions;
+            txt = text_softkey_option;
+            },
+        CBA_BUTTON
+            {
+            id = EVtUiCmdEnableAudio;
+            txt = qtn_incal_softk_enable_audio;
+            },
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyContextOptions;
+            txt = text_softkey_empty;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_softkeys_handset_b
+// Options & Handset both softkeys
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE CBA r_videotelui_softkeys_handset_b
+    {
+    buttons =
+        {
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyOptions;
+            txt = text_softkey_option;
+            },
+        CBA_BUTTON
+            {
+            id = EVtUiCmdDeactivateLoudspeaker;
+            txt = qtn_incal_softk_handset;
+            },
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyContextOptions;
+            txt = text_softkey_empty;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_softkeys_loudspeaker
+// Options & Handset both softkeys
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE CBA r_videotelui_softkeys_loudspeaker
+    {
+    buttons =
+        {
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyOptions;
+            txt = text_softkey_option;
+            },
+        CBA_BUTTON
+            {
+            id = EVtUiCmdActivateLoudspeaker;
+            txt = qtn_incal_softk_laudspek;
+            },
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyContextOptions;
+            txt = text_softkey_empty;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_softkeys_bt_handsfree
+// Options & Handset both softkeys
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE CBA r_videotelui_softkeys_bt_handsfree
+    {
+    buttons =
+        {
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyOptions;
+            txt = text_softkey_option;
+            },
+        CBA_BUTTON
+            {
+            id = EVtUiCmdActivateBT;
+            txt = qtn_incal_softk_bt_handsfree;
+            },
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyContextOptions;
+            txt = text_softkey_empty;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_softkeys_end_call
+// Options & End call softkeys
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE CBA r_videotelui_softkeys_end_call
+    {
+    buttons =
+        {
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyOptions;
+            txt = text_softkey_option;
+            },
+        CBA_BUTTON
+            {
+            id = EVtUiCmdEndActiveCall;
+            txt = qtn_incal_softk_end_this;
+            },
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyContextOptions;
+            txt = text_softkey_empty;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_softkeys_capture_video
+// Capture & Cancel video softkeys
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE CBA r_videotelui_softkeys_capture_video
+    {
+    buttons =
+        {
+        CBA_BUTTON
+            {
+            id = EVtUiCmdCapture;
+            txt = qtn_softk_capture;
+            },
+        CBA_BUTTON
+            {
+            id = EVtUiCmdCancelCapture;
+            txt = text_softkey_cancel;
+            },
+        CBA_BUTTON
+            {
+            id = EVtUiCmdCapture;
+            txt = qtn_softk_capture;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_softkeys_share_object_image
+// Options & Stop image object sharing
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE CBA r_videotelui_softkeys_share_object_image
+    {
+    buttons =
+        {
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyOptions;
+            txt = text_softkey_option;
+            },
+        CBA_BUTTON
+            {
+            id = EVtUiCmdStopSharingObjectImage;
+            txt = qtn_softk_disable_share;
+            },
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyContextOptions;
+            txt = text_softkey_empty;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_blank_dlg
+// Blank dialog.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE DIALOG r_videotelui_blank_dlg
+    {
+    flags = ( EEikDialogFlagNoDrag |
+              EEikDialogFlagNoTitleBar |
+              EEikDialogFlagFillAppClientRect |
+              EEikDialogFlagCbaButtons |
+              EEikDialogFlagWait );
+
+    buttons = r_videotelui_softkeys_empty;
+
+    items =
+        {
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_blank_nowait_dlg
+// Blank dialog, no wait flag.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE DIALOG r_videotelui_blank_nowait_dlg
+    {
+    flags = ( EEikDialogFlagNoDrag |
+              EEikDialogFlagNoTitleBar |
+              EEikDialogFlagFillAppClientRect |
+              EEikDialogFlagCbaButtons );
+
+    buttons = r_videotelui_softkeys_empty;
+
+    items =
+        {
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_softkeys_empty
+//
+// Empty softkeys. Note that AVKON empty softkey
+// resource can not be used, because flags are needed.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE CBA r_videotelui_softkeys_empty
+    {
+    flags = EAknCBAFlagRespondWhenInvisible;
+
+    buttons =
+        {
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyEmpty;
+            txt = text_softkey_empty;
+            },
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyEmpty;
+            txt = text_softkey_empty;
+            },
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyEmpty;
+            txt = text_softkey_empty;
+            }
+        };
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_qtn_incal_muted_pane
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE TBUF r_videotelui_qtn_incal_muted_pane
+    {
+    buf = qtn_incal_muted_pane;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_allow_video_query
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE DIALOG r_videotelui_allow_video_query
+    {
+    flags =
+        EEikDialogFlagNoDrag |
+        EEikDialogFlagNoTitleBar |
+        EEikDialogFlagCbaButtons |
+        EEikDialogFlagNotifyEsc ;
+    buttons = R_AVKON_SOFTKEYS_YES_NO;
+    items =
+        {
+        DLG_LINE
+            {
+            type = EAknCtQuery;
+            id = EGeneralQuery;
+            control = AVKON_CONFIRMATION_QUERY
+                {
+                layout = EConfirmationLayout;
+                label = "";
+                };
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_switch_to_voice_query
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE DIALOG r_videotelui_create_voice_query
+    {
+    flags = EGeneralQueryFlags;
+    buttons = R_AVKON_SOFTKEYS_YES_NO;
+    items =
+        {
+        DLG_LINE
+            {
+            type = EAknCtQuery;
+            id = EGeneralQuery;
+            control = AVKON_CONFIRMATION_QUERY
+                {
+                layout = EConfirmationLayout;
+                };
+            }
+        };
+    }
+
+// ---------------------------------------------------------
+//
+// r_videotelui_qtn_send_video_image
+//
+// ---------------------------------------------------------
+//
+RESOURCE TBUF r_videotelui_qtn_send_video_image
+    {
+    buf = qtn_incal_send_video_image;
+    }
+
+// ---------------------------------------------------------
+//
+// r_videotelui_qtn_call_number_video
+//
+// ---------------------------------------------------------
+//
+RESOURCE TBUF r_videotelui_qtn_call_number_video
+    {
+    buf = qtn_call_number_video;
+    }
+
+// -----------------------------------------------------------------------------
+//
+//    r_videotelui_title_pane
+//    It defines default title pane.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE TITLE_PANE r_videotelui_title_pane
+    {
+    txt = " ";
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_qtn_incal_waiting_image
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE TBUF r_videotelui_qtn_incal_waiting_image
+    {
+    buf = qtn_incal_waiting_image;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_emergency_note
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE DIALOG r_videotelui_emergency_note
+    {
+    flags = EEikDialogFlagNoDrag |
+            EEikDialogFlagNoTitleBar |
+            EEikDialogFlagCbaButtons;
+
+    buttons = R_AVKON_SOFTKEYS_CANCEL;
+
+    items =
+        {
+        DLG_LINE
+            {
+            type = EAknCtNote;
+            id = EGeneralNote;
+            control = AVKON_NOTE
+                {
+                layout = EGeneralLayout;
+                };
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+//    r_videotelui_information_note
+//    It defines note template for information notes. Text
+//    must be replaced to correct in code. Note does not have wait
+//    flag.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE DIALOG r_videotelui_information_note
+    {
+    flags =
+        EEikDialogFlagNoDrag |
+        EEikDialogFlagNoTitleBar |
+        EEikDialogFlagCbaButtons;
+    items =
+        {
+        DLG_LINE
+            {
+            type = EAknCtNote;
+            id = EGeneralNote;
+            control =
+                AVKON_NOTE
+                    {
+                    layout = EGeneralLayout;
+                    singular_label = " ";
+                    plural_label = "";
+                    animation = R_QGN_NOTE_INFO_ANIM;
+                    };
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_qtn_incal_close_camcorder
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE TBUF r_videotelui_qtn_incal_close_camcorder
+    {
+    buf = qtn_incal_close_camcorder;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_bthf_connect_wait_note
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE DIALOG r_videotelui_bthf_connect_wait_note
+    {
+    flags = EEikDialogFlagNoDrag |
+            EEikDialogFlagNoTitleBar |
+            EEikDialogFlagCbaButtons |
+            EEikDialogFlagWait;
+
+    buttons = R_AVKON_SOFTKEYS_EMPTY;
+
+    items =
+        {
+        DLG_LINE
+            {
+            type = EAknCtNote;
+            id = EGeneralNote;
+            control = AVKON_NOTE
+                {
+                layout = EWaitLayout;
+                singular_label = qtn_wait_connecting_to_bt;
+                plural_label = "";
+                animation = R_QGN_GRAF_WAIT_BAR_ANIM;
+                };
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_qtn_bt_device_not_avail
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE TBUF r_videotelui_qtn_bt_device_not_avail
+    {
+    buf = qtn_bt_device_not_avail;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_text_not_allowed
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE TBUF r_videotelui_text_not_allowed
+    {
+    buf = text_not_allowed;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_text_call_not_allowed
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE TBUF r_videotelui_text_call_not_allowed
+    {
+    buf = text_call_not_allowed;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_qtn_err_cam_swap
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE TBUF r_videotelui_qtn_err_cam_swap
+    {
+    buf = qtn_err_cam_swap;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_qtn_query_create_voice_call
+//
+//
+RESOURCE TBUF r_videotelui_qtn_query_create_voice_call
+    {
+    buf = qtn_query_create_voice_call;
+    }
+//----------------------------------------------------
+//
+//    r_videotelui_qtn_err_unable_to_open_image
+//
+//----------------------------------------------------
+//
+RESOURCE TBUF r_videotelui_qtn_err_unable_to_open_image
+    {
+    buf = qtn_tel_info_unable_open_image;
+    }
+
+//----------------------------------------------------
+//
+//    r_videotelui_qtn_incal_note_decoding_failed
+//
+//----------------------------------------------------
+//
+RESOURCE TBUF r_videotelui_qtn_incal_note_decoding_failed
+    {
+    buf = qtn_incal_note_decoding_failed;
+    }
+
+//----------------------------------------------------
+//
+//    r_videotelui_qtn_err_drm_not_allowed
+//
+//----------------------------------------------------
+//
+RESOURCE TBUF r_videotelui_qtn_err_drm_not_allowed
+    {
+    buf = qtn_drm_not_allowed;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_tooltip_zoom
+//
+//
+RESOURCE TBUF r_videotelui_tooltip_zoom
+    {
+    buf = qtn_vt_tooltip_zoom;
+    }
+
+//----------------------------------------------------
+//
+//    r_image_load_wait_note
+//    Image initialization wait note.
+//
+//----------------------------------------------------
+//
+RESOURCE DIALOG r_progress_decoding_image_wait_note
+    {
+    flags = EAknWaitNoteFlags;
+    buttons = R_AVKON_SOFTKEYS_EMPTY;
+    items=
+        {
+        DLG_LINE
+            {
+            type = EAknCtNote;
+            id = EGeneralNote;
+            control = AVKON_NOTE
+                {
+                layout = EWaitLayout;
+                animation = R_QGN_GRAF_WAIT_BAR_ANIM;
+                singular_label = qtn_vt_progress_decoding_image;
+                };
+            }
+        };
+    }
+
+//----------------------------------------------------
+//
+//    r_videotelui_context_options_cba_button
+//    Cba button resource for number entry.
+//
+//----------------------------------------------------
+//
+RESOURCE CBA_BUTTON r_videotelui_context_options_cba_button
+    {
+    id=EAknSoftkeyContextOptions;
+    txt=text_softkey_empty;
+    }
+
+//----------------------------------------------------
+//
+//    r_videotelui_select_cba_button
+//    Empty cba button resource for toolbar.
+//
+//----------------------------------------------------
+//
+RESOURCE CBA_BUTTON r_videotelui_select_cba_button
+    {
+    id = EAknSoftkeySelect;
+    txt= text_softkey_select;
+    }
+
+//----------------------------------------------------
+//
+//    r_videotelui_empty_cba_button
+//    Empty cba button resource for number entry.
+//
+//----------------------------------------------------
+//
+RESOURCE CBA_BUTTON r_videotelui_empty_cba_button
+    {
+    id = EAknSoftkeyEmpty;
+    txt= text_softkey_empty;
+    }
+
+//----------------------------------------------------
+//
+//    r_videotelui_floating_toolbar
+//    Empty resource for floating toolbar.
+//
+//----------------------------------------------------
+//
+RESOURCE AVKON_TOOLBAR r_videotelui_floating_toolbar
+    {
+    flags = KAknToolbarWithoutCba | KAknToolbarAlwaysFocusing |
+            KAknToolbarFlexiblePosition;
+    items =
+        {
+        };
+    }
+
+//----------------------------------------------------
+//
+//    r_videotelui_fixed_toolbar
+//    Empty resource for fixed toolbar.
+//
+//----------------------------------------------------
+//
+RESOURCE AVKON_TOOLBAR r_videotelui_fixed_toolbar
+    {
+    flags = KAknToolbarFixed;
+    items =
+        {
+        };
+    }
+
+//----------------------------------------------------
+//
+//    r_videotelui_video_record_start_sound_path
+//    Path to a sound file to play when starting video recording
+//
+//----------------------------------------------------
+//
+RESOURCE TBUF r_videotelui_video_record_start_sound_path
+    {
+    buf = KVtStartSoundFile;
+    }
+
+
+//----------------------------------------------------
+//
+//    r_videotelui_video_record_stop_sound_path
+//    Path to a sound file to play when stopping video recording
+//
+//----------------------------------------------------
+//
+RESOURCE TBUF r_videotelui_video_record_stop_sound_path
+    {
+    buf = KVtStopSoundFile;
+    }
+
+//----------------------------------------------------
+//
+//   r_disable_video_button_state_extension
+//
+//----------------------------------------------------
+//
+RESOURCE AVKON_BUTTON_STATE_EXTENSION  r_disable_video_button_state_extension
+    {
+    bmbSkinIdMajor = EAknsMajorGeneric;
+    bmbSkinIdMinor = EAknsMinorGenericQgnIndiTbVideoDisable;
+    //skinid = KAknsIIDQgnIndiTbVideoDisable;
+    }
+
+//----------------------------------------------------
+//
+//   r_enable_video_button_state_extension
+//
+//----------------------------------------------------
+//
+RESOURCE AVKON_BUTTON_STATE_EXTENSION  r_enable_video_button_state_extension
+    {
+    bmbSkinIdMajor = EAknsMajorGeneric;
+    bmbSkinIdMinor = EAknsMinorGenericQgnIndiTbVideo;
+    //skinid = KAknsIIDQgnIndiTbVideo;
+    }
+
+//----------------------------------------------------
+//
+//   r_mute_microphone_button_state_extension
+//
+//----------------------------------------------------
+//
+RESOURCE AVKON_BUTTON_STATE_EXTENSION  r_mute_microphone_button_state_extension
+    {
+    bmbSkinIdMajor = EAknsMajorGeneric;
+    bmbSkinIdMinor = EAknsMinorGenericQgnIndiTbMicrophoneMute;
+    //skinid = KAknsIIDQgnIndiTbMicrophoneMute;
+    }
+
+//----------------------------------------------------
+//
+//   r_unmute_microphone_button_state_extension
+//
+//----------------------------------------------------
+//
+RESOURCE AVKON_BUTTON_STATE_EXTENSION  r_unmute_microphone_button_state_extension
+    {
+    bmbSkinIdMajor = EAknsMajorGeneric;
+    bmbSkinIdMinor = EAknsMinorGenericQgnIndiTbMicrophoneUnmute;
+    //skinid = KAknsIIDQgnIndiTbMicrophoneUnmute;
+    }
+
+//----------------------------------------------------
+//
+//   r_primary_cam_button_state_extension
+//
+//----------------------------------------------------
+//
+RESOURCE AVKON_BUTTON_STATE_EXTENSION  r_primary_cam_button_state_extension
+    {
+    bmbSkinIdMajor = EAknsMajorGeneric;
+    bmbSkinIdMinor = EAknsMinorGenericQgnIndiTbCameraMain ;
+    //skinid = KAknsIIDQgnIndiTbCameraMain;
+    }
+
+//----------------------------------------------------
+//
+//   r_secondary_cam_button_state_extension
+//
+//----------------------------------------------------
+//
+RESOURCE AVKON_BUTTON_STATE_EXTENSION  r_secondary_cam_button_state_extension
+    {
+    bmbSkinIdMajor = EAknsMajorGeneric;
+    bmbSkinIdMinor = EAknsMinorGenericQgnIndiTbCameraSecondary;
+    //skinid = KAknsIIDQgnIndiTbCameraSecondary;
+    }
+
+//----------------------------------------------------
+//
+//   r_zoom_button_state_extension
+//
+//----------------------------------------------------
+//
+RESOURCE AVKON_BUTTON_STATE_EXTENSION  r_zoom_button_state_extension
+    {
+    bmbSkinIdMajor = EAknsMajorGeneric;
+    bmbSkinIdMinor = EAknsMinorGenericQgnIndiTbZoom;
+    //skinid = KAknsIIDQgnIndiTbZoom;
+    }
+
+//----------------------------------------------------
+//
+//   r_share_button_state_extension
+//
+//----------------------------------------------------
+//
+RESOURCE AVKON_BUTTON_STATE_EXTENSION  r_swap_button_state_extension
+    {
+    bmbSkinIdMajor = EAknsMajorGeneric;
+    bmbSkinIdMinor = EAknsMinorGenericQgnIndiTbSwapImages;
+    //skinid = KAknsIIDQgnIndiTbSwapImages;
+    }
+
+//----------------------------------------------------
+//
+//   r_share_button_state_extension
+//
+//----------------------------------------------------
+//
+RESOURCE AVKON_BUTTON_STATE_EXTENSION  r_share_button_state_extension
+    {
+    bmbSkinIdMajor = EAknsMajorGeneric;
+    bmbSkinIdMinor = EAknsMinorGenericQgnIndiTbGallery;
+    //skinid = KAknsIIDQgnIndiTbGallery;
+    }
+
+//----------------------------------------------------
+//
+//   r_handset_button_state_extension
+//
+//----------------------------------------------------
+//
+RESOURCE AVKON_BUTTON_STATE_EXTENSION  r_handset_button_state_extension
+    {
+    bmbSkinIdMajor = EAknsMajorGeneric;
+    bmbSkinIdMinor = EAknsMinorGenericQgnIndiTbHandset;
+    //skinid = KAknsIIDQgnIndiTbHandset;
+    }
+
+//----------------------------------------------------
+//
+//   r_ihf_on_button_state_extension
+//
+//----------------------------------------------------
+//
+RESOURCE AVKON_BUTTON_STATE_EXTENSION r_ihf_on_button_state_extension
+    {
+    bmbSkinIdMajor = EAknsMajorGeneric;
+    bmbSkinIdMinor = EAknsMinorGenericQgnIndiTbIhfOn;
+    //skinid = KAknsIIDQgnIndiTbIhfOn;
+    }
+
+//----------------------------------------------------
+//
+//   r_bt_hf_button_state_extension
+//
+//----------------------------------------------------
+//
+RESOURCE AVKON_BUTTON_STATE_EXTENSION r_bt_hf_button_state_extension
+    {
+    bmbSkinIdMajor = EAknsMajorGeneric;
+    bmbSkinIdMinor = EAknsMinorGenericQgnIndiTbBthf;
+    //skinid = KAknsIIDQgnIndiTbBthf;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_avkonbutton_toggle_video_button
+// This button disables and enables video.
+// This button has two states.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE AVKON_BUTTON r_avkonbutton_toggle_video_button
+    {
+    flags  = 0;
+    states =
+        {
+        AVKON_BUTTON_STATE  // disable video button (0)
+            {
+            bmpfile =  "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_video_disable;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_video_disable_mask;
+            helptxt = qtn_vt_tooltip_disable_video;
+            extension = r_disable_video_button_state_extension;
+            },
+        AVKON_BUTTON_STATE // disable video button (dummy state) (1)
+            {
+            bmpfile =  "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_video_disable;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_video_disable_mask;
+            extension = r_disable_video_button_state_extension;
+ 			  	  },
+        AVKON_BUTTON_STATE  // enable video button (2)
+            {
+            bmpfile =  "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_video;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_video_mask;
+            helptxt = qtn_vt_tooltip_enable_video;
+            extension = r_enable_video_button_state_extension;
+            },
+        AVKON_BUTTON_STATE // enable video button (dummy state) (3)
+            {
+            bmpfile =  "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_video;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_video_mask;
+            extension = r_enable_video_button_state_extension;
+ 			  	  }
+        };
+    }
+// -----------------------------------------------------------------------------
+//
+// r_avkonbutton_toggle_microphone_button
+// This button mutes and unmutes microphone.
+// This button has two states.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE AVKON_BUTTON r_avkonbutton_toggle_microphone_button
+    {
+    flags  = 0;
+    states =
+        {
+        AVKON_BUTTON_STATE  // mute mic button (0)
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_microphone_mute;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_microphone_mute_mask;
+            helptxt = qtn_vt_tooltip_mute_microphone;
+            extension = r_mute_microphone_button_state_extension;
+            },
+        AVKON_BUTTON_STATE  // mute mic button (dummy state) (1)
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_microphone_mute;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_microphone_mute_mask;
+            extension = r_mute_microphone_button_state_extension;
+            },
+        AVKON_BUTTON_STATE  // unmute mic button (2)
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_microphone_unmute;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_microphone_unmute_mask;
+            helptxt = qtn_vt_tooltip_unmute_microphone;
+            extension = r_unmute_microphone_button_state_extension;
+            },
+        AVKON_BUTTON_STATE  // unmute mic button  (dummy state) (3)
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_microphone_unmute;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_microphone_unmute_mask;
+            extension = r_unmute_microphone_button_state_extension;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_avkonbutton_toggle_camera_button
+// This button changes used camera between primary and secondary.
+// This button has two states.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE AVKON_BUTTON r_avkonbutton_toggle_camera_button
+    {
+    flags  = 0;
+    states =
+        {
+        AVKON_BUTTON_STATE  // primary camera button (0)
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_camera_main;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_camera_main_mask;
+            helptxt = qtn_vt_tooltip_primary_cam;
+            extension = r_primary_cam_button_state_extension;
+            },
+        AVKON_BUTTON_STATE  // primary camera button (dummy state) (1)
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_camera_main;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_camera_main_mask;
+            extension = r_primary_cam_button_state_extension;
+            },
+        AVKON_BUTTON_STATE  // secondary camera button (2)
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_camera_secondary;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_camera_secondary_mask;
+            helptxt = qtn_vt_tooltip_secondary_cam;
+             extension = r_secondary_cam_button_state_extension;
+            },
+        AVKON_BUTTON_STATE  // secondary camera button (dummy state) (3)
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_camera_secondary;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_camera_secondary_mask;
+            extension = r_secondary_cam_button_state_extension;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_avkonbutton_swap_images_button
+// This button swaps images
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE AVKON_BUTTON r_avkonbutton_swap_images_button
+    {
+    flags  = 0;
+    states =
+        {
+        AVKON_BUTTON_STATE
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_swap_images;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_swap_images_mask;
+            helptxt = qtn_vt_tooltip_swap_images;
+            extension = r_swap_button_state_extension;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_avkonbutton_activate_zoom_mode_button
+// This button activates zoom mode.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE AVKON_BUTTON r_avkonbutton_activate_zoom_mode_button
+    {
+    flags  = 0;
+    states =
+        {
+        AVKON_BUTTON_STATE
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_zoom;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_zoom_mask;
+            helptxt =  qtn_vt_tooltip_zoom;
+            extension = r_zoom_button_state_extension;
+            },
+         AVKON_BUTTON_STATE
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid  = EMbmVideoteluiQgn_indi_tb_zoom;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_zoom_mask;
+            flags = KAknButtonStateHasLatchedFrame;
+            helptxt = qtn_vt_tooltip_zoom;
+            extension = r_zoom_button_state_extension;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_avkonbutton_share_file_button
+// This button starts the file sharing.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE AVKON_BUTTON r_avkonbutton_share_file_button
+    {
+    flags  = 0;
+    states =
+        {
+        AVKON_BUTTON_STATE
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid  = EMbmVideoteluiQgn_indi_tb_gallery;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_gallery_mask;
+            helptxt = qtn_vt_tooltip_share;
+            extension = r_share_button_state_extension;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_avkonbutton_snapshot_button
+// This button sets capture mode on.
+//
+// -----------------------------------------------------------------------------
+//
+/* Not in use currently
+RESOURCE AVKON_BUTTON r_avkonbutton_snapshot_button
+    {
+    flags  = 0;
+    states =
+        {
+        AVKON_BUTTON_STATE
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid  =  EMbmVideoteluiQgn_indi_cams_tb_capture;
+            bmpmask = EMbmVideoteluiQgn_indi_cams_tb_capture_mask;
+            helptxt = qtn_vt_tooltip_send_snapshot;
+            //extension is also needed here
+            }
+        };
+    }
+*/
+
+
+// -----------------------------------------------------------------------------
+//
+// r_mini_dialer_editor
+// This is a resource for a hidden focused editor for minidialer (touch input).
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE SECRETED r_mini_dialer_editor
+    {
+    num_letters=255;
+    }
+
+//----------------------------------------------------
+//
+//    video preference options
+//
+//----------------------------------------------------
+//
+RESOURCE TBUF r_videotelui_qtn_incal_normal_list_option
+    {
+    buf = qtn_incal_normal_list_option;
+    }
+
+RESOURCE TBUF r_videotelui_qtn_incal_details_list_option
+    {
+    buf = qtn_incal_details_list_option;
+    }
+
+RESOURCE TBUF r_videotelui_qtn_incal_motion_list_option
+    {
+    buf = qtn_incal_motion_list_option;
+    }
+
+//----------------------------------------------------
+//
+//    white balance options
+//
+//----------------------------------------------------
+RESOURCE TBUF r_videotelui_qtn_incal_automatic_option
+    {
+    buf = qtn_incal_automatic_option;
+    }
+
+RESOURCE TBUF r_videotelui_qtn_incal_sunny_option
+    {
+    buf = qtn_incal_sunny_option;
+    }
+
+RESOURCE TBUF r_videotelui_qtn_incal_cloudy_option
+    {
+    buf = qtn_incal_cloudy_option;
+    }
+
+RESOURCE TBUF r_videotelui_qtn_incal_incandescent_option
+    {
+    buf = qtn_incal_incandescent_option;
+    }
+
+RESOURCE TBUF r_videotelui_qtn_incal_fluorescent_option
+    {
+    buf = qtn_incal_fluorescent_option;
+    }
+
+//----------------------------------------------------
+//
+//    colour tone options
+//
+//----------------------------------------------------
+RESOURCE TBUF r_videotelui_qtn_incal_ct_normal_option
+    {
+    buf = qtn_incal_ct_normal_option;
+    }
+
+RESOURCE TBUF r_videotelui_qtn_incal_sepia_option
+    {
+    buf = qtn_incal_sepia_option;
+    }
+
+RESOURCE TBUF r_videotelui_qtn_incal_b_and_w_option
+    {
+    buf = qtn_incal_b_and_w_option;
+    }
+
+RESOURCE TBUF r_videotelui_qtn_incal_negative_option
+    {
+    buf = qtn_incal_negative_option;
+    }
+
+// ---------------------------------------------------------
+//		r_videotelui_white_balance_setting_page
+//		White balance item array for setting page
+//
+// ---------------------------------------------------------
+//
+RESOURCE AVKON_SETTING_PAGE r_videotelui_white_balance_setting_page
+     {
+     label = qtn_incal_video_white_balance_option;
+     softkey_resource =  R_AVKON_SOFTKEYS_OK_CANCEL;
+     type = EAknSetListBox;
+     editor_resource_id = r_videotelui_transparent_setting_listbox;
+     }
+
+// ---------------------------------------------------------
+//		r_videotelui_color_tone_setting_page
+//		White balance item array for setting page
+//
+// ---------------------------------------------------------
+//
+RESOURCE AVKON_SETTING_PAGE r_videotelui_color_tone_setting_page
+     {
+     label = qtn_incal_video_colour_tone_option;
+     softkey_resource =  R_AVKON_SOFTKEYS_OK_CANCEL;
+     type = EAknSetListBox;
+     editor_resource_id = r_videotelui_transparent_setting_listbox;
+     }
+
+//----------------------------------------------------
+//
+//    r_videotelui_transparent_setting_listbox
+//    Listbox for transparent setting page
+//
+//----------------------------------------------------
+//
+RESOURCE LISTBOX r_videotelui_transparent_setting_listbox
+     {
+     flags = 0x0001;
+     }
+
+// ---------------------------------------------------------
+//		r_videotelui_video_quality_array
+//		Item array for the selection list dialog
+//
+// ---------------------------------------------------------
+//
+RESOURCE ARRAY r_videotelui_video_quality_array
+	{
+	items =
+		{
+		LBUF
+			{
+			txt = qtn_incal_normal_list_option;
+			},
+		LBUF
+			{
+			txt = qtn_incal_details_list_option;
+			},
+		LBUF
+			{
+			txt = qtn_incal_motion_list_option;
+			}
+		};
+	}
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_softkeys_select_cancel
+// Videoquality softkeys
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE CBA r_videotelui_softkeys_select_cancel
+    {
+    buttons =
+        {
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyEmpty;
+            txt= text_softkey_empty;
+            },
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyCancel;
+            txt = text_softkey_cancel;
+            },
+        CBA_BUTTON
+            {
+            id = EAknSoftkeySelect;
+            txt= text_softkey_select;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_softkeys_empty_dialerexit
+// Dialer softkeys
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE CBA r_videotelui_softkeys_empty_dialerexit
+    {
+    buttons =
+        {
+        CBA_BUTTON
+            {
+            id = EVtUiCmdDialerEmergencyCall;
+            txt = qtn_incal_softk_emergency_call;
+            },
+        CBA_BUTTON
+            {
+            id = EVtUiDialerExit;
+            txt = text_softkey_back;
+            },
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyEmpty;
+            txt = text_softkey_empty;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+//r_videotelui_softkeys_empty_active_command
+// Dialer softkeys
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE CBA r_videotelui_softkeys_empty_active_command
+    {
+    buttons =
+        {
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyEmpty;
+            txt = text_softkey_empty;
+            },
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyEmpty;
+            txt = text_softkey_empty;
+            },
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyEmpty;
+            txt = text_softkey_empty;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_avkonbutton_audio_routing_button
+// This button changes audio routing.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE AVKON_BUTTON r_avkonbutton_audio_routing_button
+    {
+    flags  = 0;
+    states =
+        {
+        AVKON_BUTTON_STATE // Deactivate loudspeaker (0)
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_handset;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_handset_mask;
+            helptxt = qtn_vt_tooltip_audio_handset;
+            extension =  r_handset_button_state_extension;
+            },
+        AVKON_BUTTON_STATE // Deactivate loudspeaker (dummy state) (1)
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_handset;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_handset_mask;
+            extension = r_handset_button_state_extension;
+            },
+        AVKON_BUTTON_STATE // Deactivate bthf == Activate loudspkr (2)
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_ihf_on;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_ihf_on_mask;
+            helptxt = qtn_vt_tooltip_audio_loudspeaker;
+            extension = r_ihf_on_button_state_extension;
+            },
+        AVKON_BUTTON_STATE // Deactivate bthf (dummy state) (3)
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_ihf_on;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_ihf_on_mask;
+            extension = r_ihf_on_button_state_extension;
+            },
+         AVKON_BUTTON_STATE // Activate loudspeaker (4)
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid  = EMbmVideoteluiQgn_indi_tb_ihf_on;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_ihf_on_mask;
+            helptxt = qtn_vt_tooltip_audio_loudspeaker;
+            extension = r_ihf_on_button_state_extension;
+            },
+        AVKON_BUTTON_STATE // Activate loudspeaker (dummy state) (5)
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_ihf_on;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_ihf_on_mask;
+            extension = r_ihf_on_button_state_extension;
+            },
+         AVKON_BUTTON_STATE // Activate bt hf (6)
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid  = EMbmVideoteluiQgn_indi_tb_bthf;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_bthf_mask;
+            helptxt = qtn_vt_tooltip_audio_bthf;
+            extension = r_bt_hf_button_state_extension;
+            },
+        AVKON_BUTTON_STATE // Activate bt hf (dummy state) (7)
+            {
+            bmpfile = "Z:"APP_BITMAP_DIR"\\videotelui.mif";
+            bmpid = EMbmVideoteluiQgn_indi_tb_bthf;
+            bmpmask = EMbmVideoteluiQgn_indi_tb_bthf_mask;
+            extension = r_bt_hf_button_state_extension;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_softkeys_dialer
+// Options & Dialer open softkeys
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE CBA r_videotelui_softkeys_dialer
+    {
+    buttons =
+        {
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyOptions;
+            txt = text_softkey_option;
+            },
+        CBA_BUTTON
+            {
+            id = EVtUiCmdSendDTMF;
+            txt = qtn_incal_softk_dialer;
+            },
+        CBA_BUTTON
+            {
+            id = EAknSoftkeyContextOptions;
+            txt = text_softkey_empty;
+            }
+        };
+    }
+
+// -----------------------------------------------------------------------------
+//
+// r_videotelui_end_call_button
+// End call button
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE AVKON_BUTTON r_videotelui_end_call_button
+        {
+        flags = 0;
+        states =
+            {
+            AVKON_BUTTON_STATE
+                {
+                flags = 0;
+                txt = qtn_vt_button_end_call;
+                }
+            };                
+        }
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/data/videotelui_caption.rss	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Captions for Video Telephone application.
+*
+*/
+
+
+
+//  INCLUDES
+#include    <apcaptionfile.rh>
+#include    "videotelui.loc"
+
+//  RESOURCE DEFINITIONS 
+
+// -----------------------------------------------------------------------------
+//   
+// CAPTION_DATA
+// Captions for Video Telephone application.
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE CAPTION_DATA
+    {
+    caption = qtn_apps_videophone_grid;
+    shortcaption = qtn_apps_videophone_grid;
+    }
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/data/videotelui_reg.rss	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,35 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Registration file for Video Telephone application.
+*
+*/
+
+
+#include <appinfo.rh>
+#include <videotelui.rsg>
+#include <data_caging_paths_strings.hrh>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0x101F8681 // application UID
+
+RESOURCE APP_REGISTRATION_INFO
+    {
+    app_file = "videotelui";
+    hidden = KAppIsHidden;
+    localisable_resource_file = 
+        APP_RESOURCE_DIR"\\videotelui";
+    localisable_resource_id = R_VIDEOTELUI_LOCALISABLE_APP_INFO;
+    }
+
+// End of File
Binary file vtuis/videotelui/data/videotelui_stub.SIS has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/data/videotelui_stub.pkg	Wed Sep 01 12:29:12 2010 +0100
@@ -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:
+;
+; Languages
+&EN
+
+; Header
+#{"videotelui"}, (0x101F8681), 1, 0, 0, TYPE=SA
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+;Files
+""-"z:\sys\bin\videotelui.exe"
+""-"z:\resource\apps\videotelui.rsc"
+""-"z:\resource\apps\videotelui_aif.mif"
+""-"z:\resource\apps\videotelui.mif"
+""-"z:\private\10003a3f\import\apps\videotelui_reg.rsc"
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/group/bld.inf	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,89 @@
+/*
+* Copyright (c) 2004 - 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Build information for Video Telephone application.
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+../inc/VideoTelephonyVariant.hrh        |../../../inc/videotelephonyvariant.hrh
+../inc/VideoTelephonyInternalCRKeys.h   |../../../inc/videotelephonyinternalcrkeys.h
+../data/videotelui_stub.SIS             /epoc32/data/z/system/install/videotelui_stub.sis
+
+// Export LOC file
+../loc/videotelui.loc                   APP_LAYER_LOC_EXPORT_PATH(videotelui.loc)
+
+// Export IBY files
+../rom/videotelui.iby                   CORE_APP_LAYER_IBY_EXPORT_PATH(videotelui.iby)
+../rom/videoteluiResources.iby          LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(videoteluiresources.iby)
+
+// Generic configuration interface for component cenrep settings  
+
+../conf/s60videotelephony.confml                        APP_LAYER_CONFML(s60videotelephony.confml)
+../conf/s60videotelephony_102072D0.crml 	        APP_LAYER_CRML(s60videotelephony_102072d0.crml)
+../conf/s60videotelephony_10281872.crml 	        APP_LAYER_CRML(s60videotelephony_10281872.crml)
+
+
+#if defined ( RD_VT_RTF )
+../Data/VtStartRecord.wav /epoc32/release/winscw/urel/z/system/sounds/digital/VtStartRecord.wav
+../Data/VtStartRecord.wav /epoc32/release/winscw/udeb/z/system/sounds/digital/VtStartRecord.wav
+../Data/VtStartRecord.wav /epoc32/release/armv5/urel/z/system/sounds/digital/VtStartRecord.wav
+../Data/VtStartRecord.wav /epoc32/release/armv5/udeb/z/system/sounds/digital/VtStartRecord.wav
+
+../Data/VtStopRecord.wav /epoc32/release/winscw/urel/z/system/sounds/digital/VtStopRecord.wav
+../Data/VtStopRecord.wav /epoc32/release/winscw/udeb/z/system/sounds/digital/VtStopRecord.wav
+../Data/VtStopRecord.wav /epoc32/release/armv5/urel/z/system/sounds/digital/VtStopRecord.wav
+../Data/VtStopRecord.wav /epoc32/release/armv5/udeb/z/system/sounds/digital/VtStopRecord.wav
+#endif //RD_VT_RTF
+
+PRJ_EXTENSIONS
+START EXTENSION s60/mifconv
+  OPTION TARGETFILE videotelui.mif
+  OPTION HEADERFILE videotelui.mbg
+  OPTION SOURCES \
+    -c8,8 qgn_graf_call_video_out_bg -c8 qgn_indi_call_video_blind_in -c8 qgn_indi_call_video_blind_out \
+    /1 qgn_graf_zoom_area -c8,1 qgn_indi_zoom_dir -c8 qgn_indi_zoom_min \
+    -c8 qgn_indi_zoom_max -8 qgn_indi_call_video_blind_in_mask_icon -8 qgn_indi_call_video_blind_out_mask_icon \
+    -c8,8 qgn_indi_tb_camera_main -c8,8 qgn_indi_tb_camera_secondary -c8,8 qgn_indi_tb_gallery \
+    -c8,8 qgn_indi_tb_microphone_mute -c8,8 qgn_indi_tb_microphone_unmute -c8,8 qgn_indi_tb_swap_images \
+    -c8,8 qgn_indi_tb_video -c8,8 qgn_indi_tb_video_disable -c8,8 qgn_indi_tb_zoom \
+    -c8,8 qgn_indi_cams_tb_capture -c8,8 qgn_indi_tb_ihf_on -c8,8 qgn_indi_tb_handset \
+    -c8,8 qgn_indi_tb_bthf -c8,8 qgn_indi_button_end_active_call
+END
+
+START EXTENSION s60/mifconv
+  OPTION TARGETFILE videotelui_aif.mif
+  OPTION SOURCES -c8,8 qgn_menu_call_video
+END
+
+
+
+PRJ_MMPFILES
+/* 
+gnumakefile ../group/videotelui_icons_dc.mk
+#ifdef __SCALABLE_ICONS
+gnumakefile ../group/videotelui_icons_aif_scalable_dc.mk
+#else
+gnumakefile ../group/videotelui_icons_aif_bitmaps_dc.mk
+#endif
+*/
+../group/videotelui.mmp
+
+
+
+//  End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/group/videotelui.mmp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,251 @@
+/*
+* Copyright (c) 2004 - 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Project specification for Video Telephone application.
+*
+*/
+
+
+#include    <platform_paths.hrh>
+#include    <data_caging_paths.hrh>
+
+// Capability assignment.
+CAPABILITY CAP_APPLICATION MultiMediaDD NetworkControl CommDD
+
+// Assign Vendor ID.
+VENDORID VID_DEFAULT
+
+TARGET          videotelui.exe
+TARGETTYPE      exe
+EPOCSTACKSIZE   0x5000
+EPOCHEAPSIZE    0x190000 0x500000
+UID             0x100039CE 0x101F8681
+
+SOURCEPATH      ../src
+SOURCE          CVtUiApp.cpp
+SOURCE          CVtUiAppUi.cpp
+SOURCE          CVtUiDoc.cpp
+SOURCE          CVtUiMainControl.cpp
+SOURCE          CVtUiContextControl.cpp
+SOURCE          CVtUiNaviPane.cpp
+SOURCE          CVtUiNaviPaneControl.cpp
+SOURCE          VtUiLayout.cpp
+SOURCE          VtUiUtility.cpp
+SOURCE          VtUiPanic.cpp
+SOURCE          CVtUiBlankControl.cpp
+SOURCE          CVtUiBlankDialog.cpp
+SOURCE          CVtUiExecuteCmdDialog.cpp
+SOURCE          CVtUiMutedControl.cpp
+SOURCE          CVtUiZoomControl.cpp
+SOURCE          CVtUiAllowVideoDialog.cpp
+SOURCE          CVtUiActiveExec.cpp
+SOURCE          CVtUiActivateBtHfDialog.cpp
+SOURCE          TVtUiCallParameters.cpp
+SOURCE          CVtUiNumberEntryActivationControl.cpp
+SOURCE          CVtUiBitmapManager.cpp
+SOURCE		CVtUiEndCallButton.cpp
+SOURCE          CVtUiEndCallButtonPane.cpp
+
+SOURCE          tvtuiappstatebase.cpp
+SOURCE          tvtuistatestarting.cpp
+SOURCE          tvtuistaterunning.cpp
+SOURCE          tvtuistateresetting.cpp
+SOURCE          cvtuiappshutter.cpp
+SOURCE          cvtuivideocontrolbase.cpp
+SOURCE          cvtuidtmfbuffer.cpp
+SOURCE          CVtUiRemoteVideoControl.cpp
+
+// COMMAND FW
+SOURCEPATH      ../src/commands
+SOURCE          cvtuicmdbase.cpp
+SOURCE          cvtuifeaturecmdbase.cpp
+SOURCE          cvtuicmdcontext.cpp
+SOURCE          cvtuicmdvalidationactionbase.cpp
+SOURCE          cvtuicmdvalidatorbase.cpp
+SOURCE          cvtuicommandpolicymanager.cpp
+SOURCE          cvtuiprimarycmdpolicy.cpp
+SOURCE          cvtuicommandmanager.cpp
+SOURCE          tvtuimediastate.cpp
+SOURCE          tvtuiaudiostate.cpp
+SOURCE          tvtuilocalvariation.cpp
+SOURCE          tvtuistates.cpp
+SOURCE          cvtuicommandmodifybase.cpp
+SOURCE          cvtuicmdcustomvalidationactionbase.cpp
+SOURCE          cvtuicmdstatecheckaction.cpp
+SOURCE          cvtuiexecutioncontext.cpp
+SOURCE			tVtuifeaturevariation.cpp
+
+// FEATURE FW
+SOURCEPATH      ../src/features
+SOURCE          cvtuifeaturebase.cpp
+SOURCE          cvtuifeaturemanager.cpp
+
+SOURCEPATH      ../src/features/toolbar
+SOURCE          cvtuitoolbarbase.cpp
+SOURCE          cvtuitoolbarcontext.cpp
+SOURCE          cvtuihidetoolbaritemaction.cpp
+SOURCE 	        tvtuitoolbarcommanditerator.cpp
+SOURCE          cvtuitoolbarskmodifier.cpp
+SOURCE          cvtuitoolbarbutton.cpp
+SOURCE          cvtuitoolbarcmdpolicy.cpp
+SOURCE          cvtuifloatingtoolbar.cpp
+SOURCE          cvtuifixedtoolbar.cpp
+
+
+SOURCEPATH      ../src/features/menu
+SOURCE          cvtuimenus.cpp
+SOURCE          cvtuimenucontext.cpp
+SOURCE          cvtuimenuitemdimmeraction.cpp
+SOURCE          tvtuimenucommanditerator.cpp
+
+SOURCEPATH      ../src/features/softkey
+SOURCE          cvtuisoftkeys.cpp
+SOURCE          cvtuisoftkeycontext.cpp
+SOURCE          cvtuisoftkeyvalidationaction.cpp
+SOURCE          cvtuisoftkeysetting.cpp
+
+
+SOURCEPATH      ../src/features/numberentry
+SOURCE          cvtuinumberentry.cpp
+SOURCE          CVtUiNumberEntryControl.cpp
+
+SOURCEPATH      ../src/features/prefs
+SOURCE          cvtuitransparentsettingpage.cpp
+SOURCE          cvtuiprefsettinglistbase.cpp
+SOURCE          cvtuiwhitebalance.cpp
+SOURCE          cvtuicolortone.cpp
+SOURCE          cvtuivideoquality.cpp
+SOURCE          cvtuiprefpopupbase.cpp
+SOURCE          cvtuiprefsliderbase.cpp
+SOURCE          cvtuibrightness.cpp
+SOURCE          cvtuibrightnesspopup.cpp
+SOURCE          cvtuicontrast.cpp
+SOURCE          cvtuicontrastpopup.cpp
+
+SOURCEPATH      ../src/features/dialer
+SOURCE          cvtuidialer.cpp
+SOURCE          cvtuidialervideocontrol.cpp
+SOURCE          cvtuidialercontainer.cpp
+SOURCE          cvtuicmdopendialer.cpp
+SOURCE          cvtuicmdclosedialer.cpp
+SOURCE          cvtuidialerskmodifier.cpp
+
+// COMPONENT MANAGER FW
+SOURCEPATH      ../src/compman
+SOURCE          cvtuicomponentmanager.cpp
+SOURCE          tvtuicomponentstate.cpp
+SOURCE          tvtuiblocklists.cpp
+
+// SLIDERS
+SOURCEPATH      ../src/sliders
+SOURCE          cvtuipopupbase.cpp
+SOURCE          cvtuisliderbase.cpp
+
+// VOLUME SLIDER
+SOURCEPATH      ../src/features/volume
+SOURCE          cvtuivolume.cpp
+SOURCE          cvtuivolumepopup.cpp
+SOURCE          cvtuivolumecontrol.cpp
+
+// ZOOM SLIDER
+SOURCEPATH      ../src/features/zoom
+SOURCE          cvtuizoom.cpp
+SOURCE          cvtuizoompopup.cpp
+
+SOURCEPATH      ../data
+
+START RESOURCE  videotelui.rss
+HEADER
+TARGETPATH      APP_RESOURCE_DIR
+LANGUAGE_IDS
+END
+
+START RESOURCE  videotelui_reg.rss
+DEPENDS videotelui.rsg
+TARGETPATH      /private/10003a3f/apps
+END
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../inc/commands
+USERINCLUDE     ../inc/features
+USERINCLUDE     ../inc/compman
+USERINCLUDE     ../inc/features/softkey
+USERINCLUDE     ../inc/features/menu
+USERINCLUDE     ../inc/features/toolbar
+USERINCLUDE     ../inc/features/numberentry
+USERINCLUDE     ../inc/features/prefs
+USERINCLUDE     ../inc/features/dialer
+USERINCLUDE     ../inc/features/volume
+USERINCLUDE     ../inc/features/zoom
+USERINCLUDE     ../inc/sliders
+USERINCLUDE     ../loc
+
+SYSTEMINCLUDE   ../../../inc
+APP_LAYER_SYSTEMINCLUDE
+
+LIBRARY         euser.lib
+LIBRARY         apparc.lib
+LIBRARY         cone.lib
+LIBRARY         eikcore.lib
+LIBRARY         ws32.lib
+LIBRARY         eikcoctl.lib
+LIBRARY         apgrfx.lib
+LIBRARY         fbscli.lib
+LIBRARY         eikdlg.lib
+LIBRARY         gdi.lib
+LIBRARY         bitgdi.lib
+LIBRARY         egul.lib
+LIBRARY		    ecom.lib
+
+LIBRARY         aknlayout.lib
+LIBRARY         aknlayout2.lib
+LIBRARY         avkon.lib
+LIBRARY         aknskins.lib
+LIBRARY         aknnotify.lib
+
+LIBRARY         hlplch.lib
+LIBRARY         featmgr.lib
+LIBRARY         commonengine.lib
+LIBRARY         centralrepository.lib
+
+
+LIBRARY         videoteleng.lib
+DEBUGLIBRARY    vtlogger.lib
+
+LIBRARY         phoneclient.lib
+
+LIBRARY         cdlengine.lib
+LIBRARY         aknicon.lib
+LIBRARY         aknlayout2scalable.lib
+
+LIBRARY         mgfetch.lib
+LIBRARY         bafl.lib
+LIBRARY         caf.lib
+LIBRARY         cafutils.lib
+LIBRARY         eikctl.lib
+LIBRARY         fepbase.lib
+
+LIBRARY         remconinterfacebase.lib
+LIBRARY         remconcoreapi.lib
+
+LIBRARY         dialer.lib
+
+LIBRARY         gfxtrans.lib
+
+SOURCEPATH      ../loc
+DOCUMENT        videotelui.loc
+
+SOURCEPATH      ../inc
+DOCUMENT        videotelui.hrh
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/group/videotelui_icons.mk	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,89 @@
+#
+# Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:  Makefile to generate icon file for Video
+#               Telephone application.
+#
+
+ifeq (WINS,$(findstring WINS, $(PLATFORM)))
+ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\z
+else
+ZDIR=\epoc32\data\z
+endif
+
+TARGETDIR=$(ZDIR)\system\apps\videotelui
+HEADERDIR=\epoc32\include
+ICONTARGETFILENAME=$(TARGETDIR)\videotelui.mif
+HEADERFILENAME=$(HEADERDIR)\videotelui.mbg
+
+do_nothing :
+	@rem do_nothing
+
+MAKMAKE : do_nothing
+
+BLD : do_nothing
+
+CLEAN : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+# ----------------------------------------------------------------------------
+# NOTE 1: DO NOT DEFINE MASK FILE NAMES! They are included automatically by
+# MifConv if the mask detph is defined.
+#
+# NOTE 2: Usually, source paths should not be included in the bitmap
+# definitions. MifConv searches for the icons in all icon directories in a
+# predefined order, which is currently \s60\icons, \s60\bitmaps2.
+# The directory \s60\icons is included in the search only if the feature flag
+# __SCALABLE_ICONS is defined.
+# ----------------------------------------------------------------------------
+
+RESOURCE :
+	mifconv $(ICONTARGETFILENAME) /h$(HEADERFILENAME) \
+        /c8,8 qgn_graf_call_video_out_bg.bmp \
+        /c8 qgn_indi_call_video_blind_in.bmp \
+        /c8 qgn_indi_call_video_blind_out.bmp \
+        /1 qgn_graf_zoom_area.bmp \
+        /c8,1 qgn_indi_zoom_dir.bmp \
+        /c8 qgn_indi_zoom_min.bmp \
+        /c8 qgn_indi_zoom_max.bmp \
+        /8 qgn_indi_call_video_blind_in_mask_icon.bmp \
+        /8 qgn_indi_call_video_blind_out_mask_icon.bmp \
+        /c8 qgn_indi_tb_camera_main.bmp \
+        /c8 qgn_indi_tb_camera_secondary.bmp \
+        /c8 qgn_indi_tb_gallery.bmp \
+        /c8 qgn_indi_tb_microphone_mute.bmp \
+        /c8 qgn_indi_tb_microphone_unmute.bmp \
+        /c8 qgn_indi_tb_swap_images.bmp \
+        /c8 qgn_indi_tb_video.bmp \
+        /c8 qgn_indi_tb_video_disable.bmp \
+        /c8 qgn_indi_tb_zoom.bmp \
+        /c8 qgn_indi_cams_tb_capture.bmp \
+        /c8 qgn_indi_tb_ihf_on.bmp \
+       /c8 qgn_indi_tb_handset.bmp \
+       /c8 qgn_indi_tb_bthf.bmp
+
+
+FREEZE : do_nothing
+
+SAVESPACE : do_nothing
+
+RELEASABLES :
+	@echo $(HEADERFILENAME)&& \
+    @echo $(ICONTARGETFILENAME)
+
+FINAL : do_nothing
+
+# End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/group/videotelui_icons_aif_bitmaps.mk	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,61 @@
+#
+# Copyright (c) 2004-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:  Makefile to generate AIF icons for bitmap version.
+#
+
+ifeq (WINS,$(findstring WINS, $(PLATFORM)))
+ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\z
+else
+ZDIR=\epoc32\data\z
+endif
+
+TARGETDIR=$(ZDIR)\system\apps\videotelui
+ICONTARGETFILENAME=$(TARGETDIR)\videotelui_aif.mbm
+
+do_nothing :
+	@rem do_nothing
+
+MAKMAKE : do_nothing
+
+BLD : do_nothing
+
+CLEAN : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+# ----------------------------------------------------------------------------
+# NOTE 1: DO NOT DEFINE MASK FILE NAMES! They are included automatically by
+# MifConv if the mask detph is defined.
+#
+# NOTE 2: Usually, source paths should not be included in the bitmap
+# definitions. MifConv searches for the icons in all icon directories in a
+# predefined order, which is currently \s60\icons, \s60\bitmaps2.
+# The directory \s60\icons is included in the search only if the feature flag
+# __SCALABLE_ICONS is defined.
+# ----------------------------------------------------------------------------
+
+RESOURCE :
+	mifconv $(ICONTARGETFILENAME) \
+        /c8,8 qgn_menu_call_video_lst.bmp
+
+FREEZE : do_nothing
+
+SAVESPACE : do_nothing
+
+RELEASABLES :
+	@echo $(ICONTARGETFILENAME)
+
+FINAL : do_nothing
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/group/videotelui_icons_aif_bitmaps_dc.mk	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,61 @@
+#
+# Copyright (c) 2004-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:  Makefile to generate AIF icons for bitmap version.
+#
+
+ifeq (WINS,$(findstring WINS, $(PLATFORM)))
+ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\z
+else
+ZDIR=\epoc32\data\z
+endif
+
+TARGETDIR=$(ZDIR)\resource\apps
+ICONTARGETFILENAME=$(TARGETDIR)\videotelui_aif.mbm
+
+do_nothing :
+	@rem do_nothing
+
+MAKMAKE : do_nothing
+
+BLD : do_nothing
+
+CLEAN : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+# ----------------------------------------------------------------------------
+# NOTE 1: DO NOT DEFINE MASK FILE NAMES! They are included automatically by
+# MifConv if the mask detph is defined.
+#
+# NOTE 2: Usually, source paths should not be included in the bitmap
+# definitions. MifConv searches for the icons in all icon directories in a
+# predefined order, which is currently \s60\icons, \s60\bitmaps2.
+# The directory \s60\icons is included in the search only if the feature flag
+# __SCALABLE_ICONS is defined.
+# ----------------------------------------------------------------------------
+
+RESOURCE :
+	mifconv $(ICONTARGETFILENAME) \
+        /c8,8 qgn_menu_call_video_lst.bmp
+
+FREEZE : do_nothing
+
+SAVESPACE : do_nothing
+
+RELEASABLES :
+	@echo $(ICONTARGETFILENAME)
+
+FINAL : do_nothing
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/group/videotelui_icons_aif_scalable.mk	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,61 @@
+#
+# Copyright (c) 2004-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:  Makefile to generate AIF icons for scalable version.
+#
+
+ifeq (WINS,$(findstring WINS, $(PLATFORM)))
+ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\z
+else
+ZDIR=\epoc32\data\z
+endif
+
+TARGETDIR=$(ZDIR)\system\apps\videotelui
+ICONTARGETFILENAME=$(TARGETDIR)\videotelui_aif.mif
+
+do_nothing :
+	@rem do_nothing
+
+MAKMAKE : do_nothing
+
+BLD : do_nothing
+
+CLEAN : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+# ----------------------------------------------------------------------------
+# NOTE 1: DO NOT DEFINE MASK FILE NAMES! They are included automatically by
+# MifConv if the mask detph is defined.
+#
+# NOTE 2: Usually, source paths should not be included in the bitmap
+# definitions. MifConv searches for the icons in all icon directories in a
+# predefined order, which is currently \s60\icons, \s60\bitmaps2.
+# The directory \s60\icons is included in the search only if the feature flag
+# __SCALABLE_ICONS is defined.
+# ----------------------------------------------------------------------------
+
+RESOURCE :
+	mifconv $(ICONTARGETFILENAME) \
+        /c8,8 qgn_menu_call_video.svg
+
+FREEZE : do_nothing
+
+SAVESPACE : do_nothing
+
+RELEASABLES :
+	@echo $(ICONTARGETFILENAME)
+
+FINAL : do_nothing
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/group/videotelui_icons_aif_scalable_dc.mk	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,61 @@
+#
+# Copyright (c) 2004-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:  Makefile to generate AIF icons for scalable version.
+#
+
+ifeq (WINS,$(findstring WINS, $(PLATFORM)))
+ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\z
+else
+ZDIR=\epoc32\data\z
+endif
+
+TARGETDIR=$(ZDIR)\resource\apps
+ICONTARGETFILENAME=$(TARGETDIR)\videotelui_aif.mif
+
+do_nothing :
+	@rem do_nothing
+
+MAKMAKE : do_nothing
+
+BLD : do_nothing
+
+CLEAN : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+# ----------------------------------------------------------------------------
+# NOTE 1: DO NOT DEFINE MASK FILE NAMES! They are included automatically by
+# MifConv if the mask detph is defined.
+#
+# NOTE 2: Usually, source paths should not be included in the bitmap
+# definitions. MifConv searches for the icons in all icon directories in a
+# predefined order, which is currently \s60\icons, \s60\bitmaps2.
+# The directory \s60\icons is included in the search only if the feature flag
+# __SCALABLE_ICONS is defined.
+# ----------------------------------------------------------------------------
+
+RESOURCE :
+	mifconv $(ICONTARGETFILENAME) \
+        /c8,8 qgn_menu_call_video.svg
+
+FREEZE : do_nothing
+
+SAVESPACE : do_nothing
+
+RELEASABLES :
+	@echo $(ICONTARGETFILENAME)
+
+FINAL : do_nothing
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/group/videotelui_icons_dc.mk	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,88 @@
+#
+# Copyright (c) 2004-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:  Makefile to generate icon file for Video
+#               Telephone application.
+#
+
+ifeq (WINS,$(findstring WINS, $(PLATFORM)))
+ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\z
+else
+ZDIR=\epoc32\data\z
+endif
+
+TARGETDIR=$(ZDIR)\resource\apps
+HEADERDIR=\epoc32\include
+ICONTARGETFILENAME=$(TARGETDIR)\videotelui.mif
+HEADERFILENAME=$(HEADERDIR)\videotelui.mbg
+
+do_nothing :
+	@rem do_nothing
+
+MAKMAKE : do_nothing
+
+BLD : do_nothing
+
+CLEAN : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+# ----------------------------------------------------------------------------
+# NOTE 1: DO NOT DEFINE MASK FILE NAMES! They are included automatically by
+# MifConv if the mask detph is defined.
+#
+# NOTE 2: Usually, source paths should not be included in the bitmap
+# definitions. MifConv searches for the icons in all icon directories in a
+# predefined order, which is currently \s60\icons, \s60\bitmaps2.
+# The directory \s60\icons is included in the search only if the feature flag
+# __SCALABLE_ICONS is defined.
+# ----------------------------------------------------------------------------
+RESOURCE :
+	mifconv $(ICONTARGETFILENAME) /h$(HEADERFILENAME) \
+        /c8,8 qgn_graf_call_video_out_bg.bmp \
+        /c8 qgn_indi_call_video_blind_in.bmp \
+        /c8 qgn_indi_call_video_blind_out.bmp \
+        /1 qgn_graf_zoom_area.bmp \
+        /c8,1 qgn_indi_zoom_dir.bmp \
+        /c8 qgn_indi_zoom_min.bmp \
+        /c8 qgn_indi_zoom_max.bmp \
+        /8 qgn_indi_call_video_blind_in_mask_icon.bmp \
+        /8 qgn_indi_call_video_blind_out_mask_icon.bmp \
+        /c8,8 qgn_indi_tb_camera_main.bmp \
+        /c8,8 qgn_indi_tb_camera_secondary.bmp \
+        /c8,8 qgn_indi_tb_gallery.bmp \
+        /c8,8 qgn_indi_tb_microphone_mute.bmp \
+        /c8,8 qgn_indi_tb_microphone_unmute.bmp \
+        /c8,8 qgn_indi_tb_swap_images.bmp \
+        /c8,8 qgn_indi_tb_video.bmp \
+        /c8,8 qgn_indi_tb_video_disable.bmp \
+        /c8,8 qgn_indi_tb_zoom.bmp \
+        /c8,8 qgn_indi_cams_tb_capture.bmp \
+        /c8,8 qgn_indi_tb_ihf_on.bmp \
+        /c8,8 qgn_indi_tb_handset.bmp \
+        /c8,8 qgn_indi_tb_bthf.bmp
+
+
+FREEZE : do_nothing
+
+SAVESPACE : do_nothing
+
+RELEASABLES :
+	@echo $(HEADERFILENAME)&& \
+    @echo $(ICONTARGETFILENAME)
+
+FINAL : do_nothing
+
+# End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiActivateBtHfDialog.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,108 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Bluetooth HF activation dialog for Video Telephone application.
+*
+*/
+
+
+
+#ifndef CVTUIACTIVATEBTHFDIALOG_H
+#define CVTUIACTIVATEBTHFDIALOG_H
+
+//  INCLUDES
+#include    <AknWaitDialog.h>
+#include    <mvtengcommandobserver.h>
+#include    <mvtengaudio.h>
+
+// FORWARD DECLARATIONS
+class MVtEngCommandHandler;
+class MVtUiEngineCommandManager;
+
+// CLASS DECLARATION
+
+/**
+*  Bluetooth HF activation dialog for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class CVtUiActivateBtHfDialog
+    : public CAknWaitDialog,
+      private MVtEngCommandObserver
+    {
+    public: // Constructors and destructor
+
+        /**
+        * Constructor.
+        *
+        * @param aSelfPtr optional pointer to itself.
+        * @param aError optional pointer to error code variable.
+        * @param aCommandHandler command handler.
+        * @param aCommandManager command manager.
+        */
+        CVtUiActivateBtHfDialog(
+            CEikDialog** aSelfPtr,
+            TInt* aError,
+            MVtEngCommandHandler& aCommandHandler,
+            MVtUiEngineCommandManager& aCommandManager );
+
+        /**
+        * Destructor.
+        */
+        ~CVtUiActivateBtHfDialog();
+
+    public: // New functions
+
+        /**
+        * Executes bluetooth activation dialog.
+        */
+        void ExecuteDialogLD();
+
+    protected: // Functions from base classes
+
+        /**
+        * @see CEikDialog::PostLayoutDynInitL.
+        */
+        virtual void PostLayoutDynInitL();
+
+    private:
+
+        /**
+        * @see MVtEngCommandObserver::HandleVTCommandPerformedL.
+        */
+        virtual void HandleVTCommandPerformedL(
+            TVtEngCommandId aCommand,
+            const TInt aError );
+
+    private:
+
+        // Reference to command handler.
+        MVtEngCommandHandler& iCommandHandler;
+
+        // Reference to command manager.
+        MVtUiEngineCommandManager& iCommandManager;
+
+        // ETrue if command is performed.
+        TBool iCommandPerformed;
+
+        // Pointer to error code variable.
+        TInt* iError;
+
+        // Audio routing setting.
+        TPckgBuf< MVtEngAudio::TVtEngRoutingSetting > iAudioRouting;
+
+    };
+
+#endif      // CVTUIACTIVATEBTHFDIALOG_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiActiveExec.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,169 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Asynchronous execution class for Video Telephone application.
+*
+*/
+
+
+
+#ifndef CVTUIACTIVEEXEC_H
+#define CVTUIACTIVEEXEC_H
+
+//  INCLUDES
+#include    <e32base.h>
+
+// FORWARD DECLARATIONS
+class CVtUiActiveExec;
+
+// CLASS DECLARATION
+
+/**
+*  Interface for asynchronous execution.
+*
+*  @since Series 60 2.6
+*/
+class MVtUiActiveExec
+    {
+    public: // New functions
+
+        /**
+        * Starts execution of a command.
+        * @param aActiveExec active executor.
+        * @param aState state based on which execution can be started.
+        * @param aNextState next state.
+        * @param aRequest request status, which should be used if operation is 
+        *        asynchronous.
+        * @return ETrue if operation was synchronous, otherwise EFalse.
+        */
+        virtual TBool ActiveExecExecuteL( 
+            CVtUiActiveExec& aActiveExec,
+            const TInt aState, 
+            TInt& aNextState,
+            TRequestStatus& aRequest ) = 0; 
+
+        /**
+        * Decide whether to continue or not.
+        * @param aActiveExec active executor.
+        * @param aState current state, should be updated to new state.
+        * @param aError error code.
+        * @return ETrue if continued, EFalse if stopped.
+        */
+        virtual TBool ActiveExecContinue(
+            CVtUiActiveExec& aActiveExec,
+            TInt& aState, 
+            const TInt aError ) = 0;
+
+        /**
+        * Cancels operation of specific state.
+        * @param aActiveExec active executor.
+        * @param aState state.
+        */
+        virtual void ActiveExecCancel( 
+            CVtUiActiveExec& aActiveExec,
+            const TInt aState ) = 0;
+
+        /**
+        * Informs that operation has been finished.
+        * @param aActiveExec active executor.
+        * @param aInitialState initial state.
+        */
+        virtual void ActiveExecDone( 
+            CVtUiActiveExec& aActiveExec,
+            const TInt aInitialState ) = 0;
+
+    };
+
+/**
+*  Asynchronous execution class for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class CVtUiActiveExec 
+    : public CActive
+    {
+    public: // Constructors and destructor
+
+        /**
+        * Constructor.
+        * @param aPriority priority of the active object.
+        */
+        CVtUiActiveExec(
+            const TInt aPriority );
+
+        /**
+        * Destructor.
+        */
+        ~CVtUiActiveExec();
+
+    public: // New functions
+
+        /**
+        * Starts execution.
+        * @param aStartState initial state.
+        * @param aExec executor.
+        */
+        void Start( 
+            TInt aStartState, 
+            MVtUiActiveExec& aExec );
+
+        /**
+        * Initial state of currently
+        * active operation.
+        *
+        * @return initial state, or KErrNotFound if no operation ongoing.
+        */
+        TInt InitialState() const;
+
+        /**
+        * Returns request status.
+        * @return request status.
+        */
+        TInt RequestStatus() const;
+
+    public: // Functions from base classes
+
+        /**
+        * @see CActive::RunL.
+        */
+        virtual void RunL();
+
+        /**
+        * @see CActive::DoCancel.
+        */
+        virtual void DoCancel();
+
+        /**
+        * @see CActive::RunError.
+        */
+        virtual TInt RunError( TInt aError );
+
+    private:
+
+        // Ref to active executor.
+        MVtUiActiveExec* iActiveExec;
+
+        // Initial state.
+        TInt iInitialState;
+
+        // Current state.
+        TInt iCurrentState;
+
+        // Next state.
+        TInt iNextState;
+
+    };
+
+#endif // CVTUIACTIVEEXEC_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiAllowVideoDialog.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,115 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  'Allow video image' query for Video Telephone application.
+*
+*/
+
+
+
+#ifndef CVTUIALLOWVIDEODIALOG_H
+#define CVTUIALLOWVIDEODIALOG_H
+
+//  INCLUDES
+#include    <AknQueryDialog.h>
+
+// CLASS DECLARATION
+
+/**
+*  'Allow video image' query for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class CVtUiAllowVideoDialog
+    : public CAknQueryDialog
+    {
+    public: // Constructors and destructor
+        
+        /**
+        * Constructor.
+        *
+        * @param aSelfPtr optional pointer to itself.
+        * @param aTone tone to be played.
+        */
+        CVtUiAllowVideoDialog( 
+            CEikDialog** aSelfPtr,
+            const TTone& aTone );
+
+        /**
+        * Destructor.
+        */
+        ~CVtUiAllowVideoDialog();
+
+    public: // New functions
+
+        /**
+        * Enumerates different results which
+        * can be completed to request status.
+        */
+        enum TResult
+            {
+            // Query was canceled.
+            EQueryCanceled = 1,
+            // Query was dismissed due to timeout.
+            EQueryDismissedTimeout,
+            // User denied video sending.
+            EUserDenied,
+            // User allowed video sending.
+            EUserAllowed
+            };
+
+        /**
+        * Runs dialog.
+        * @param aStatus request status.
+        */
+        void ExecuteDialogLD(
+            TRequestStatus& aStatus );
+
+    protected: // Functions from base classes
+       
+        /**
+        * @see CAknQueryDialog::PostLayoutDynInitL.
+        */
+        virtual void PostLayoutDynInitL();
+
+        /**
+        * @see CAknQueryDialog::OkToExitL.
+        */
+        virtual TBool OkToExitL( TInt aCommand );
+
+    private:
+
+        /**
+        * Callback function. Called when this query
+        * is dismissed.
+        * @param aAny pointer to instance of this class.
+        * @return KErrNone.
+        */
+        static TInt DoDismissDialogTimeoutL( TAny* aAny );
+
+    private:
+
+        // Pointer to pointer to this instance.
+        CEikDialog** iSelfPtr;
+
+        // Timer for dismissing the query after timeout.
+        CPeriodic* iQueryTimer;
+
+        // Request status.
+        TRequestStatus* iRequestStatus;
+
+    };
+
+#endif      // CVTUIALLOWVIDEODIALOG_H
+            
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiApp.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Application class for Video Telephone application.
+*
+*/
+
+
+
+#ifndef CVTUIAPP_H
+#define CVTUIAPP_H
+
+//  INCLUDES
+#include    <aknapp.h>
+
+// CLASS DECLARATION
+
+/**
+*  Application class for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class CVtUiApp 
+    : public CAknApplication
+    {
+    public: // Constructors and destructor
+
+        /**
+        * C++ default constructor.
+        */
+        CVtUiApp();
+
+    public: // Functions from base classes
+
+        /**
+        * From CAknApplication, creates document instance.
+        * @return document instance.
+        */
+        virtual CApaDocument* CreateDocumentL();
+
+        /**
+        * From CAknApplication, returns UID of the application.
+        * @return UID of the application.
+        */
+        virtual TUid AppDllUid() const;
+
+    };
+
+#endif      // CVTUIAPP_H  
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiAppUi.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,1504 @@
+/*
+* Copyright (c) 2004-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:  Application UI class for Video Telephone application.
+*
+*/
+
+
+
+#ifndef CVTUIAPPUI_H
+#define CVTUIAPPUI_H
+
+//  INCLUDES
+#include    <aknappui.h>
+#include    <vtengcommands.h>
+#include    <mvtengmedia.h>
+#include    <tvtengrendering.h>
+#include    <tvtengrenderingdsa.h>
+#include    <tvtengrenderingdp.h>
+#include    <tvtengrenderingnga.h>
+#include    <AknProgressDialog.h>
+#include    <mvtengaudio.h>
+#include    <remconcoreapi.h>
+
+#include    "CVtUiActiveExec.h"
+#include    "tvtuilocalvariation.h"
+#include    "tvtuiappstatebase.h"
+
+
+// FORWARD DECLARATION
+class CVtUiBlankControl;
+class CAknNavigationControlContainer;
+class CAknTitlePane;
+class CVtEngModel;
+class MVtUiVideoWindow;
+class CRepository;
+class CAknQueryDialog;
+class CAknProgressDialog;
+class TVtUiStates;
+class CVtUiCommandManager;
+class CVtUiComponentManager;
+class CVtUiFeatureManager; // TOOLBAR MOD
+class MVtUiNumberSource;
+class CVtUiMainControl;
+class CVtUiContextControl;
+class CVtUiBitmapManager;
+class CVtUiVolumeControl;
+class CAknIncallBubble;
+class CVtUiRemoteVideoControl;
+class CVtUiEndCallButtonPane;
+
+// CLASS DECLARATION
+
+/**
+*  Application UI class for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class CVtUiAppUi
+    : public CAknAppUi,
+      protected MVtUiActiveExec,
+      public MVtUiStateContext,
+      public MProgressDialogCallback
+    {
+    public:
+
+        // Rendering modes
+        enum TRenderingMode
+            {
+            ERenderingModeDefault,
+            ERenderingModeDialer
+            };
+
+    public: // Constructors and destructor
+
+        /**
+        * C++ constructor.
+        */
+        CVtUiAppUi();
+
+        /**
+        * Symbian constructor.
+        */
+        void ConstructL();
+
+        /**
+        * C++ destructor.
+        */
+        ~CVtUiAppUi();
+
+    public: // New functions
+
+        /*
+        *  This function decides possibility of swapimg image places.
+        */
+        TBool CanSwapImagePlaces();
+
+        /*
+        * Switches status pane between flat and normal one.
+        */
+        void SwitchLayoutToFlatStatusPaneL( TBool aSwitch );
+
+        /**
+        * Refreshes all.
+        */
+        void RefreshL();
+
+        /**
+        * Refreshes navi pane.
+        */
+        void RefreshNaviPaneL();
+
+        /**
+        * Refreshes softkeys.
+        */
+        void RefreshSoftkeysL();
+        
+        /**
+        * Refreshes menu.
+        */
+        void RefreshMenuL();
+
+        /**
+        * Refresh zoom popup
+        */
+        void RefreshZoomPopupL();
+        
+        /**
+        * Stop brightness or Contrast
+        */        
+        void StopBrightnessOrContrast();
+        /**
+        * Refreshes blind flags.
+        */
+        void RefreshBlind();
+        
+        /**
+        * Enable end call button
+        */
+        void EnableEndCallButton();
+
+        /**
+        * Refreshes synchronisation.
+        */
+        void RefreshSynchronise();
+
+        /**
+        * Opens number entry.
+        * @return ETrue if number entry opened.
+        */
+        TBool OpenNumberEntryL();
+
+        /**
+        * Handles EKeyPhoneSend presses
+        */
+        TKeyResponse HandlePhoneSendKeyL( const TKeyEvent& aKeyEvent,
+            TEventCode aType );
+
+        /**
+        * Returns pointer to cba.
+        */
+        CEikButtonGroupContainer* GetCba();
+
+        /**
+        * Sets zoom mode.
+        * @param aEnableZoomMode Etrue if zoom mode is on.
+        * EFalse otherwise.
+        * @param aIsPermanent ETrue if zoomindicator's timeout
+        * should be ignored. EFalse otherwise..
+        */
+        void SetZoomModeL( const TBool aEnableZoomMode,
+            const TBool aIsPermanent = EFalse );
+
+        /**
+        * Checks if command is active.
+        * @param aCommand Command id.
+        * @return Etrue if command is active
+        * EFalse otherwise.
+        */
+        TBool IsActiveCommand( TInt aCommand ) const;
+
+        TVtUiAppStateBase& State();
+
+        /**
+        * Returns reference to bitmap manager.
+        */
+        CVtUiBitmapManager& BitmapManager();
+
+        /**
+        * Sets given zoom step, if it allowed.
+        * @param aZoomStep New zoom step to be set.
+        */
+        void SetZoomFactorL( TInt aZoomStep );
+        
+        /*
+        * Simulate key event
+        */
+        void CmdSimulateKeyEvent( TInt aScanCode );
+
+    public: // Functions from base classes
+
+        /**
+        * From CAknAppUi, handles window server events.
+        * @param aEvent event.
+        * @param aDestination destination control.
+        */
+        virtual void HandleWsEventL(
+            const TWsEvent& aEvent,
+            CCoeControl* aDestination );
+
+        /**
+        * From CAknAppUi, processes commands.
+        * @param aCommand the identifier of the command to be handled.
+        */
+        virtual void ProcessCommandL(
+            TInt aCommand );
+
+        /**
+        * From CAknAppUi, handles commands.
+        * @param aCommand the identifier of the command to be handled.
+        */
+        virtual void HandleCommandL(
+            TInt aCommand );
+
+        /**
+        * From CAknAppUi, handles dynamic initialisation of menu panes.
+        * @param aResourceId the resource identifier for the pane.
+        * @param aMenuPane the menu pane corresponding to the resource.
+        */
+        virtual void DynInitMenuPaneL(
+            TInt aResourceId,
+            CEikMenuPane* aMenuPane );
+
+        /**
+        * From CAknAppUi, handles key events.
+        * @param aKeyEvent event to be handled.
+        * @param aType type of the key event.
+        * @return response code (EKeyWasConsumed, EKeyWasNotConsumed)
+        */
+        virtual TKeyResponse HandleKeyEventL(
+            const TKeyEvent& aKeyEvent,
+            TEventCode aType );
+
+        /**
+        * From CAknAppUi, handles resouce changes.
+        * @param aType type of resource change.
+        */
+        virtual void HandleResourceChangeL( TInt aType );
+
+        /**
+        * From CAknAppUi, handles foreground status changes.
+        * @param aForeground ETrue if foreground.
+        */
+        virtual void HandleForegroundEventL( TBool aForeground );
+
+        /**
+        * Returns a pointer to CEikonEnv.
+        */
+        CEikonEnv* GetEikonEnv();
+
+    protected: // Functions from base classes
+
+        /**
+        * From CAknAppUi, returns help context.
+        * @return help context.
+        */
+        virtual CArrayFix<TCoeHelpContext>* HelpContextL() const;
+
+        /**
+        * @see MVtUiActiveExec::ActiveExecExecuteL.
+        */
+        virtual TBool ActiveExecExecuteL(
+            CVtUiActiveExec& aActiveExec,
+            const TInt aState,
+            TInt& aNextState,
+            TRequestStatus& aRequest );
+
+        /**
+        * @see MVtUiActiveExec::ActiveExecContinue.
+        */
+        virtual TBool ActiveExecContinue(
+            CVtUiActiveExec& aActiveExec,
+            TInt& aState,
+            const TInt aError );
+
+        /**
+        * @see MVtUiActiveExec::ActiveExecCancel.
+        */
+        virtual void ActiveExecCancel(
+            CVtUiActiveExec& aActiveExec,
+            const TInt aState );
+
+        /**
+        * @see MVtUiActiveExec::ActiveExecDone.
+        */
+        virtual void ActiveExecDone(
+            CVtUiActiveExec& aActiveExec,
+            const TInt aInitialState );
+
+    public: // from MVtUiStateContext
+
+        /** @see MVtUiStateContext::StartupPhase1L */
+        virtual void StartupPhase1L();
+
+        /** @see MVtUiStateContext::ShutdownL */
+        virtual void ShutdownL();
+
+        /** @see MVtUiStateContext::StartupPhase2L */
+        virtual void StartupPhase2L();
+
+        /** @see MVtUiStateContext::ChangeApplicationFocus */
+        virtual void ChangeApplicationFocus( const TBool aForeground );
+
+        /** @see MVtUiStateContext::ChangeState */
+        virtual void ChangeState( TVtUiAppStateBase* aState );
+
+        /** @see MVtUiStateContext::StartTone */
+        virtual void StartDtmfTone( const TChar& aTone );
+
+        /** @see MVtUiStateContext::StopTone */
+        virtual void StopDtmfTone();
+
+        /** @see MVtUiStateContext::Model */
+        virtual CVtEngModel& Model();
+
+        /** @see MVtUiStateContext::VideoTelephonyVariation */
+        virtual const TVtUiVideoTelephonyVariation&
+            VideoTelephonyVariation() const;
+
+        /** @see MVtUiStateContext::NumberSource*/
+        virtual MVtUiNumberSource* NumberSource() const;
+
+        /** @see MVtUiStateContext::RefreshL */
+        virtual void RefreshL( const TInt aRefreshFlags );
+
+        /** @see MVtUiStateContext::DoExecuteCmdL */
+        virtual void DoExecuteCmdL(
+            const TVtEngCommandId aCommand,
+            TDesC8* aParams );
+
+        /** @see MVtUiStateContext::DoHandleLayoutChangedL */
+        virtual void DoHandleLayoutChangedL();
+
+        /** From MVtUiShutterObserver via MVtUiStateContext
+        *  Exits the application.
+        */
+        virtual void HandleShutdownReady();
+
+        /**
+        * Gets reference to context control.
+        * @return reference to context control.
+        */
+        CVtUiContextControl& ContextControl();
+
+        /**
+        * Gets reference to main control.
+        * @return reference to main control.
+        */
+        CVtUiMainControl& MainControl();
+
+        /**
+        * Gets reference to remote video control.
+        * @return reference to remote video control.
+        */        
+        CVtUiRemoteVideoControl& RemoteVideoControl();
+
+        /**
+        * Gets reference to end call pane.
+        * @return reference to end call pane.
+        */
+        CVtUiEndCallButtonPane& EndCallButtonPane();
+
+        /**
+        * Switches viewfinder to main pane if it is currently in context
+        * pane.
+        */
+        void SwitchViewFinderToMainPaneL( TBool aUpdateState = ETrue );
+
+        /**
+        * Switches viewfinder to context pane if it is currently in main
+        * pane.
+        */
+        void SwitchViewFinderToContextPaneL( TBool aUpdateState = ETrue );
+
+        /**
+        * Restores viewfinder back to pane where it was prior to calling the
+        * switch ViewFinderToMainPane() or ViewFinderToContextPane() methods.
+        */
+        void RestoreViewFinderL();
+
+        /*
+        * Updates volume to the Video Telephone engine.
+        */
+        void CmdUpdateVolumeL( MVtEngAudio::TVtEngOutputVolume aVolume );
+
+        /**
+        * Increases "command activating" ref.count and adds cleanup item
+        * to decrease it. Refreshes commands in case of first increment from
+        * zero. When PopAndDestroy() is called, cleanup decreases reference
+        * count and if it reduces back to zero command refresh is again done.
+        */
+        void EnableCommandActivatingAndCleanupPushL();
+
+    private: // from MProgressDialogCallback
+
+        /**
+        * @see MProgressDialogCallback::DialogDismissedL
+        */
+        void DialogDismissedL( TInt aButtonId );
+
+    private:
+
+        // COMMAND HANDLING
+
+        /**
+        * Checks if command is allowed.
+        * @param aCommand command identifier.
+        * @return ETrue if allowed, EFalse otherwise.
+        */
+        TBool IsCommandAllowedL( const TInt aCommand );
+
+        /**
+        * Refreshes iDisabledFlags.
+        */
+        void RefreshDisabledFlagsL();
+
+        /**
+        * Refreshes camera option availability.
+        * @param aUsePrimaryCameraNotAllowed it will be updated to ETrue if
+        *        it is not allowed to activate primary camera.
+        * @param aUseSecondaryCameraNotAllowed it will be updated to ETrue if
+        *        it is not allowed to activate secondary camera.
+        */
+        void RefreshCameraOptionAvailability(
+            TBool& aUsePrimaryCameraNotAllowed,
+            TBool& aUseSecondaryCameraNotAllowed );
+
+        /**
+        * Enables capture mode.
+        */
+        void CmdSnapshotL();
+
+        /**
+        * Freezes outgoing video image.
+        */
+        void CmdCaptureL();
+
+        /**
+        * Disables capture mode.
+        */
+        void CmdCancelCaptureL();
+
+
+        /**
+        * Enables video.
+        */
+        void CmdEnableVideoL();
+
+        /**
+        * Enables audio (unmute microphone).
+        */
+        void CmdEnableAudioL();
+
+        /**
+        * Disables video.
+        */
+        void CmdDisableVideoL();
+
+        /**
+        * Disables audio (mute microphone).
+        */
+        void CmdDisableAudioL();
+
+        /**
+        * Activates Bluetooth handsfree.
+        */
+        void CmdActivateBtL();
+
+        /**
+        * Deactivates Bluetooth handsfree.
+        */
+        void CmdDeactivateBtL();
+
+        /**
+        * Activates loudspeaker.
+        */
+        void CmdActivateLoudspeakerL();
+
+        /**
+        * Deactivates loudspeaker.
+        */
+        void CmdDeactivateLoudspeakerL();
+
+        /**
+        * Ends active call.
+        */
+        void CmdEndActiveCallL();
+
+        /**
+        * Swaps images places.
+        */
+        void CmdSwapImagesPlacesL();
+
+        /**
+        * Switches used camera.
+        * @param aPrimaryCamera ETrue if primary camera is to be selected,
+        *        EFalse if secondary camera is to be selected.
+        */
+        void CmdUseCameraL( const TBool aPrimaryCamera );
+
+        /**
+        * Launches help application.
+        */
+        void CmdHelpL();
+
+        /**
+        * Prepare exiting the application.
+        */
+        void PrepareExitL();
+
+        /**
+        * Updates zoom step to Video Telephone engine.
+        */
+        void CmdUpdateZoomL();
+
+        /**
+        * Dials emergency call.
+        */
+        void CmdDialEmergencyL();
+
+        /**
+        * Goes to Idle.
+        */
+        void CmdGoToIdleL();
+
+        /**
+        * Initialize image sharing.
+        */
+        void CmdInitializeShareImageL( TBool& aNeedRefresh );
+
+        /**
+        * Start sharing image.
+        */
+        void CmdShareImageL();
+
+        /**
+        * Stops sharing image.
+        */
+        void CmdStopShareImageL( TBool& aNeedRefresh );
+
+		/**
+        * Handles change in call waiting state.
+        * @param aIsWaiting The state of call waiting.
+        */
+	    void HandleWaitingStateChange( TBool aIsWaiting );
+
+        // STATE TRANSITIONS
+
+        /**
+        * @see MVtUiActiveExec::ActiveExecExecuteL.
+        */
+        TBool ActiveExecInitExecuteL(
+            const TInt aState,
+            TInt& aNextState,
+            TRequestStatus& aRequest );
+
+        /**
+        * @see MVtUiActiveExec::ActiveExecContinue.
+        */
+        TBool ActiveExecInitContinue(
+            TInt& aState,
+            const TInt aError );
+
+        /**
+        * @see MVtUiActiveExec::ActiveExecCancel.
+        */
+        void ActiveExecInitCancel(
+            const TInt aState );
+
+        /**
+        * @see MVtUiActiveExec::ActiveExecDone.
+        */
+        void ActiveExecInitDone(
+            const TInt aInitialState );
+
+        /**
+        * Executes command taking no parameters.
+        * @param aCommand command to be performed.
+        * @param aRequest request status.
+        */
+        void ActiveExecInitExecuteCommandL(
+            const TVtEngCommandId aCommand,
+            TRequestStatus& aRequest );
+
+        /**
+        * Executes command taking no parameters.
+        * @param aCommand command to be performed.
+        * @param aParam command parameters.
+        * @param aRequest request status.
+        */
+        template < class T >
+        void ActiveExecInitExecuteCommandL(
+            const TVtEngCommandId aCommand,
+            T& aParam,
+            TRequestStatus& aRequest );
+
+        /**
+        * Executes 'prepare camera' command.
+        * @param aSource source to be prepared.
+        * @param aRequest request status.
+        */
+        void ActiveExecInitPrepareCameraL(
+            const MVtEngMedia::TMediaSource aSource,
+            TRequestStatus& aRequest );
+
+        /**
+        * Executes 'set source' command.
+        * @param aSource source to be selected.
+        * @param aRequest request status.
+        */
+        void ActiveExecInitSetSourceL(
+            const MVtEngMedia::TMediaSource aSource,
+            TRequestStatus& aRequest );
+
+        /**
+        * Executes prepare viewfinder command.
+        * @param aRequest request status to be completed when finished.
+        */
+        void ActiveExecInitPrepareViewFinderL(
+            TRequestStatus& aRequest );
+
+        /**
+        * Executes prepare remote render command.
+        * @param aRequest request status to be completed when finished.
+        */
+        void ActiveExecInitPrepareRemoteRenderL(
+            TRequestStatus& aRequest );
+
+
+        /**
+        * Executes command taking no parameters.
+        * @param aCommand command to be performed.
+        * @param aRequest request status.
+        */
+        void ActiveExecCmdExecuteCommandL(
+            const TVtEngCommandId aCommand,
+            TRequestStatus& aRequest );
+
+        /**
+        * Executes 'set source' command.
+        * @param aSource source to be selected.
+        * @param aRequest request status.
+        */
+        void ActiveExecCmdSetSourceL(
+            const MVtEngMedia::TMediaSource aSource,
+            TRequestStatus& aRequest );
+
+        /**
+        * Executes 'prepare camera' command.
+        * @param aSource source to be selected.
+        * @param aRequest request status.
+        */
+        void ActiveExecCmdPrepareCameraL(
+            const MVtEngMedia::TMediaSource aSource,
+            TRequestStatus& aRequest );
+
+
+        /**
+        * Determines main control options.
+        * @param aRemoteVideo for remote video.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptions
+            DetermineMainControlOptions( TBool aRemoteVideo );
+
+        /**
+        * Determines context control options.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptions DetermineContextControlOptions();
+
+        /**
+        * Determines dialer control options.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptions DetermineDialerControlOptions();
+
+        /**
+        * Determines main control DSA options.
+        * @param aRemoteVideo for remote video.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptionsDSA
+            DetermineMainControlOptionsDSA( TBool aRemoteVideo );
+
+        /**
+        * Determines context control DSA options.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptionsDSA DetermineContextControlOptionsDSA();
+
+        /**
+        * Determines dialer control DSA options.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptionsDSA DetermineDialerControlOptionsDSA();
+
+        /**
+        * Determines main control DP options.
+        * @param aRemoteVideo for remote video.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptionsDP
+            DetermineMainControlOptionsDP( TBool aRemoteVideo );
+
+        /**
+        * Determines context control DP options.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptionsDP DetermineContextControlOptionsDP();
+
+        /**
+        * Determines dialer control DP options.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptionsDP DetermineDialerControlOptionsDP();
+
+        /**
+        * Determines remote video  control options.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptionsNGA
+            DetermineRemoteVideoControlOptionsNGA();
+
+        // SYNCHRONOUS / BLOCKING EXECUTION:
+
+        /**
+        * Performs a command without any parameters.
+        * @param aCommand command to be performed.
+        */
+        void ExecuteCmdL( const TVtEngCommandId aCommand );
+
+        /**
+        * Performs a command with a parameter.
+        * @param aCommmand command to be performed.
+        * @param aParam parameter.
+        */
+        template< class T >
+        void ExecuteCmdL(
+            const TVtEngCommandId aCommand,
+            T& aParam );
+
+        // ASYNCHRONOUS EXECUTION:
+
+        /**
+        * Performs a command without any parameters.
+        * @param aDialogPtr pointer to which returned value is stored.
+        * @param aCommand command to be performed.
+        * @param aStatus request status.
+        * @return dialog.
+        */
+        CEikDialog* ExecuteCmdAsyncL(
+            CEikDialog** aDialogPtr,
+            const TVtEngCommandId aCommand,
+            TRequestStatus& aStatus );
+
+        /**
+        * Performs a command with a parameter.
+        * @param aDialogPtr pointer to which returned value is stored.
+        * @param aCommmand command to be performed.
+        * @param aParam parameter.
+        * @param aStatus request status.
+        * @return dialog.
+        */
+        template< class T >
+        CEikDialog* ExecuteCmdAsyncL(
+            CEikDialog** aDialogPtr,
+            const TVtEngCommandId aCommand,
+            T& aParam,
+            TRequestStatus& aStatus );
+
+        /**
+        * Performs a command.
+        * @param aDialogPtr pointer to which returned value is stored.
+        * @param aCommand command.
+        * @param aParams parameter, optional.
+        * @param aStatus request status.
+        * @return dialog.
+        */
+        CEikDialog* DoExecuteCmdAsyncL(
+            CEikDialog** aDialogPtr,
+            const TVtEngCommandId aCommand,
+            TDesC8* aParams,
+            TRequestStatus& aStatus );
+
+        /**
+        * Executes command in TRAP harnness.
+        * @param aCommand command identifier.
+        * @param aParam optional, parameters.
+        * @return error code.
+        */
+        TInt Execute( const TVtEngCommandId aCommand, TDesC8* aParam );
+
+        // EVENT HANDLING
+
+        /**
+        * Handles foreground changed events.
+        * @param aIsForeground ETrue if foreground, EFalse otherwise.
+        */
+        void HandleForegroundChangedL(
+            TBool aIsForeground );
+
+        /**
+        * Handles engine reset.
+        */
+        void HandleEngineResetL();
+
+        /**
+        * Handles successful answer operation.
+        */
+        void HandleAnswerL();
+
+        /**
+        * Stops waiting image text showing.
+        */
+        void StopWaitingImage();
+
+        /**
+         * Stops white balance showing.
+         */
+        void StopWhiteBalanceOrColortone();
+        
+        /**
+        * Handles layout changes basically calling HandleLayoutChangedL
+        * in trap harness.
+        * @return error code.
+        */
+        TInt HandleLayoutChanged();
+
+        /**
+        * Handles layout changes.
+        */
+        void HandleLayoutChangedL();
+
+        /**
+        * Handles video frame.
+        * @param aLocal local frame if ETrue, EFalse if remote.
+        * @param aBitmap frame, ownership not transferred.
+        */
+        void HandleVideoFrameL(
+            const TBool aLocal,
+            CFbsBitmap* aBitmap );
+
+        void SetVideoFrame(
+            const TBool aLocal,
+            CFbsBitmap* aBitmap );
+
+          /**
+        * Handles video call details.
+        * @param aCallID call id.
+        * @param aCallName call name.
+        * @param aIsPeerAddressAvailable is peer address available.
+        */
+        void HandleVideoCallDetailsL(
+            const TInt aCallId,
+            const TDesC& aCallName,
+            const TBool aIsPeerAddressAvailable );
+
+        /**
+        * Checks if it's time to bring this application
+        * to the foreground.
+        */
+        void CheckBringToForeground();
+
+        /**
+        * Checks if it's time to send this application
+        * to the background.
+        */
+        void CheckSendToBackground();
+
+        /**
+        * Handles remote problem.
+        */
+        void HandleVideoFrameRemoteProblemL();
+
+        /**
+        * Handles local problem.
+        */
+        void HandleVideoFrameLocalProblemL();
+
+        /**
+        * Set a new remote video layout.
+        */
+        void ChangeRemoteVideoLayoutL();
+
+        /**
+        * Show image initialization progress dialog.
+        */
+        void ShowImageInitializeProgressL();
+
+        /**
+        * Hide image initialization progress dialog.
+        */
+        void HideImageInitializeProgressL();
+
+        /**
+        * Sets SQCif usage.
+        * @param aUseSQCif SQCif is used.
+        */
+        void RemoteVideoIsSQCif( TBool aUseSQCif );
+
+        /**
+        * Sets SQCif usage to control.
+        * @param aUseSQCif SQCif is used.
+        */
+        void ControlUsesSQCif( TBool aUseSQCif );
+
+        /**
+        * Checks if beating needs to be started.
+        * @param aCallDurationEnabled call duration enabled status.
+        */
+        void CheckBeatL( const TBool aCallDurationEnabled );
+
+        /**
+        * Handles heart beats.
+        */
+        void HandleBeat();
+
+        // UTILITY METHODS
+
+        /**
+        * Informs the user that camera is reserved by another application.
+        */
+        void ShowCameraInUseNoteL() const;
+
+        /**
+        * Informs the user that the selected operation is not allowed.
+        */
+        void ShowNotAllowedNoteL() const;
+
+        /**
+        * Informs the user that it is not allowed to create normal call.
+        */
+        void ShowCallNotAllowedNoteL() const;
+
+        /**
+        * Informs the user that the other camera is not usable.
+        */
+        void ShowOtherCameraNotUsableNoteL() const;
+
+        /**
+        * Informs the user that image loading failed.
+        */
+        void ShowUnableToOpenNoteL() const;
+
+        /**
+        * Informs the user that error happened during image decoding.
+        * Note: Cannot be constant because DoExecuteL() is used for
+        * calling this method.
+        */
+        void ShowImageDecodingErrorNoteL();
+
+        /**
+        * Informs the user that image is DRM protected and cannot be opened.
+        */
+        void ShowDRMNotAllowedNoteL() const;
+
+        /**
+        * Sets softkeys.
+        * @param aSoftkeyResourceId softkey resource id.
+        */
+        void SetSoftkeysL( const TInt aSoftkeyResourceId );
+
+        /**
+        * Sets application hidden from fast swap window.
+        * @param aHidden ETrue if to be hidden, EFalse if visible.
+        */
+        void SetHiddenL( const TBool aHidden );
+
+        /**
+        * Updates title pane to show call index.
+        * @param aCallId call id.
+        */
+        void SetCallIdL( const TInt aCallId );
+
+        /**
+        * Updates title pane to show name.
+        * @param aName name to be displayed in title pane.
+        * @return ETrue if succeeded, EFalse if not enough memory.
+        */
+        TBool SetCallNameL( const TDesC& aName );
+
+        /**
+        * Brings Telephone application to the foreground.
+        */
+        void BringTelephoneToForeground();
+
+        /**
+        * Returns window group identifier of the principal
+        * telephone application.
+        * @return window group id or 0 if failed.
+        */
+        TInt TelephoneApplicationWgId();
+
+        /**
+        * Returns ETrue if number entry should be shown to the user.
+        * This can be called only after ReadTelephonyVariant has
+        * been called.
+        * @return ETrue if number entry should be shown to the user.
+        */
+        inline TBool ShowNumberEntry() const;
+
+        /**
+        * Checks if active idle is enabled.
+        * @return ETrue if active idle is enabled.
+        */
+        TBool IsActiveIdleEnabledL() const;
+
+        /**
+        * Checks engine functionality.
+        */
+        void CheckEngineFunctionality();
+
+        /**
+        * Returns navi pane.
+        * @return navi pane instance. Ownership not transferred.
+        */
+        inline CAknNavigationControlContainer* NaviPaneL();
+
+        /**
+        * Returns title pane.
+        * @return title pane instance. Ownership not transferred.
+        */
+        inline CAknTitlePane* TitlePaneL();
+
+        /**
+        * Pushes item to cleanup stack to update softkeys.
+        */
+        inline void CleanupPushRefreshL();
+
+        /**
+        * Pushes item to cleanup stack to enable blind status setting.
+        */
+        inline void CleanupPushEnableBlindL();
+
+        /**
+        * Callback function to refresh navi pane and softkeys.
+        * @param aAny pointer to an instance of this class.
+        */
+        static void DoRefresh( TAny* aAny );
+
+        /**
+        * Callback function to enable blind status checking.
+        * @param aAny pointer to an instance of this class.
+        */
+        static void DoEnableBlindSetting( TAny* aAny );
+
+        /**
+        * Callback function to disable command activation
+        * state.
+        * @param aAny pointer to an instance of this class.
+        */
+        static void DoDisableCommandActivating( TAny* aAny );
+
+        /**
+        * Decreases command activation ref.count and refreshes
+        * states if count gets zero.
+        */
+        void HandleCommandDeactivationL();
+
+        /**
+        * Callback function to handle exit timeout.
+        * @param aAny pointer to instance of this class.
+        * @return KErrNone always.
+        */
+        static TInt DoHandleExitTimeout( TAny* aAny );
+
+        /**
+        * Callback function to exit.
+        * @param aAny pointer to instance of this class.
+        * @return KErrNone always.
+        */
+        static TInt DoExit( TAny* aAny );
+
+        /**
+        * Checks whether viewfinder is currently in main pane.
+        * @return ETrue if viewfinder is in main pane.
+        */
+        TBool IsViewFinderInMainPane() const;
+
+public:
+        /**
+        * Checks whether viewfinder is currently in context pane.
+        * @return ETrue if viewfinder is in context pane.
+        */
+        TBool IsViewFinderInContextPane() const;
+private:
+        /**
+        * Updates context pane icon
+        */
+        void UpdateContextPaneIconL();
+
+        /**
+        * Enables or disables the incall bubble.
+        */
+        void SetIncallBubbleAllowedInUsualL( TBool aAllowed );
+
+        /**
+        * Shows progress dialog using given resource.
+        */
+        void ShowProgressDialogL( TInt aResourceId,
+            MProgressDialogCallback* aCallback = NULL );
+
+        /**
+        * Hides (completes) progress dialog.
+        */
+        void HideProgressDialogL();
+
+        /**
+        * Static async callback for switching viewfinder to MainPane, also
+        * starts image sharing.
+        */
+        static TInt AsyncViewFinderToMainPaneAndShare( TAny* aPtr );
+
+        /**
+        * Static async callback for starting image share.
+        */
+        static TInt AsyncShare( TAny* aPtr );
+
+        /**
+        * Static async callback for showing error note and resharing image.
+        */
+        static TInt AsyncShowErrorAndRestartShare( TAny* aPtr );
+
+        /**
+        * Static async callback for handling layout change.
+        */
+        static TInt DelayedHandleLayoutChanged( TAny* aPtr );
+
+        /**
+        * Gets current camera orientations for primary and secondary camera.
+        */
+        void GetCameraOrientations();
+
+        /**
+        * Sets initial camera orientation.
+        */
+        void SetInitialCameraOrientationL();
+
+        /**
+        * Sets current camera orientation.
+        */
+        void SetCameraOrientationL();
+
+        /**
+        * Updates engine states.
+        */
+        void RefreshStatesL();
+
+        /**
+        * Starts video preference feature specified by command id.
+        */
+        void CmdAdjustVideoL( TInt aCommand );
+
+        /**
+        * AppUi has been initialized and its current state is EVtUiAppUiAnswered.
+        * Do any other needed initilization here e.g. start features.
+        */
+        void AppUiInitDoneDoPostInitL();
+
+        /*
+        *  This function decides how the wsevent should be handled
+        * if zoom mode is on.
+        * @param  aEvent window server event.
+        * @return ETrue if caller function should return, EFalse otherwise.
+        */
+        TBool ProcessWsEventIfZoomModeIsActiveL( const TWsEvent& aEvent );
+
+        /*
+        *  This function hides the brightness, contrast, volume slider if their mode is on.
+        */
+        void StopSliders();
+        
+        /*
+        * This function can get the focus window group id
+        */
+        TInt GetFocusWindowGroupId();
+
+        /**
+        * Does pre handling to key events, especially for Zoom in and Zoom out
+        * HW keys.
+        * @param aEvent event.
+        */
+        TBool PreHandleKeyEventL( const TWsEvent& aEvent );
+
+        /**
+        * Calls SimulateKeyEventL() for stored zoom key event.
+        */
+        void SimulateStoredKeyEventL( const TEventCode aEventCode );
+
+        /**
+        * Stores zoom key event. If there is different zoom key event
+        * already stored, keyup event is sent for that event before
+        * new event is stored.
+        */
+        void StoreKeyEventL( const TKeyEvent& aKeyEvent );
+
+        /**
+        * Callback function that calls TryToStartTb function
+        */
+        static TInt DoTryToStartTbL( TAny* aAny );
+
+        /*
+        * Tries to start toolbar. Toolbar is started if
+        * option menus is not visible.
+        */
+        void TryToStartTbL();
+        
+        /*
+        * Retries to start toolbar. Toolbar is started if
+        * option menus is not visible.
+        */
+        void RetryToStartTbL();
+
+        /*
+        * Update video prefrence
+        */
+        void UpdateVBSettingL();
+
+
+        /**
+        * Sets current rendering mode (i.e. default or dialer)
+        */
+        void SetRenderingModeL( const TRenderingMode aMode,
+            MVtUiVideoWindow* aDownlink );
+
+        /**
+        * Updates rendering parameters.
+        */
+        void UpdateRenderingParametersL();
+
+        /*
+        * Media state has been changed
+        */
+        void MediaStateChangedL();
+
+        /*
+        * Updates volume slider
+        */
+        void RefreshVolumeL();
+
+        /*
+        * Adjusts volume up or down one step.
+        */
+        void AdjustVolumeL( TRemConCoreApiOperationId aOperationId );
+
+    private:
+
+        // Pointer to stored downlink window.
+        MVtUiVideoWindow* iStoredDownlinkWindow;
+
+        // Current rendering mode
+        TRenderingMode iRenderingMode;
+
+        // Command framework instance
+        CVtUiCommandManager* iCommandManager;
+
+        // Inner class.
+        class CInstance;
+
+        // Model instance. Exists only while there is a video call.
+        CInstance* iInstance;
+
+        // Inner class to observe all events.
+        class CEventObserver;
+
+        // Inner class for verifying media gallery objects
+        class CVtUiAppUiMGVerifier;
+
+        // Owned event observer.
+        CEventObserver* iEventObserver;
+
+        // Owned blank control for reset & shutdown.
+        CVtUiBlankControl* iBlankControl;
+
+        /**
+        * Enumerates disabled flags:
+        * EDisabledVideo - video disabled,
+        * EDisabledAudio - audio disabled,
+        * EVideoOptionsDisabled - video options disabled.
+        */
+        enum TDisabledFlags
+            {
+            EDisabledVideo = 1,
+            EDisabledAudio = 2,
+            EVideoOptionsDisabled = 4
+            };
+
+		// The Ihf Note id.
+		TInt iIhfNoteId;
+
+        // Flags for disabled. Sum of subset of TDisabledFlags.
+        TInt iDisabledFlags;
+
+        // Current softkey resource id.
+        TInt iCurrentSoftkeys;
+
+        // Telephony variant.
+        TVtUiVideoTelephonyVariation iVTVariation;
+
+        // Window group id of this application.
+        TInt iThisApplicationWgId;
+
+        // Window group id of eikon server.
+        TInt iEikonServerWgId;
+
+        // Window group id for AknCapServer
+        TInt iAknCapServerWgId;
+
+        // Window group id for Akn Notifier Server
+        TInt iAknNfyServerWgId;
+
+        // Owned active executor for initialisation / uninitialisation.
+        CVtUiActiveExec* iActiveExec;
+
+        // Owned current dialog on execution.
+        CEikDialog* iExecDialog;
+
+        // Owned blank dialog.
+        CEikDialog* iExecBlankDialog;
+
+        // Reference to request status.
+        TRequestStatus* iShutdownRequest;
+
+        // Owned active executor for command execution.
+        CVtUiActiveExec* iCmdActiveExec;
+
+        // Owned current dialog on command execution.
+        CEikDialog* iCmdExecDialog;
+
+        // Owned blank dialog on command execution.
+        CEikDialog* iCmdExecBlankDialog;
+
+
+        // Owned timer for making sure that
+        // the application is terminated in time.
+        CPeriodic* iExitTimer;
+
+        // DTMF tone, used as parameter to KVtEngStartDtmfTone.
+        TPckgBuf< TChar > iDtmfTone;
+
+        // Pointer to uplink window.
+        MVtUiVideoWindow* iUplinkWindow;
+
+        // Pointer to downlink window.
+        MVtUiVideoWindow* iDownlinkWindow;
+
+        // Query dialog for switching to voice call
+        CAknQueryDialog* iCreateVoiceCallDlg;
+
+        // Progress dialog shown when initializing
+        CAknProgressDialog* iProgressDlg;
+
+        // ASync callback.
+        CAsyncCallBack* iAsyncCallback;
+
+        // Async callback for layout change
+        CAsyncCallBack* iLayoutChangeCallback;
+
+        // Camera orientation for primary camera
+        MVtEngMedia::TCameraOrientation iPrimaryCameraOrientation;
+
+        // Camera orientation for secondary camera
+        MVtEngMedia::TCameraOrientation iSecondaryCameraOrientation;
+
+        // Currently used camera orientation
+        MVtEngMedia::TCameraOrientation iCurrentCameraOrientation;
+
+        // Current loudspeaker volume
+        TInt iLoudspeakerVolume;
+
+        // Current handset volume
+        TInt iHandsetVolume;
+
+        // Ui states (media, audio, boolean variables)
+        TVtUiStates* iUiStates;
+
+        // Component manager instance
+        CVtUiComponentManager* iComponentManager;
+
+        // Feature manager instance
+        CVtUiFeatureManager* iFeatureManager;
+
+        // Pointer to cba
+        CEikButtonGroupContainer* iCba;
+
+        // Active number source
+        MVtUiNumberSource* iNumberSource;
+
+        TVtUiAppStateBase*  iState;
+
+        // Stored zoom key event
+        TKeyEvent iStoredKeyEvent;
+
+        // ETrue if incoming call is waiting call
+        TBool iIsWaitingCallState;
+
+        // ETrue if key event has been stored
+        TBool iIsStoredKeyEvent;
+
+        // Timer for starting the toolbar
+        CPeriodic* iTbPeriodic;
+
+        // Owned volume control class for adjusting
+        // engine side volume
+        CVtUiVolumeControl* iVolCtrl;
+
+        // Pending command for delayed layout change
+        TVtEngCommandId iPendingCmd;
+
+    private: // Friend classes
+
+        // Inner class.
+        friend class CInstance;
+
+        // Inner class.
+        friend class CEventObserver;
+
+    private:
+
+        // Class for active command handling
+        class TActiveCommand
+            {
+
+        public:
+
+            /**
+            * Constructor.
+            * @param aActiveCommands array of command ids.
+            * @param aCommand command id.
+            */
+            TActiveCommand( RArray< TInt >& aActiveCommands, TInt aCommandId );
+
+            /**
+            * Destructor
+            */
+            ~TActiveCommand();
+
+            /**
+            * Adds command to active commands
+            */
+            void OpenL();
+
+        private:
+
+            /**
+            * Removes command from active commands
+            */
+            void Close();
+
+        private:
+
+            // Reference to array of active command ids.
+            RArray< TInt >& iActiveCommands;
+
+            // Command id.
+            const TInt iCommandId;
+
+            };
+
+
+    private:
+        // Active command ids.
+        RArray< TInt > iActiveCommands;
+        // The last time swap image operation occured.
+        TTime iLastSwapTime;
+        // Incall bubble.
+        CAknIncallBubble* iIncallBubble;
+        //This flag is used to check if orientation changed before some action
+        //Currently is only used for prepare remote render and start remote render
+        TBool iIsLandScapeOrientation;
+        //flag indicates layoutchang session
+        TBool iLayoutChg;
+        //save cmd for later use 
+        TInt iDelayedCmd;
+        //disable video process
+        TBool iDisableVideoOngoing;
+        //disable video process
+        TBool iShareImageOngoing;
+    };
+
+#endif      // CVTUIAPPUI_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiBitmapManager.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,188 @@
+/*
+* Copyright (c) 2004, 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:  Bitmap manager for Video Telephone application.
+*
+*/
+
+
+
+#ifndef CVTUIBITMAPMANAGER_H
+#define CVTUIBITMAPMANAGER_H
+
+//  INCLUDES
+#include    <e32base.h>
+#include    <gdi.h>
+#include    "videotelui.hrh"
+
+// DATA TYPES
+
+/**
+* Type definition for bitmap pool identifier.
+* Zero is reserved as invalid identifier.
+*/
+typedef TInt TVtUiBitmapPoolId;
+
+// FORWARD DECLARATION
+class CFbsBitmap;
+
+// CLASS DECLARATION
+
+/**
+*  Bitmap manager for Video Telephone application.
+*  @since Series 60 2.8
+*/
+class CVtUiBitmapManager
+    : public CBase
+    {
+    public: // Constructors and destructor
+        
+        /**
+        * Constructor.
+        */
+        CVtUiBitmapManager();
+
+        /**
+        * Destructor.
+        */
+        ~CVtUiBitmapManager();
+
+    public: // New functions
+
+        /**
+        * Adds bitmaps to the pool.
+        * @param aBitmapId bitmap identifier.
+        * @param aBitmapMaskId bitmap mask identifier, 
+        *        KErrNotFound if no mask.
+        * @param aExpectDefaultColor ETrue if default color is to be expected.
+        * @return bitmap pool identifier.
+        */
+        TVtUiBitmapPoolId AddBitmapsL(
+            TVtUiBitmapId aBitmapId, 
+            TVtUiBitmapId aBitmapMaskId,
+            TBool aExpectDefaultColor );
+
+        /**
+        * Adds bitmap to the pool.Note that this bitmap does not have mask.
+        * @param aBitmapId bitmap identifier.
+        * @param aExpectDefaultColor ETrue if default color is to be expected.
+        * @return bitmap pool identifier.
+        */
+        TVtUiBitmapPoolId AddBitmapL(
+            TVtUiBitmapId aBitmapId,
+            TBool aExpectDefaultColor );
+        
+        /**
+        * Removes bitmap from the pool.
+        * @param aId bitmap pool identifier.
+        */
+        void RemoveBitmap( TVtUiBitmapPoolId aId );
+
+        /**
+        * Sets size of the specified bitmap. This method must be 
+        * called before bitmap is used.
+        *
+        * @param aId bitmap pool identifier.
+        * @param aSize size of the bitmap.
+        */
+        void SetSize( 
+            TVtUiBitmapPoolId aId, 
+            const TSize& aSize );
+
+        /**
+        * Sets size and default color of the specified bitmap. 
+        * This method must be called before bitmap is used.
+        *
+        * @param aId bitmap pool identifier.
+        * @param aSize size of the bitmap.
+        * @param aDefaultColor default color of the bitmap.
+        */
+        void SetSizeAndColor( 
+            TVtUiBitmapPoolId aId,
+            const TSize& aSize, 
+            const TRgb& aDefaultColor );
+
+        /**
+        * Sets aspect ratio preservation status.
+        * @param aId bitmap pool identifier.
+        * @param aPreserve ETrue if aspect ration is to be preserved.
+        */
+        void SetAspectRatio( 
+            TVtUiBitmapPoolId aId,
+            TBool aPreserve );
+
+        /**
+        * This method is called to inform that bitmap is required.
+        * @param aId bitmap pool identifier.
+        */
+        void RequireBitmap( TVtUiBitmapPoolId aId );
+
+        /**
+        * Gets bitmap & its mask.
+        * @param aId bitmap pool identifier.
+        * @param aBitmap it will be updated to hold bitmap pointer, 
+        *        or NULL if bitmap is not available. This pointer
+        *        must not be kept any longer than absolutely required.
+        * @param aBitmapMask it will be updated to hold bitmap mask pointer, 
+        *        or NULL if bitmap mask is not available. This pointer
+        *        must not be kept any longer than absolutely required.
+        */
+        void GetBitmaps(
+            TVtUiBitmapPoolId aId,
+            CFbsBitmap*& aBitmap,
+            CFbsBitmap*& aBitmapMask );
+
+        /**
+        * Gets bitmap & its mask.
+        * @param aId bitmap pool identifier.
+        * @param aBitmap it will be updated to hold bitmap pointer, 
+        *        or NULL if bitmap is not available. This pointer
+        *        must not be kept any longer than absolutely required.
+        */
+        void GetBitmap(
+            TVtUiBitmapPoolId aId,
+            CFbsBitmap*& aBitmap );
+
+        /**
+        * Invalidates bitmaps. This is called on theme / layout change.
+        */
+        void InvalidateBitmaps();
+
+    private:
+
+        // Inner class.
+        class CBitmapInfo;
+
+        /**
+        * Finds bitmap based on pool identifier.
+        * @param aId bitmap pool identifier.
+        * @return KErrNotFound if not found, or index to array.
+        */ 
+        TInt Find( TVtUiBitmapPoolId aId ) const;
+
+    private:
+
+        // Owned array of bitmap information instances.
+        RPointerArray< CBitmapInfo > iBitmapArray;
+
+        // Bitmap pool identifier used to generate bitmaps.
+        TVtUiBitmapPoolId iBitmapId;
+
+        // Temporary instance for getting bitmap file name.
+        TFileName iTmpFileName;
+
+    };
+
+#endif      // CVTUIBITMAPMANAGER_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiBlankControl.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,98 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Blank control for Video Telephone application.
+*
+*/
+
+
+
+#ifndef CVTUIBLANKCONTROL_H
+#define CVTUIBLANKCONTROL_H
+
+//  INCLUDES
+#include    <coecntrl.h>
+
+// CLASS DECLARATION
+
+/**
+*  Blank control for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class CVtUiBlankControl
+    : public CCoeControl
+    {
+    public: // Constructors and destructor
+        
+        /**
+        * C++ constructor.
+        */
+        CVtUiBlankControl();
+
+        /**
+        * Symbian constructor.
+        * @param aRect control rectangle.
+        */
+        void ConstructL( const TRect& aRect );
+
+        /**
+        * C++ destructor.
+        */
+        ~CVtUiBlankControl();
+
+    public: // New functions
+
+        /**
+        * Sets blanker active / inactive.
+        * @param aStatus ETrue if to be activated.
+        */
+        void SetActive( TBool aStatus );
+
+    protected: // Functions from base classes
+
+        /**
+        * From CCoeControl, handles key events.
+        * @param aKeyEvent key event.
+        * @param aType type of event.
+        */
+        virtual TKeyResponse OfferKeyEventL(
+            const TKeyEvent& aKeyEvent,
+            TEventCode aType );
+
+        /**
+        * From CCoeControl, draws the control.
+        * @param aRect area to be drawn.
+        */
+        virtual void Draw( const TRect& aRect ) const;
+
+        /**
+        * From CCoeControl, handles size changes.
+        */
+        virtual void SizeChanged();
+
+        /**
+        * From CCoeControl, handles position changes.
+        */
+        virtual void PositionChanged();
+
+    private: 
+
+        // ETrue if blanker is active.
+        TBool iBlankerActive;
+
+    };
+
+#endif      // CVTUIBLANKCONTROL_H
+            
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiBlankDialog.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,110 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Blank dialog for Video Telephone application.
+*
+*/
+
+
+
+#ifndef CVTUIBLANKDIALOG_H
+#define CVTUIBLANKDIALOG_H
+
+//  INCLUDES
+#include    <eikdialg.h>
+
+// CLASS DECLARATION
+
+/**
+*  Blank dialog for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class CVtUiBlankDialog
+    : public CEikDialog
+    {
+    public: // Constructors and destructor
+        
+        /**
+        * Constructor.
+        *
+        * @param aSelfPtr optional pointer to itself.
+        */
+        CVtUiBlankDialog( CEikDialog** aSelfPtr );
+
+        /**
+        * Destructor. If a pointer was passed in constructor, 
+        * it will be cleared here.
+        */
+        ~CVtUiBlankDialog();
+
+    public: // New functions
+
+        /**
+        * Executes blank dialog, no wait flag set.
+        */
+        void ExecuteDialogNoWaitLD();
+
+        /**
+        * Executes blank dialog.
+        * @param aRequest request status, optional.
+        */
+        void ExecuteDialogLD( 
+            TRequestStatus* aRequest );
+
+    protected: // New functions
+
+        /**
+        * Completes dialog with error.
+        * Note: this method will delete the dialog.
+        * @param aError error code.
+        */
+        void Complete( const TInt aError );
+
+    protected: // Functions from base classes
+
+        /**
+        * @see CEikDialog::PreLayoutDynInitL.
+        */
+        void PreLayoutDynInitL();
+        
+        /**
+        * @see CEikDialog::PostLayoutDynInitL.
+        */
+        void PostLayoutDynInitL();
+
+        /**
+        * @see CEikDialog::OkToExitL.
+        */
+        TBool OkToExitL( TInt aButtonId );
+
+        /**
+        * @see CEikDialog::Draw.
+        */
+        void Draw( const TRect& aRect ) const;
+
+    private:
+
+        // Pointer to itself.
+        CEikDialog** iSelfPtr;
+
+        // Error code.
+        TInt* iError;
+
+        // Request status.
+        TRequestStatus* iRequest;
+    };
+
+#endif      // CVTUIBLANKDIALOG_H
+            
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiContextControl.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,167 @@
+/*
+* Copyright (c) 2004, 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:  Context pane control for Video Telephone application.
+*
+*/
+
+
+
+#ifndef CVTUICONTEXTCONTROL_H
+#define CVTUICONTEXTCONTROL_H
+
+//  INCLUDES
+#include    <AknWsEventObserver.h>
+#include    "cvtuivideocontrolbase.h"
+
+// FORWARDS
+class CVtUiAppUi;
+class TVtUiStates;
+
+/**
+*  Context pane control for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class CVtUiContextControl : public CVtUiVideoControlBase,
+    public MAknWsEventObserver
+    {
+
+    public: // Constructors and destructor
+
+        /**
+        * C++ constructor.
+        * @param aBitmapManager bitmap manager.
+        * @param aLargeViewfinder ETrue if large viewfinder wanted.
+        * @param aAppUi application UI.
+        * @param aUiStates UI states.
+        */
+        static CVtUiContextControl* NewL(
+            CVtUiBitmapManager& aBitmapManager,
+            CVtUiAppUi& aAppUi,
+            TVtUiStates& aUiStates );
+
+        /**
+        * C++ destructor.
+        */
+        ~CVtUiContextControl();
+
+        /**
+        * LayoutRemoteVideo
+        */
+       void LayoutRemoteVideo();
+       
+    public: // from CCoeControl
+
+        /**
+        * @see CCoeControl::HandlePointerEventL
+        */
+        void HandlePointerEventL( const TPointerEvent& aPointerEvent );
+
+    private: // from CVtUiVideoControlBase
+
+        /**
+        * @see CVtUiVideoControlBase::HandleSizeChanged
+        */
+        void HandleSizeChanged();
+
+        /**
+        * @see CVtUiVideoControlBase::DrawColoredBackground
+        */
+        void DrawColoredBackground( CWindowGc& aGc ) const;
+
+        /**
+        * @see CVtUiVideoControlBase::StreamBlitPosition
+        */
+        TPoint StreamBlitPosition() const;
+
+        /**
+        * @see CVtUiVideoControlBase::StreamBlitPosition
+        */
+        TRect StreamClippingRect() const;
+
+        /**
+        * @see CVtUiVideoControlBase::BlindImage
+        */
+        CFbsBitmap* BlindImage() const;
+
+        /**
+        * @see CVtUiVideoControlBase::BlindMask
+        */
+        CFbsBitmap* BlindMask() const;
+
+        /**
+        * @see CVtUiVideoControlBase::BlindBlitPosition
+        */
+        TPoint BlindBlitPosition() const;
+
+    public: // from MAknWsEventObserver
+
+        /**
+        * @see MAknWsEventObserver::HandleWsEventL
+        */
+        void HandleWsEventL( const TWsEvent& aEvent,
+            CCoeControl* aDestination );
+
+    private:
+
+        /**
+        * C++ constructor.
+        */
+        CVtUiContextControl(
+            CVtUiBitmapManager& aBitmapManager,
+            CVtUiAppUi& aAppUi,
+            TVtUiStates& aUiStates );
+
+        /**
+        * Symbian constructor.
+        */
+        void ConstructL();
+
+    private:
+
+        // Background icon identifier.
+        TVtUiBitmapPoolId iBackgroundId;
+
+        // Blind icon identifier.
+        TVtUiBitmapPoolId iBlindId;
+
+        // Blind icon mask identifier.
+        TVtUiBitmapPoolId iBlindMaskId;
+
+        // Reference to application UI.
+        CVtUiAppUi& iAppUi;
+
+        // Reference to UI states.
+        TVtUiStates& iUiStates;
+
+        // Background bitmap layout.
+        TAknLayoutRect iBackGround;
+
+        // Blind icon rect
+        TRect iBlindRect;
+
+        // Stream rect
+        TRect iStreamRect;
+
+        // ETrue if it is ok to swap images on button up
+        TBool iOkToSwapOnButtonUp;
+
+        // ETrue if the pointer down inside of context control window
+        TBool iPointerButton1DownInside;
+
+    };
+
+#endif      // CVTUICONTEXTCONTROL_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiDoc.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Document class for Video Telephone application.
+*
+*/
+
+
+
+#ifndef CVTUIDOC_H
+#define CVTUIDOC_H
+
+//  INCLUDES
+#include    <AknDoc.h>
+
+// CLASS DECLARATION
+
+/**
+*  Document class for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class CVtUiDoc
+    : public CAknDocument
+    {
+    public: // Constructors and destructor
+        
+        /**
+        * C++ constructor.
+        * @param aApp application instance.
+        */
+        CVtUiDoc( CEikApplication& aApp );
+
+    public: // Functions from base classes
+
+        /**
+        * From CAknDocument, creates application UI instance.
+        * @return application UI instance.
+        */
+        virtual CEikAppUi* CreateAppUiL();
+
+        /**
+        * From CAknDocument, updates task name.
+        * @param aWgName window group name instance.
+        */
+        virtual void UpdateTaskNameL( CApaWindowGroupName* aWgName );
+
+    };
+
+#endif      // CVTUIDOC_H   
+            
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiEndCallButton.h	Wed Sep 01 12:29:12 2010 +0100
@@ -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:  End call button definition.
+*
+*/
+
+#ifndef C_VTUIENDCALLBUTTON_H
+#define C_VTUIENDCALLBUTTON_H
+
+// INCLUDES
+#include    <aknbutton.h>
+#include    "videotelui.hrh"
+
+// CLASS DECLARATION
+
+/**
+ *  CCVtUiEndCallButton
+ * 
+ */
+class CVtUiEndCallButton : public CAknButton
+    {
+public:
+    // Constructors and destructor
+
+    /**
+    * Static construction method.
+    * @return Pointer to newly created instance of CVtUiEndCallButton.
+    */
+    static CVtUiEndCallButton* NewL();
+    
+    /**
+    * C++ destructor.
+    */
+    ~CVtUiEndCallButton();
+
+    /**
+     * Constructs controls from a resource file.
+     *
+     * @param aReader The resource reader, with which to access the 
+     *      control's resource values.
+     */
+    void ConstructFromResourceL( const TInt aResourceId );
+    
+    /**
+    * The layout of text and the rectangle of icon setting method.
+    * @param aLayoutText The text layout.
+    * @param aIconRect The rectangle of icon to be set.
+    */
+    void SetLayout( const TAknLayoutText aLayoutText,
+                    const TRect aIconRect);
+    
+protected: 
+    //from base class CCoeControl
+    /**
+     * From CCoeControl. 
+     * Draws the control. Called by window server.
+    */
+    void Draw(const TRect& aRect) const;
+    
+    /**
+     * Handles a change to the control's resources.
+     *
+     * @param aType is a message UID value.
+     */
+    void HandleResourceChange( TInt aType );
+    
+private:
+    
+    /**
+     * C++ constructor for the end call button.
+     */
+    CVtUiEndCallButton();
+    
+    /**
+     * Symbian 2nd phase constructor.
+     */
+    void ConstructL();
+    
+    /**
+     * Gets the correct text color.
+     * 
+     * @param aPenColor the RGB colour value
+     */
+    void GetTextColors( TRgb& aPenColor ) const;
+    
+    /**
+     * Loads icons from the resource
+     */
+    void LoadButtonIcon( TVtUiBitmapId aIconId, TVtUiBitmapId aMaskId );
+    
+    /**
+     * Draw text and icon according to the layout.
+     * 
+     * @param aGc the window graphics context
+     */ 
+    void LayoutIconAndText( CWindowGc& aGc ) const;
+    
+private:
+    
+    /**
+     * Layout text
+     */
+    TAknLayoutText iLayoutText;
+    
+    /**
+     * Rectangle of the icon of the button.
+     */
+    TRect iIconRect;
+    };
+
+#endif // C_VTUIENDCALLBUTTON_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiEndCallButtonPane.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,133 @@
+/*
+* 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:  End call button pane definition.
+*
+*/
+
+
+#ifndef C_VTUIENDCALLBUTTONPANE_H
+#define C_VTUIENDCALLBUTTONPANE_H
+
+// INCLUDES
+
+// CLASS DECLARATION
+class CVtUiEndCallButton;
+
+/**
+ *  CCVtUiEndCallButtonPane 
+ */
+class CVtUiEndCallButtonPane : public CCoeControl,
+                               public MCoeControlObserver
+    {
+    public: // Constructors and destructor
+        
+        /**
+         * Static construction method.
+         * @param aRect The intialized rectangle of container window 
+         * @return Pointer to newly created instance of CVtUiEndCallButtonPane.
+         */
+        static CVtUiEndCallButtonPane* NewL( const TRect& aRect );
+    
+        /**
+        * C++ destructor.
+        */
+        ~CVtUiEndCallButtonPane();
+  
+    public: //from base class CCoeControl
+    
+        /**
+         * From CCoeControl. 
+         * Gets the number of controls contained in a compound control.
+         * @return The number of controls in the container
+         */
+        TInt CountComponentControls() const;
+    
+        /**
+         * From CCoeControl. 
+         * Gets an indexed component of a compound control.
+         */
+        CCoeControl* ComponentControl( TInt aIndex ) const;
+    
+        /**
+         * From CCoeControl. 
+         * Draws the control.
+         */
+        void Draw(const TRect& aRect) const;
+    
+        /**
+         * From CCoeControl. 
+         * Responds to changes to the size and position of the 
+         * contents of this control.
+         */
+        void SizeChanged();
+    
+        /**
+         * From CCoeControl. 
+         * Retrieves an object of the same type as that encapsulated in aId.
+         */
+        TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
+        
+    public: //From MCoeControlObserver
+    
+        /**
+         * Handles an event from an observed control.
+         */
+        void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType );
+        
+    public:
+        
+        /**
+         * Set end call button enabled or not.
+         */
+        void SetEnabled( TBool aEnabled );
+    
+    private:
+    
+        /**
+         * C++ constructor for the end call button container.
+         */
+        CVtUiEndCallButtonPane();
+    
+        /**
+         * Symbian 2nd phase constructor.
+         * 
+         * @param aRect The intialized rectangle of container window
+         */
+        void ConstructL( const TRect& aRect );
+    
+    private: // New functions
+        /**
+         * Creating button from resource.
+         */
+        void CreateButtonUsingResourceL();
+    
+        /**
+         * Getting the button layout data for the text and icon.
+         */
+        void GetButtonLayoutData();
+
+    private:
+    
+        /**
+         * Owned: End button
+         */
+        CVtUiEndCallButton* iEndButton;
+        
+        /**
+         * Owned: background context.
+         */ 
+        CAknsBasicBackgroundControlContext* iBgContext;
+    };
+
+#endif // C_VTUIENDCALLBUTTONCONTAINER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiExecuteCmdDialog.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,126 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Dialog for command execution for Video Telephone application.
+*
+*/
+
+
+
+#ifndef CVTUIEXECUTECMDDIALOG_H
+#define CVTUIEXECUTECMDDIALOG_H
+
+//  INCLUDES
+#include    "CVtUiBlankDialog.h"
+#include    <mvtengcommandobserver.h>
+
+// FORWARD DECLARATIONS
+class MVtEngCommandHandler;
+class MVtUiEngineCommandManager;
+
+// CLASS DECLARATION
+
+/**
+*  Dialog for command execution for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class CVtUiExecuteCmdDialog
+    : public CVtUiBlankDialog,
+      private MVtEngCommandObserver
+    {
+    public: // Constructors and destructor
+
+        /**
+        * Constructor.
+        *
+        * @param aSelfPtr optional pointer to itself.
+        * @param aCommandHandler command handler.
+        * @param aCommandManager command manager.
+        */
+        CVtUiExecuteCmdDialog(
+            CEikDialog** aSelfPtr,
+            MVtEngCommandHandler& aCommandHandler,
+            MVtUiEngineCommandManager& aCommandManager );
+
+        /**
+        * Destructor.
+        */
+        ~CVtUiExecuteCmdDialog();
+
+    public: // New functions
+
+        /**
+        * Executes command dialog.
+        * @param aCommandId command identifier.
+        * @param aParams parameters.
+        * @param aRequest request status, optional.
+        */
+        void ExecuteCmdLD(
+            const TVtEngCommandId aCommandId,
+            TDesC8* aParams,
+            TRequestStatus* aRequest );
+
+    protected: // Functions from base classes
+
+        /**
+        * @see CVtUiBlankDialog::PostLayoutDynInitL.
+        */
+        void PostLayoutDynInitL();
+
+    private:
+
+        /**
+        * @see MVtEngCommandObserver::HandleVTCommandPerformedL.
+        */
+        virtual void HandleVTCommandPerformedL(
+            TVtEngCommandId aCommand,
+            const TInt aError );
+
+        /**
+        * Handles execution failure.
+        * @param aResult error code.
+        */
+        void HandleExecuteFailed( TInt aResult );
+
+    private:
+
+        // Inner class.
+        class CActiveCmd;
+
+        // Friend.
+        friend class CActiveCmd;
+
+        // Ref to command handler.
+        MVtEngCommandHandler& iCommandHandler;
+
+        // Ref to command manager.
+        MVtUiEngineCommandManager& iCommandManager;
+
+        // Command to be executed.
+        TVtEngCommandId iCommand;
+
+        // Owned parameters.
+        HBufC8* iCommandParams;
+
+        // ETrue if command has been completed.
+        TBool iCommandCompleted;
+
+        // Owned active object to perform the command.
+        CActiveCmd* iActiveCmd;
+
+    };
+
+#endif      // CVTUIEXECUTECMDDIALOG_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiMainControl.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,175 @@
+/*
+* Copyright (c) 2004, 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:  Main pane control for Video Telephone application.
+*
+*/
+
+
+
+#ifndef CVTUIMAINCONTROL_H
+#define CVTUIMAINCONTROL_H
+
+//  INCLUDES
+#include    "cvtuivideocontrolbase.h"
+
+// CLASS DECLARATION
+class CVtUiAppUi;
+class TVtUiStates;
+class TAknTextLineLayout;
+
+/**
+*  Main pane control for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class CVtUiMainControl : public CVtUiVideoControlBase
+    {
+
+    public: // Constructors and destructor
+
+        /**
+        * Constructor.
+        * @param aBitmapManager bitmap manager.
+        * @param aUiStates Ui states class.
+        */
+        static CVtUiMainControl* NewL( CVtUiBitmapManager& aBitmapManager,
+                CVtUiAppUi& aAppUi,
+                TVtUiStates& aUiStates );
+
+        /**
+        * C++ destructor.
+        */
+        ~CVtUiMainControl();
+
+    public: // New functions.
+
+        /**
+        * Sets SQCif mode on/off.
+        * @param aIsSupported whether on/off
+        */
+        void SupportSQCif( TBool aIsSupported );
+
+         /**
+         * LayoutRemoteVideo
+         */
+        void LayoutRemoteVideo();
+
+        /**
+        * Get main control pointer event flag
+        * @return pointer event is from main control
+        */
+        TBool IsMainControlPointerEvent();
+
+    public: // from CCoeControl
+
+        /**
+        * @see CCoeControl::HandlePointerEventL
+        */
+        void HandlePointerEventL( const TPointerEvent& aPointerEvent );
+
+    private: // from CVtUiVideoControlBase
+
+        /**
+        * @see CVtUiContextControl::HandleSizeChanged
+        */
+        void HandleSizeChanged();
+
+        /**
+        * @see CVtUiContextControl::DrawWaitingText
+        */
+        TBool DrawWaitingText( CWindowGc& aGc ) const;
+
+        /**
+        * @see CVtUiContextControl::StreamBlitPosition
+        */
+        TPoint StreamBlitPosition() const;
+
+        /**
+        * @see CVtUiContextControl::StreamClippingRect
+        */
+        TRect StreamClippingRect() const;
+
+        /**
+        * @see CVtUiContextControl::BlindImage
+        */
+        CFbsBitmap* BlindImage() const;
+
+        /**
+        * @see CVtUiContextControl::BlindMask
+        */
+        CFbsBitmap* BlindMask() const;
+
+        /**
+        * @see CVtUiContextControl::BlindBlitPosition
+        */
+        TPoint BlindBlitPosition() const;
+
+        /**
+        * @see CVtUiContextControl::WaitingTextLayout
+        */
+        TAknTextLineLayout WaitingTextLayout( TInt aLine );
+
+    private:
+
+        /**
+        * Private constructor.
+        */
+        CVtUiMainControl( CVtUiBitmapManager& aBitmapManager,
+                CVtUiAppUi& aAppUi,
+                TVtUiStates& aUiStates );
+
+        /**
+        * C++ constructor.
+        * @param aBitmapManager bitmap manager.
+        */
+        CVtUiMainControl();
+
+        /**
+        * Symbian constructor.
+        */
+        void ConstructL();
+
+    private:
+
+        // Background layout.
+        TAknLayoutRect iBackgroundLayout;
+
+        // Blind icon identifier.
+        TVtUiBitmapPoolId iBlindId;
+
+        // Blind icon mask identifier.
+        TVtUiBitmapPoolId iBlindMaskId;
+
+        // Blind icon layout.
+        TAknLayoutRect iBlindLayout;
+
+        // Stream layout.
+        TAknLayoutRect iStreamLayoutRect;
+
+        // ETrue if sqcif is used in remote video.
+        TBool iSQCifRemote;
+
+        // Reference to application UI.
+        CVtUiAppUi& iAppUi;
+
+        // reference to uistates
+        TVtUiStates& iUiStates;
+
+        // Main control pointer event flag
+        TBool iMCPointerEvent;
+    };
+
+#endif      // CVTUIMAINCONTROL_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiMutedControl.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,104 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Navi pane control for Video Telephone application.
+*
+*/
+
+
+
+#ifndef CVTUIMUTEDCONTROL_H
+#define CVTUIMUTEDCONTROL_H
+
+//  INCLUDES
+#include    <coecntrl.h>
+#include    <AknUtils.h>
+
+// CLASS DECLARATION
+
+/**
+*  Navi pane control for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class CVtUiMutedControl
+    : public CCoeControl
+    {
+    public: // Constructors and destructor
+        
+        /**
+        * C++ constructor.
+        */
+        CVtUiMutedControl();
+
+        /**
+        * Symbian constructor.
+        */
+        void ConstructL();
+
+        /**
+        * C++ destructor.
+        */
+        ~CVtUiMutedControl();
+
+    public: // Functions from base classes
+
+        /**
+        * From CCoeControl, handles resource change.
+        * @param aType type of change.
+        */ 
+        virtual void HandleResourceChange(
+            TInt aType );
+
+    protected: // Functions from base classes
+
+        /**
+        * From CCoeControl, draws the control.
+        * @param aRect area to be drawn.
+        */
+        virtual void Draw( const TRect& aRect ) const;
+
+        /**
+        * From CCoeControl, handles size changes.
+        */
+        virtual void SizeChanged();
+
+        /**
+        * From CCoeControl, handles position changes.
+        */
+        virtual void PositionChanged();
+
+        /**
+        * From CCoeControl, returns amount of component controls.
+        * @return amount of component controls.
+        */
+        virtual TInt CountComponentControls() const;
+
+        /**
+        * From CCoeControl, returns specified control.
+        * @param aIndex index of control.
+        * @return control.
+        */
+        virtual CCoeControl* ComponentControl(
+            TInt aIndex ) const;
+
+    private:
+
+        // Owned muted label.
+        CEikLabel* iMutedLabel;
+
+    };
+
+#endif      // CVTUIMUTEDCONTROL_H
+            
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiNaviPane.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,219 @@
+/*
+* Copyright (c) 2004, 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:  Controller for navi pane for Video Telephone application.
+*
+*/
+
+
+
+#ifndef CVTUINAVIPANE_H
+#define CVTUINAVIPANE_H
+
+//  INCLUDES
+#include    <e32base.h>
+#include    <coedef.h>
+#include    <w32std.h>
+#include    <coecobs.h>
+
+// FORWARD DECLARATIONS
+class CAknNavigationControlContainer;
+class CAknNavigationDecorator;
+class CVtUiNaviPaneControl;
+class CVtUiMutedControl;
+class CVtUiAppUi;
+
+// CONSTANTS
+
+// Minimum volume.
+const TInt KVtUiVolumeMinimum = 0;
+
+// Maximum volume.
+const TInt KVtUiVolumeMaximum = 10;
+
+// CLASS DECLARATION
+
+/**
+*  Controller for navi pane for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class CVtUiNaviPane : public CActive
+    {
+    public: // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        * @param aNaviPane reference to navipane.
+        * @param aAppUi application UI.
+        */
+        static CVtUiNaviPane* NewL(
+            CAknNavigationControlContainer& aNaviPane,
+            CVtUiAppUi& aAppUi );
+
+        /**
+        * C++ destructor.
+        */
+        ~CVtUiNaviPane();
+
+    public: // New functions
+
+        /**
+        * Updates current speaker.
+        * @param aLoudspeaker Loudspeaker if ETrue, handset otherwise.
+        */
+        void SetCurrentSpeaker(
+            const TBool aLoudspeaker );
+
+        /**
+        * Changes muted status.
+        * @param aStatus status.
+        */
+        void SetMuted(
+            const TBool aStatus );
+
+        /**
+        * Updates call duration.
+        * @param aDuration current duration.
+        * @param aEnabled ETrue if call duration enabled.
+        */
+        void SetCallDuration(
+            const TTimeIntervalSeconds& aDuration,
+            const TBool aEnabled );
+
+        /**
+        * Commits changes. This method should be called after above
+        * Set* methods to make sure that display is up to date.
+        */
+        void CommitL();
+
+        /**
+        * Gets speaker volume.
+        * @param aLoudspeaker ETrue if loudspeaker, EFalse if handset.
+        * @param aValue it will be updated to contain volume of the speaker.
+        */
+        void GetSpeakerVolume(
+            const TBool aLoudspeaker,
+            TInt& aValue ) const;
+
+        /**
+        * Handles resource changes.
+        * @param aType type of change.
+        */
+        void HandleResourceChange(
+            TInt aType );
+
+    protected: // From base classes
+
+        /**
+        * Called by CActive when operation needs to be canceled.
+        */
+        void DoCancel();
+
+        /**
+        * Called by CActiveScheduler when operation has been
+        * finished.
+        */
+        void RunL();
+
+    private:
+
+        /**
+        * C++ constructor.
+        * @param aNaviPane navipane instance.
+        * @param aAppUi application UI.
+        */
+        CVtUiNaviPane(
+            CAknNavigationControlContainer& aNaviPane,
+            CVtUiAppUi& aAppUi );
+
+        /**
+        * Symbian constructor.
+        */
+        void ConstructL();
+
+        /**
+        * Pushes indicators after timeout.
+        */
+        void PushAfterTimeout();
+
+        /**
+        * Pushes new decorator to navi pane replacing the
+        * previous one.
+        * @param aNew new to replace the old one.
+        */
+        void PushL( CAknNavigationDecorator* aNew );
+
+        /**
+        * Returns indicator that should be used currently.
+        * @return indicator to be shown.
+        */
+        CAknNavigationDecorator* DefaultIndicator() const;
+
+    private:
+
+        // Slider types in navipane
+        enum TSliderControlType
+                {
+                ENone,
+                EZoom,      // Zoom control visible
+                EVolume     // Volume control visible
+                };
+
+
+        // Holds current slider type
+        TSliderControlType iSliderType;
+
+        // Ref to navi pane.
+        CAknNavigationControlContainer& iNaviPane;
+
+        // Ref to top navi pane element.
+        CAknNavigationDecorator* iCurrent;
+
+        // Owned controller for call duration
+        CAknNavigationDecorator* iMainIndicators;
+
+        // Reference to navi pane control.
+        CVtUiNaviPaneControl* iNaviPaneControl;
+
+        // Owned muted indicator.
+        CAknNavigationDecorator* iMutedIndicator;
+
+        // Reference to muted control.
+        CVtUiMutedControl* iMutedControl;
+
+        // Owned timer instance.
+        RTimer iTimer;
+
+        // ETrue if call duration was enabled.
+        TBool iOldCallDurationEnabled;
+
+        // ETrue if call duration is enabled.
+        TBool iCallDurationEnabled;
+
+        // ETrue if loudspeaker, EFalse if handset.
+        TBool iLoudspeaker;
+
+        // Old microphone status.
+        TBool iOldMicrophoneMuted;
+
+        // ETrue if microphone is muted.
+        TBool iMicrophoneMuted;
+
+        // Reference to application UI.
+        CVtUiAppUi& iAppUi;
+    };
+
+#endif      // CVtUiNaviPane_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiNaviPaneControl.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,147 @@
+/*
+* Copyright (c) 2004, 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:  Navi pane control for Video Telephone application.
+*
+*/
+
+
+
+#ifndef CVTUINAVIPANECONTROL_H
+#define CVTUINAVIPANECONTROL_H
+
+//  INCLUDES
+#include    <coecntrl.h>
+#include    <AknUtils.h>
+
+// CONSTANTS
+
+// Maximum length of call duration buffer.
+const TInt KVtUiCallDurationBufferLength = 16;
+
+// FORWARD DECLARATIONS
+class CVtUiNaviPane;
+
+// CLASS DECLARATION
+
+/**
+*  Navi pane control for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class CVtUiNaviPaneControl
+    : public CCoeControl
+    {
+    public: // Constructors and destructor
+
+        /**
+        * C++ constructor.
+        * @param aNaviPane eference to navipane.
+        */
+        CVtUiNaviPaneControl( CVtUiNaviPane& aNaviPane ); 
+
+        /**
+        * Symbian constructor.
+        */
+        void ConstructL();
+
+        /**
+        * C++ destructor.
+        */
+        ~CVtUiNaviPaneControl();
+
+    public: // New functions
+
+        /**
+        * Sets call duration.
+        * @param aDuration call duration.
+        * @param aEnabled ETrue if enabled.
+        */
+        void SetCallDuration( 
+            const TTimeIntervalSeconds& aDuration,
+            const TBool aEnabled );
+
+        /**
+        * Updates screen to reflect changes.
+        */
+        void CommitL();
+
+    protected: // Functions from base classes
+
+        /**
+        * From CCoeControl, draws the control.
+        * @param aRect area to be drawn.
+        */
+        virtual void Draw( const TRect& aRect ) const;
+
+        /**
+        * From CCoeControl, handles size changes.
+        */
+        virtual void SizeChanged();
+
+        /**
+        * From CCoeControl, handles position changes.
+        */
+        virtual void PositionChanged();
+
+    private:
+
+        /**
+        * Gets call duration text.
+        * @return reference to text.
+        */
+        const TDesC& GetCallDurationText() const;
+
+        /**
+        * Appends character to the buffer.
+        * @param aBuffer buffer.
+        * @param aChar character.
+        */
+        static void AppendChar( 
+            TDes& aBuffer,
+            const TChar& aChar );
+
+        /**
+        * Appends a number to the buffer.
+        * @param aBuffer buffer.
+        * @param aNumber number, 0 .. 99.
+        */
+        static void AppendNum(
+            TDes& aBuffer,
+            const TInt aNumber );
+
+    private:
+
+        // Call duration layout.
+        TAknLayoutText iCallDurationLayout;
+
+        // ETrue if call duration is enabled.
+        TBool iCallDurationEnabled;
+
+        // Duration in seconds.
+        TTimeIntervalSeconds iCallDuration;
+
+        // Buffer for call duration.
+        mutable TBuf< KVtUiCallDurationBufferLength > iCallDurationBuffer;
+
+        // Current speaker, ETrue if loudspeaker, EFalse if handset.
+        TBool iLoudspeaker;
+        
+        // Reference to navipane.
+        CVtUiNaviPane& iNaviPane;
+
+    };
+
+#endif      // CVTUINAVIPANECONTROL_H
+            
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiNumberEntryActivationControl.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,118 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Number entry activation control for 
+*                Video Telephone application.
+*
+*/
+
+
+
+#ifndef CVTUINUMBERENTRYACTIVATIONCONTROL_H
+#define CVTUINUMBERENTRYACTIVATIONCONTROL_H
+
+//  INCLUDES
+#include    <coecntrl.h>
+
+// FORWARD DECLARATIONS
+class CVtUiAppUi;
+
+// CLASS DECLARATION
+
+/**
+*  Number entry activation control for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class CVtUiNumberEntryActivationControl
+    : public CCoeControl
+    {
+    public: // Constructors and destructor
+        
+        /**
+        * C++ constructor.
+        * @param aAppUi application ui.
+        */
+        CVtUiNumberEntryActivationControl( CVtUiAppUi& aAppUi );
+
+        /**
+        * Symbian constructor.
+        * @param aRect initial area.
+        */
+        void ConstructL( const TRect& aRect );
+
+        /**
+        * C++ destructor.
+        */
+        ~CVtUiNumberEntryActivationControl();
+
+    public: // Functions from base classes
+        
+        /**
+        * @see CCoeControl::SizeChanged.
+        */
+        virtual void SizeChanged();
+
+        /**
+        * @see CCoeControl::PositionChanged.
+        */
+        virtual void PositionChanged();
+
+        /**
+        * @see CCoeControl::Draw.
+        */
+        virtual void Draw( const TRect& aRect ) const;
+    
+        /**
+        * @see CCoeControl::OfferKeyEventL.
+        */
+        virtual TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,
+            TEventCode aType );
+
+    public: // New functions
+        
+        /**
+        * Set control's activation status.
+        * @param aIsActive ETrue if key events should 
+        * be handled oterherwise EFalse.
+        */
+        void SetActive( TBool aIsActive );
+  
+    private:
+
+        /**
+        * Checks if event should open number entry.
+        * @param aKeyEvent event.
+        * @param aDtmfTone event as character tone.
+        * @return ETrue if number entry should be opened.
+        */
+        static TBool IsNumericEvent( 
+            const TKeyEvent& aKeyEvent,
+            TChar& aDtmfTone );
+
+    private:
+
+        // Reference to application ui.
+        CVtUiAppUi& iAppUi;
+
+        // ETrue if this control has been added to stack.
+        TBool iAddedToStack;
+        
+        // ETrue if key events should be handled oterherwise EFalse.
+        TBool iIsActive;
+
+    };
+
+#endif      // CVTUINUMBERENTRYACTIVATIONCONTROL_H
+            
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiRemoteVideoControl.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,115 @@
+/*
+* 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:  class for Remote Video Control.
+*
+*/
+
+#ifndef CVTUIREMOTEVIDEOCONTROL_H_
+#define CVTUIREMOTEVIDEOCONTROL_H_
+
+#include    <coecntrl.h>
+#include    <AknWsEventObserver.h>
+
+class CVtUiVideoControlBase;
+class CVtUiAppUi;
+
+/**
+ *  CVtUiRemoteVideoControl
+ *
+ *  Remote Video control.
+ *
+ *  @since S60 v5.0
+ */
+class CVtUiRemoteVideoControl : public CCoeControl,
+    public MAknWsEventObserver
+    {
+public:
+
+    /**
+    * Static Constructor.
+    */
+    static CVtUiRemoteVideoControl* NewL(CVtUiAppUi& aAppUi);
+    
+    RWindow& GetRWindow();
+
+    /**
+     * Destructor
+     */
+    ~CVtUiRemoteVideoControl();    
+
+protected:
+
+    /**
+     * Constructor
+     */
+    CVtUiRemoteVideoControl(CVtUiAppUi& aAppUi);
+
+    /**
+     * 2nd constructor
+     */
+    void ConstructL();
+    
+public: // from CCoeControl
+
+    /**
+    * @see CCoeControl::HandlePointerEventL
+    */
+    void HandlePointerEventL( const TPointerEvent& aPointerEvent );
+    
+public: // from MAknWsEventObserver
+
+    /**
+    * @see MAknWsEventObserver::HandleWsEventL
+    */
+    void HandleWsEventL( const TWsEvent& aEvent,
+        CCoeControl* aDestination );    
+
+protected: // virtual methods
+
+    /**
+    * The size changed method. If you need to do special handling after the
+    * control's size has changed, overwrite this method.
+    */
+    virtual void HandleSizeChanged();
+
+private: // from CCoeControl
+    /**
+    * @see CCoeControl::Draw
+    */
+    void Draw( const TRect& aRect ) const;
+
+    /**
+    * @see CCoeControl::SizeChanged
+    */
+    void SizeChanged();
+
+    /**
+    * @see CCoeControl::PositionChanged
+    */
+    void PositionChanged();
+    
+    /**
+    * The draw method.
+    */
+    void DoDraw( CWindowGc& aGc ) const;
+
+private:    
+    
+    // Reference to application UI.
+    CVtUiAppUi& iAppUi;
+    
+
+    };
+
+#endif /*CVTUIREMOTEVIDEOCONTROL_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiZoomControl.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,268 @@
+/*
+* Copyright (c) 2004, 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:  Navi pane zoom indicator control for 
+*                Video Telephone application.
+*
+*/
+
+
+
+#ifndef CVTUIZOOMCONTROL_H
+#define CVTUIZOOMCONTROL_H
+
+//  INCLUDES
+#include    <coecntrl.h>
+#include    <AknUtils.h>
+#include    "CVtUiBitmapManager.h"
+
+// CLASS DECLARATION
+
+/**
+*  Navi pane zoom indicator control for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class CVtUiZoomControl
+    : public CCoeControl
+    {
+    public: // Constructors and destructor
+        
+        /**
+        * C++ constructor.
+        * @param aBitmapManager bitmap manager.
+        */
+        CVtUiZoomControl( CVtUiBitmapManager& aBitmapManager );
+
+        /**
+        * Symbian constructor.
+        */
+        void ConstructL();
+
+        /**
+        * C++ destructor.
+        */
+        ~CVtUiZoomControl();
+
+    public: // New functions
+
+        /**
+        * Sets zoom parameters.
+        * @param aStepCount amount of steps, 0 if zooming disabled.
+        * @param aCurrentStep current step, 0 .. aStepCount.
+        */
+        void SetZoomParams( 
+            const TInt aStepCount, 
+            const TInt aCurrentStep );
+
+        /**
+        * Commits changes.
+        */
+        void CommitL();
+
+        /**
+        * Returns ETrue if zooming is enabled.
+        * @return ETrue if enabled.
+        */
+        TBool IsZoomEnabled() const;
+
+        /**
+        * Gets zoom parameters.
+        * @param aStepCount amount of steps, 0 if zooming disabled.
+        * @param aCurrentStep current step, 0 .. aStepCount.
+        */
+        void GetZoomParams(
+            TInt& aStepCount,
+            TInt& aCurrentStep ) const;
+
+        /**
+        * Updates zoom. This method should be called periodically during zooming.
+        * @return ETrue if zoom step was updated.
+        */
+        TBool UpdateZoomL();
+
+        /**
+        * Stops zoom. 
+        */
+        void StopZoom();
+
+    public: // Functions from base classes
+
+        /**
+        * From CCoeControl, handles key events.
+        * @param aKeyEvent key event.
+        * @param aType type of event.
+        * @return response indicating if key was consumed.
+        */
+        virtual TKeyResponse OfferKeyEventL(
+            const TKeyEvent& aKeyEvent,
+            TEventCode aType );
+
+        /**
+        * From CCoeControl, handles resource change.
+        * @param aType type of change.
+        */ 
+        virtual void HandleResourceChange(
+            TInt aType );
+
+    protected: // Functions from base classes
+
+        /**
+        * From CCoeControl, draws the control.
+        * @param aRect area to be drawn.
+        */
+        virtual void Draw( const TRect& aRect ) const;
+
+        /**
+        * From CCoeControl, handles size changes.
+        */
+        virtual void SizeChanged();
+
+        /**
+        * From CCoeControl, handles position changes.
+        */
+        virtual void PositionChanged();
+
+    private:
+
+        /**
+        * Calculates amount of steps to be shown.
+        * @param aFullSteps amount of full steps.
+        * @param aPartialStep partial steps, 0 .. 255.
+        */
+        void DetermineSteps(
+            TInt& aFullSteps,
+            TInt& aPartialStep ) const;
+
+        /**
+        * Generates zoom mask bitmap.
+        * @param aAreaBitmap maximum bitmap, ownership not transferred.
+        * @param aPartial partial amount.
+        * @param aRow area row number.
+        * @param aRowSize size of the row.
+        * @return ETrue if successful, EFalse otherwise.
+        */
+        TBool GenerateZoomMaskBitmap(
+            CFbsBitmap* aMaskBitmap,
+            const TInt aPartial,
+            const TInt aRow,
+            const TSize& aRowSize ) const;
+
+        /**
+        * Generates zoom mask bitmap.
+        * @param aAreaBitmap maximum bitmap, ownership not transferred.
+        * @param aPartial partial amount.
+        * @param aRow area row number.
+        * @param aRowSize size of the row.
+        */
+        void DoGenerateZoomMaskBitmap(
+            CFbsBitmap* aMaskBitmap,
+            const TInt aPartial,
+            const TInt aRow,
+            const TSize& aRowSize ) const;
+
+        /**
+        * Creates bitmaps.
+        * @return error code.
+        */
+        TInt CreateBitmaps();
+
+        /**
+        * Creates bitmaps.
+        */
+        void CreateBitmapsL();
+
+        /**
+        * Returns size of the temporary bitmaps.
+        * @return size of the temporary bitmaps.
+        */
+        TSize SizeOfBitmap() const;
+
+        /**
+        * Gets position and source rect.
+        * @param aPosition it will contain position.
+        * @param aSourceRect it will contain source rectangle.
+        * @param aZoomStep zoom step.
+        */
+        void GetPositionAndRect(
+            TPoint& aPosition,
+            TRect& aSourceRect,
+            const TInt aZoomStep ) const;
+
+    private:
+
+        // Inner class.
+        class CBitmap;
+
+        // Reference to bitmap manager.
+        CVtUiBitmapManager& iBitmapManager;
+
+        // Zoom direction bitmap identifier.
+        TVtUiBitmapPoolId iZoomDirId;
+
+        // Zoom area bitmap identifier.
+        TVtUiBitmapPoolId iZoomAreaId;
+
+        // Zoom min bitmap identifier.
+        TVtUiBitmapPoolId iZoomMinId;
+
+        // Zoom max bitmap identifier.
+        TVtUiBitmapPoolId iZoomMaxId;
+
+        // Zoom pane rectangle.
+        TRect iZoomPaneRect;
+
+        // Zoom direction layout.
+        TAknLayoutRect iZoomDirLayout;
+
+        // Zoom area layout.
+        TAknLayoutRect iZoomAreaLayout;
+
+        // Current step, 0 .. iMaxZoomStep.
+        TInt iCurrentZoomStep;
+        
+        // Maximum step.
+        TInt iMaxZoomStep;
+
+        // Used partial value used in iZoomMaskBitmap
+        // generation.
+        mutable TInt iZoomMaskPartial;
+
+        // Used row value used in iZoomMaskBitmap
+        // generation.
+        mutable TInt iZoomMaskRow;
+
+        // Owned partial soft mask.
+        CBitmap* iZoomPartialMask;
+        
+        // Owned partial shade (soft mask).
+        CBitmap* iZoomPartialShade;
+
+        // Owned partial shade mask.
+        CBitmap* iZoomPartialShadeMask;
+
+        // Zoom direction +1 or -1. 0 if no
+        // zoom ongoing.
+        TInt iZoomDirection;
+
+        // Zoom step at the start of zooming.
+        TInt iZoomStepStart;
+
+        // Start time of zooming.
+        TTime iZoomStartTime;
+
+    };
+
+#endif      // CVTUIZOOMCONTROL_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/MVtUiEngineCommandManager.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Command manager class for Video Telephone application.
+*
+*/
+
+
+
+#ifndef MVTUICOMMANDMANAGER_H
+#define MVTUICOMMANDMANAGER_H
+
+//  INCLUDES
+#include    <e32base.h>
+
+// FORWARD DECLARATIONS
+class MVtEngCommandObserver;
+
+// CLASS DECLARATION
+
+/**
+*  Command manager class for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class MVtUiEngineCommandManager
+    {
+    public: // New functions
+
+        /**
+        * Adds observer.
+        * @param aObserver observer to be added.
+        */
+        virtual void AddObserverL( MVtEngCommandObserver& aObserver ) = 0;
+
+        /**
+        * Removes observer.
+        * @param aObserver observer to be removed.
+        */
+        virtual void RemoveObserver( MVtEngCommandObserver& aObserver ) = 0;
+
+    };
+
+#endif      // MVTUICOMMANDMANAGER_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/MVtUiVideoWindow.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,96 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Interface for controlling a video window
+*                for Video Telephone application.
+*
+*/
+
+
+
+#ifndef MVTUIVIDEOWINDOW_H
+#define MVTUIVIDEOWINDOW_H
+
+//  INCLUDES
+#include    <e32base.h>
+
+// FORWARD DECLARATIONS
+class CFbsBitmap;
+
+// CLASS DECLARATION
+
+/**
+*  Interface for controlling a video window (uplink / downlink) for Video
+*  Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class MVtUiVideoWindow
+    {
+    public: // New functions
+
+        /**
+        * Resets blind, stream bitmap and waiting image statuses.
+        */
+        virtual void Reset() = 0;
+
+        /**
+        * Changes blind status.
+        * @param aStatus new status, ETrue - on, EFalse - off.
+        */
+        virtual void SetBlind( TBool aStatus ) = 0;
+
+        /**
+        * Sets stream bitmap.
+        * @param aStreamBitmap bitmap. Ownership not transferred.
+        */
+        virtual void SetStreamBitmap( CFbsBitmap* aStreamBitmap ) = 0;
+
+        /**
+        * Sets stream bitmap for reserve, when Draw() routine is called.
+        * (e.g. when opening and closing menu)
+        * @param aStreamBitmap bitmap. Ownership not transferred.
+        */
+        virtual void SetStreamBitmapReserve( CFbsBitmap* aStreamBitmap ) = 0;
+
+        /**
+        * Sets waiting image status.
+        * @param aShowWaitingText ETrue if waiting text should be shown.
+        */
+        virtual void SetWaiting( TBool aShowWaitingText ) = 0;
+
+        /**
+        * Redraws image.
+        */
+        virtual void Redraw() = 0;
+        
+        /**
+         * Set remote video control 
+         */
+        virtual void SetRemoteVideoControl( CCoeControl* aRemoteControl ) = 0;
+        
+        /**
+         * Layout the postion and the size of the remote video control
+          */
+        virtual void LayoutRemoteVideo() = 0;    
+        
+        /**
+         * Returns pointer to remote video control  or NULL if no remote video control  is present.
+         */
+        virtual CCoeControl * RemoteVideoControl() = 0;
+                       
+    };
+
+#endif      // CVTUICONTEXTCONTROL_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/TVtUiCallParameters.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,106 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Call parameters class for Video Telephone application.
+*
+*/
+
+
+
+#ifndef TVTUICALLPARAMETERS_H
+#define TVTUICALLPARAMETERS_H
+
+//  INCLUDES
+#include    <e32base.h>
+
+// CLASS DECLARATION
+
+/**
+*  Call parameters for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class TVtUiCallParameters
+    {
+    public: // Constructors and destructor
+        
+        /**
+        * C++ constructor.
+        */
+        TVtUiCallParameters();
+
+    public: // New functions
+
+        /**
+        * Resets parameters.
+        */
+        void Reset();
+
+        /**
+        * Sets audio status.
+        * @param aEnabled ETrue if audio enabled, EFalse if disabled.
+        */
+        void SetAudioStatus( const TBool aEnabled );
+
+        /**
+        * Gets audio status.
+        * @param aEnabled It will equal to ETrue if audio enabled, 
+        *        EFalse if disabled.
+        * @return error code, 
+        *         KErrNone if audio status has been set,
+        *         KErrNotFound if not.
+        */
+        TInt GetAudioStatus( TBool& aEnabled ) const;
+
+        /**
+        * Sets video status.
+        * @param aEnabled enabled status.
+        */
+        void SetVideoStatus( const TBool aEnabled );
+
+        /**
+        * Gets video status.
+        * @param aEnabled It will equal to ETrue if video enabled, 
+        *        EFalse if disabled.
+        * @return error code, 
+        *         KErrNone if video status has been set,
+        *         KErrNotFound if not.
+        */
+        TInt GetVideoStatus( TBool& aEnabled );
+
+        /**
+        * Sets selected camera.
+        * @param aPrimary ETrue if primary, EFalse if secondary.
+        */
+        void SetSelectedCamera( const TBool aPrimary );
+
+        /**
+        * Gets selected camera.
+        * @param aPrimary It will equal to ETrue if primary has been selected,
+        *        EFalse if secondary.
+        * @return error code,
+        *         KErrNone if selected camera has been set,
+        *         KErrNotFound if not.
+        */
+        TInt GetSelectedCamera( TBool& aPrimary );
+
+    private:
+
+        // Current flags.
+        TInt iFlags;
+
+    };
+
+#endif      // TVTUICALLPARAMETERS_H   
+            
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/VideoTelephonyInternalCRKeys.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,119 @@
+/*
+* 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:  Video Telephony internal Central Repository keys
+*
+*/
+
+
+#ifndef VIDEOTELEPHONYINTERNALCRKEYS_H
+#define VIDEOTELEPHONYINTERNALCRKEYS_H
+
+#include <e32std.h>
+
+/**
+* Video Telephony Variation API
+* Keys under this category are used in defining video telephony variation.
+*/
+const TUid KCRUidVTVariation = {0x102072D0};
+
+/**
+* Video Telephony Local Variation Flags. Values are defined in 
+* VideoTelephonyVariant.hrh.
+*/
+const TUint32 KVTLocalVariationFlags = 0x00000001;
+
+/**
+* Video Telephony Configuration API
+* Keys under this category are used for configuring video call behaviour.
+* @since S60 3.1
+*/
+const TUid KCRUidVTConfiguration = {0x10281872};
+
+/**
+* This key controls minimum, normal and maximum frame rate for video encoder.
+* Integer values in the string are between 0 and 31 separated by space.
+* Example for key value is "5 10 5".
+*/
+const TUint32 KVTVideoFrameRates = 0x00000001;
+
+/**
+* Defines layout (screen orientation) used by Video Telephone application 
+* per active camera. Each camera has one of the following configurations:
+* 1) "LS" = Landscape
+* 2) "PR" = Portrait
+* 3) "OL" = Obey device layout (normal operation)
+* Camera values are:
+* 1) "C1" = VT primary camera (inwards)
+* 2) "C2" = VT secondary camera (outwards)
+*  Example value (portrait for cam1, landscape for cam2): C1:PR C2:LS
+*/
+const TUint32 KVTCameraLayout = 0x00000002;
+
+/**
+* Lists implementation UIDs for MPEG4, H.263 and H.264 encoders for video 
+* telephony in hexadecimal separated by space
+*/
+const TUint32 KVTVideoEncoderUIDs = 0x00000003;
+
+/**
+* Lists implementation UIDs for MPEG4, H.263 and H.264 decoders for video 
+* telephony in hexadecimal separated by space
+*/
+const TUint32 KVTVideoDecoderUIDs = 0x00000004;
+
+/**
+* Lists implementation UIDs for AMR-NB and future audio encoders for video
+* telephony (in hex, separated by space)
+*/
+const TUint32 KVTAudioEncoderUIDs = 0x00000005;
+
+/**
+* Lists implementation UIDs for AMR-NB and future audio decoders for video 
+* telephony (in hex, separated by space)
+*/
+const TUint32 KVTAudioDecoderUIDs = 0x00000006;
+                                               
+/**
+* Lists processing delay for MPEG4, H.263 and H.264 encoders for video 
+* telephony in unsigned 32-bit integers separated by space
+*/
+const TUint32 KVTVideoEncoderDelay = 0x00000007;
+
+/**
+* Lists processing delay for MPEG4, H.263 and H.264 decoders for video 
+* telephony in unsigned 32-bit integers separated by space
+*/
+const TUint32 KVTVideoDecoderDelay = 0x00000008;
+
+/**
+* Lists processing delay for AMR-NB and future audio encoders for video
+* telephony (in unsigned 32-bit integers, separated by space)
+*/
+const TUint32 KVTAudioEncoderDelay = 0x00000009;
+
+/**
+* Lists processing delay for AMR-NB and future audio decoders for video 
+* telephony (in unsigned 32-bit integers, separated by space)
+*/
+const TUint32 KVTAudioDecoderDelay = 0x0000000A;
+
+/*
+* Defines number of toolbar buttons. Three buttons is minimum
+* and seven is maximum.
+*/
+const TUint32 KVTToolbarCommands  = 0x0000000B;
+
+#endif      // VIDEOTELEPHONYINTERNALCRKEYS_H
+
+// End of file
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/VideoTelephonyVariant.hrh	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,60 @@
+/*
+* Copyright (c) 2005 - 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:  Bit flag definitions for VT local variation.
+*
+*/
+
+
+#ifndef VIDEOTELEPHONYVARIANT_HRH
+#define VIDEOTELEPHONYVARIANT_HRH
+
+
+/**
+* KVTLVFlagScalingMethodENearest defines whether the video image is
+* scaled using Nearest algorithm, which is fast, but quality is low.
+* When the flag is set ENearest is used.
+* @since S60 v2.8
+*/
+#define KVTLVFlagScalingMethodENearest 0x00000001
+
+/**
+* KVTLVFlagScalingMethodEBilinear defines whether the video image is
+* scaled using Bilinear algorithm, which offers the best quality, but in a
+* slow way. When the flag is set Bilinear is used.
+* @since S60 v2.8
+*/
+#define KVTLVFlagScalingMethodEBilinear 0x00000002
+
+/**
+* KVTLVFlagEnableBitReversal defines if bit order should be
+* reversed in PV.
+* When the flag is set bit order is reversed.
+*/
+#define KVTLVFlagEnableBitReversal 0x00000004
+
+/**
+* KVTLVFlagEnableAMR_WB defines if AMR wideband is supported in video calls.
+* @since S60 v5.0
+*/
+#define KVTLVFlagEnableAMR_WB 0x00000008
+
+/**
+* KVTLVFlagSupportMpeg4 defines whether the PV should support Mepg4.
+* @since S60 v5.0
+*/
+#define KVTLVFlagDisableMpeg4 0x00000010
+
+#endif // VIDEOTELEPHONYVARIANT_HRH
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/VtUiLayout.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,241 @@
+/*
+* Copyright (c) 2004, 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:  Layout related accessory methods for Video Telephone
+*                application.
+*
+*/
+
+
+
+#ifndef VTUILAYOUT_H
+#define VTUILAYOUT_H
+
+//  INCLUDES
+#include    "videotelui.hrh"
+#include    <e32base.h>
+#include    <AknUtils.h>
+
+// FORWARD DECLARATIONS
+class TAknsItemID;
+
+// CLASS DECLARATION
+
+/**
+*  Layout related accessory methods for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class VtUiLayout
+    {
+    public: // New functions
+
+        /**
+        * Returns application window rectangle.
+        * @param aRect rectangle to be filled.
+        */
+        static void GetApplicationParentRect(
+            TRect& aRect );
+
+        // ELEMENTS RELATIVE TO APPLICATION WINDOW:
+
+        /**
+        * Returns main pane layout.
+        * @param aLayout main pane layout.
+        */
+        static void GetMainPaneLayout(
+            TAknWindowLineLayout& aLayout );
+
+        // ELEMENTS RELATIVE TO APPLICATION WINDOW:
+
+        /**
+        * Returns layout for uplink video stream background.
+        * @param aLayout layout of qgn_graf_call_video_out_bg.
+        */
+        static void GetFirstWindowBackgroundLayout(
+            TAknWindowLineLayout& aLayout );
+
+        /**
+        * Returns layout for uplink video stream.
+        * @param aLayout layout of uplink video stream relative.
+        */
+        static void GetFirstWindowStreamLayout(
+            TAknWindowLineLayout& aLayout );
+
+        /**
+        * Returns layout of uplink video disabled icon.
+        * @param aLayout layout of qgn_indi_call_video_blind_out.
+        */
+        static void GetFirstWindowStreamDisabledIconLayout(
+            TAknWindowLineLayout& aLayout );
+
+        // ELEMENTS RELATIVE TO MAIN PANE:
+
+        /**
+        * Returns layout of background rectangle.
+        * @param aLayout layout of background rectangle.
+        */
+        static void GetSecondWindowBackgroundLayout(
+            TAknWindowLineLayout& aLayout );
+
+        /**
+        * Returns layout of downlink video stream.
+        * @param aLayout layout of downlink video stream.
+        * @param aUseSQCif ETrue if SQCIF layout is to be used.
+        */
+        static void GetSecondWindowStreamLayout(
+            TAknWindowLineLayout& aLayout,
+            TBool aIsToolbar,
+            TBool aIsSubQCIF = EFalse );
+
+        /**
+        * Returns layout of downlink video stream (the whole picture).
+        * @param aLayout layout of downlink video stream.
+        * @param aUseSQCif ETrue if SQCIF layout is to be used.
+        */
+        static void GetSecondWindowStreamWholeLayout(
+            TAknWindowLineLayout& aLayout,
+            TBool aIsToolbaraIsToolbar,
+            TBool aIsSubQCIF = EFalse );
+
+        /**
+        * Returns layout of downlink video disabled icon.
+        * @param aLayout layout of qgn_indi_call_video_blind_in.
+        */
+        static void GetSecondWindowDisabledIconLayout(
+            TAknWindowLineLayout& aLayout );
+
+        /**
+        * Returns layout of waiting text.
+        * @param aLayout layout.
+        * @param aFirstLine ETrue if first line, EFalse if second.
+        */
+        static void GetSecondWindowWaitingTextLayout(
+            TAknTextLineLayout& aLayout,
+            const TBool aFirstLine );
+
+        /**
+        * Returns number entry area layout.
+        * @param aLayout layout.
+        */
+        static void GetNumberEntryAreaLayout(
+            TAknWindowLineLayout& aLayout );
+
+        // ELEMENTS RELATIVE TO NAVI PANE:
+
+        /**
+        * Returns layout of audio routing indicator.
+        * @param aLayoutlayout of qgn_indi_<ref>_[muted].
+        */
+        static void GetAudioRoutingIconLayout(
+            TAknWindowLineLayout& aLayout );
+
+        /**
+        * Returns layout of call duration text.
+        * @param aLayout layout of call duration text.
+        */
+        static void GetCallDurationTextLayout(
+            TAknTextLineLayout& aLayout );
+
+        /**
+        * Returns layout of muted text.
+        * @param aLayout layout of muted text.
+        */
+        static void GetMutedTextLayout(
+            TAknTextLineLayout& aLayout );
+
+        /**
+        * Gets zooming pane layout.
+        * @param aLayout layout of zooming pane.
+        */
+        static void GetZoomPaneLayout(
+            TAknWindowLineLayout& aLayout );
+
+        // ELEMENTS RELATIVE TO ZOOMING PANE:
+
+        /**
+        * Gets zoom direction icon layout.
+        * @param aLayout layout of zoom direction icon.
+        */
+        static void GetZoomDirLayout(
+            TAknWindowLineLayout& aLayout );
+
+        /**
+        * Gets zoom area layout.
+        * @param aLayout layout of zoom area.
+        */
+        static void GetZoomAreaLayout(
+            TAknWindowLineLayout& aLayout );
+
+        /**
+        * Gets zoom step layout.
+        * @param aLayout layout of a zoom step.
+        * @param aZoomStep zoom step, 1 .. 11.
+        */
+        static void GetZoomStepLayout(
+            TAknWindowLineLayout& aLayout,
+            TInt aZoomStep );
+
+        // OTHER UTILITY METHODS
+
+        /**
+        * Returns skin identifier corresponding to the bitmap.
+        *
+        * @param aId identifier of the bitmap.
+        * @return skin identifier or KAknsIIDNone if no skin for this bitmap.
+        */
+        static TAknsItemID MapBitmapToSkinId( TVtUiBitmapId aId );
+
+        /**
+        * Determines color skin identifier corresponding to the bitmap.
+        *
+        * @param aId bitmap identifier.
+        * @param aColorId it will contain color skin id.
+        * @param aColorIndex it will contain color index.
+        * @return ETrue if bitmap has color skin, EFalse otherwise.
+        */
+        static TBool MapBitmapToColorId(
+            TVtUiBitmapId aId,
+            TAknsItemID& aColorId,
+            TInt& aColorIndex );
+
+        /**
+        * Resolves file name and index from bitmap identifier.
+        * @param aId bitmap identifier.
+        * @param aFileName it will contain the name of the file.
+        * @param aIndex it will contain the index.
+        */
+        static void Resolve(
+            TVtUiBitmapId aId,
+            TFileName& aFileName,
+            TInt& aIndex );
+
+        /**
+        * Can be used for checking current orientation.
+        * @return ETrue if current application orientation is landscape,
+        * EFalse otherwise.
+        */
+        static TBool IsLandscapeOrientation();
+        
+        /**
+        * Returns end call button pane layout.
+        * @param aLayout end call button pane layout.
+        */
+        static void GetButtonPaneLayout(
+            TAknWindowLineLayout& aLayout );
+
+    };
+
+#endif      // VTUILAYOUT_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/VtUiPanic.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,83 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Panic methods and reasons for Video Telephone application.
+*
+*/
+
+
+
+#ifndef VTUIPANIC_H
+#define VTUIPANIC_H
+
+//  INCLUDES
+#include    <e32base.h>
+
+// DATA TYPES
+
+/**
+* Enumerates all panic reasons.
+*/
+enum TVtUiPanicReason
+    {
+    // Invalid index passed to VtUiLayout::Resolve.
+    EVtUiPanicInvalidBitmapId = 10,
+    // Invalid bitmap file in VtUiLayout::Resolve.
+    EVtUiPanicInvalidBitmapFile = 11,
+    // Reset must not fail.
+    EVtUiPanicResetFailed = 12,
+    // Communication not supported.
+    EVtUiPanicCommsNotSupported = 13,
+    // EIKON server handle not found.
+    EVtUiPanicEikonServerNotFound = 14,
+    // Prepare view finder not supported.
+    EVtUiPanicPrepareViewFinderNotSupported = 15,
+    // Prepare remote render not supported.
+    EVtUiPanicPrepareRemoteRenderNotSupported = 16,
+    // Mismatch in bitmap file names.
+    EVtUiPanicMismatchInBitmapFileNames = 17,
+    // Default color requirement mismatch.
+    EVtUiPanicDefaultColorRequireMismatch = 18,
+    // Application shutdown has timeouted.
+    EVtUiPanicApplicationShutdownTimeout = 100,
+    // Engine functionality does not match with required.
+    EVtUiPanicEngineFunctionalityAssert = 101,
+    // Renderer instance is not available
+    EVtUiPanicRendererNotFound = 200,
+    // Values out of range
+    EVtUiPanicOutOfRange = 300
+    };
+
+// CLASS DECLARATION
+
+/**
+*  Panic methods and reasons for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class VtUiPanic
+    {
+    public: // New functions
+
+        /**
+        * Panics this process.
+        * @param aReason reason of panic.
+        */
+        static void Panic(
+            TVtUiPanicReason aReason );
+
+    };
+
+#endif      // VTUIPANIC_H
+            
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/VtUiUtility.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,175 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Utility methods for Video Telephone application.
+*
+*/
+
+
+
+#ifndef VTUIUTILITY_H
+#define VTUIUTILITY_H
+
+//  INCLUDES
+#include    <e32base.h>
+#include    <mvtengaudio.h>
+#include    <mvtengmedia.h>
+#include    <w32std.h>
+
+// FORWARD DECLARATIONS
+
+// CLASS DECLARATION
+
+/**
+*  Utility methods for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class VtUiUtility
+    {
+    public: // New functions
+
+        /**
+        * Enumerates audio routing masks.
+        */
+        enum TAudioRoutingMask
+            {
+            // Deactivate loudspeaker.
+            EDeactivateLoudspeaker = (1<<0),
+            // Activate loudspeaker.
+            EActivateLoudspeaker = (1<<1),
+            // Deactivate BT handsfree.
+            EDeactivateBtHandsfree = (1<<2),
+            // Activate BT handsfree.
+            EActivateBtHandsfree = (1<<3)
+            };
+
+        /**
+        * Gets audio routing availabilities.
+        * @param aAudio audio instance.
+        * @param aAvailable availability bitmap.
+        */
+        static void GetAudioRoutingAvailability( 
+            MVtEngAudio& aAudio,
+            TInt& aAvailable );
+
+        /**
+        * Gets outgoing media state.
+        * @param aMedia media instance.
+        * @param aAvailable availability bitmap.
+        */
+        static void GetOutgoingMediaState(
+            MVtEngMedia& aMedia,
+            TInt& aAvailable );
+
+        /**
+        * Gets incoming media state.
+        * @param aMedia media instance.
+        * @param aAvailable availability bitmap.
+        */
+        static void GetIncomingMediaState(
+            MVtEngMedia& aMedia,
+            TInt& aAvailable );
+
+        /**
+        * Checks if media has still image.
+        * @param aMedia media instance.
+        * @return ETrue if media has still image.
+        */
+        static TBool HasStillImage(
+            MVtEngMedia& aMedia );
+
+        /**
+        * Gets freeze's current status.
+        * @param aMedia media instance.
+        * @return  ETrue if active provider is frozen, EFalse otherwise.
+        */
+        static TBool GetFreezeState( 
+            MVtEngMedia& aMedia );	
+				
+        /**
+        * Checks if freeze is supported.
+        * @param aMedia media instance.
+        * @return ETrue if freeze is supported.
+        */
+        static TBool IsFreezeSupported(
+            MVtEngMedia& aMedia );
+	
+        /**
+        * Gets current local video quality setting.
+        * @param aMedia media instance. 
+        * @param aVideoQuality Current local video quality settings.
+        */
+        static void GetVideoQuality( 
+            MVtEngMedia& aMedia,
+            MVtEngMedia::TVideoQuality& aVideoQuality );
+        /**
+        * Gets current object sharing state.
+        * @param aMedia media instance.
+        * @param aShareObjectState contains current object sharing state on
+        * return.
+        */
+        static void GetObjectSharingState( MVtEngMedia& aMedia,
+            MVtEngMedia::TShareObjectState& aShareObjectState );
+        
+        /**
+        * Checks if zooming is allowed.
+        * @param aMedia media instance.
+        * @return ETrue if allowed, EFalse otherwise.
+        */
+        static TBool IsZoomAllowed(
+            MVtEngMedia& aMedia );
+
+        /**
+        * Checks if the device has cameras currently attached.
+        * @param aMedia media instance.
+        * @return ETrue if there are cameras available.
+        */
+        static TBool HasCameras( MVtEngMedia& aMedia );
+
+        /**
+        * Checks if the key event is DTMF enabled.
+        * @param aKeyEvent The key event.
+        * @param aDtmfTone DTMF tone character.
+        * @return ETrue if this event is DTMF event.
+        */
+        static TBool IsDTMFEvent( const TKeyEvent& aKeyEvent,
+            TChar& aDtmfTone );
+
+        /**
+        * Checks if the character is DTMF enabled.
+        * @param aChar The character.
+        * @return ETrue if this character is DTMF character.
+        */
+        static TBool IsDTMFCharacter( const TChar aChar );
+
+    private:
+
+        /**
+        * Checks if audio routing is available.
+        * @param aAudio audio instance.
+        * @param aCurrent current speaker.
+        * @param aSource source speaker.
+        * @param aTarget target speaker.
+        */
+        static TBool IsAudioRoutingAvailable(
+            MVtEngAudio& aAudio,
+            const MVtEngAudio::TAudioRoutingState aCurrent,
+            const MVtEngAudio::TAudioRoutingState aSource,
+            const MVtEngAudio::TAudioRoutingState aTarget );
+
+    };
+
+#endif      // VTUIUTILITY_H
+            
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/cvtuicmdbase.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,99 @@
+/*
+* 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:  UI command bases class definition.
+*
+*/
+
+
+#ifndef C_VTUICMDBASE_H
+#define C_VTUICMDBASE_H
+
+#include <e32base.h>
+
+/**
+ *  CVtUiCmdBase
+ *
+ *  Base class for UI commands.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CVtUiCmdBase ) : public CBase
+    {
+
+public: // public methods
+
+    /**
+     * Returns command id.
+     *
+     * @return This command's id.
+     */
+    TInt CommandId() const;
+
+public: // public abstract methods
+
+    /**
+     * Execute command
+     *
+     */
+    virtual void HandleL() = 0;
+
+    /**
+     * Returns ETrue if command is enabled.
+     *
+     * @return ETrue if this command is enabled (can be executed), EFalse
+     * otherwise.
+     */
+    virtual TBool IsEnabled() const = 0;
+
+public: // public static methods
+
+    /**
+     * Key comparing function type definition.
+     */
+    typedef TInt ( *TKeyOrder ) ( const TInt*, const CVtUiCmdBase& );
+
+    /**
+     * Returns linear order object for ordered array inserting.
+     *
+     * @return TLinearOrder instance for searching and inserting CVtUiCmdBase
+     * based objects into RArray.
+     */
+    static TLinearOrder< CVtUiCmdBase > LinearOrder();
+
+    /**
+     * Returns linear order object for ordered array inserting.
+     *
+     * @return Pointer to key comparaing function, that can be used in
+     * FindInOrder() method call.
+     */
+    static TKeyOrder KeyOrder();
+
+protected:
+
+    /**
+     * C++ constructor.
+     *
+     * @aCommandId Id of this command.
+     *
+     */
+    CVtUiCmdBase( TInt aCommandId );
+
+protected:
+
+    // Command id
+    const TInt iCommandId;
+
+    };
+
+#endif // C_VTUICMDBASE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/cvtuicmdcontext.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,147 @@
+/*
+* 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:  Command context base class definition.
+*
+*/
+
+
+#ifndef C_VTUICMDCONTEXT_H
+#define C_VTUICMDCONTEXT_H
+
+#include <e32base.h>
+
+#include "tvtuicmdcontexttype.h"
+
+class CVtUiCmdValidatorBase;
+class CVtUiCmdValidationActionBase;
+class MVtUiCommandManager;
+class CVtUiCmdCustomValidationActionBase;
+
+/**
+ *  CVtUiCmdContext
+ *
+ *  Command context base class. This class defines context in which commands
+ *  will be validated.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CVtUiCmdContext ) : public CBase
+    {
+
+public: // public methods
+
+    /**
+     * C++ destructor.
+     */
+    ~CVtUiCmdContext();
+
+    /**
+     * Returns reference priority.
+     *
+     * @return Validator priority.
+     */
+     TInt ReferencePriority() const;
+
+    /**
+     * Returns context type.
+     *
+     * @return Context type.
+     */
+     TVtUiCmdContextType ContextType() const;
+
+    /**
+     * Adds validator to context.
+     *
+     * @param aValidator Validator reference to be added into this context.
+     * @return KErrNone if validator supports this context and adding succeeded.
+     * KErrNotSupported if validator does not support this context.
+     * Other system wide error code that may happen during add.
+     */
+    TInt AddValidator( CVtUiCmdValidatorBase& aValidator );
+
+    /**
+     * Removes validator to context.
+     *
+     * @param aValidator Constant validator reference to be removed from this
+     * context.
+     * @return Validator priority.
+     */
+    void RemoveValidator( const CVtUiCmdValidatorBase& aValidator );
+
+public: // pure virtual methods
+
+    /**
+     * Do validation.
+     *
+     * @param aAction Action to be validated.
+     */
+    virtual void ValidateL( CVtUiCmdValidationActionBase& aAction ) = 0;
+
+protected:
+
+    /**
+     * C++ constructor
+     */
+    CVtUiCmdContext( MVtUiCommandManager& aCommandManager,
+        TVtUiCmdContextType aCtxType, TInt aReferencePriority );
+
+    /**
+     * Validates menu items.
+    */
+    void ValidateMenuItemsL( CVtUiCmdValidationActionBase& aAction );
+
+    /**
+     * Validates softkey items.
+    */
+    void ValidateSoftkeyItemsL( CVtUiCmdValidationActionBase& aAction );
+
+    /**
+     * Validates toolbar items.
+    */
+    void ValidateToolbarItemsL( CVtUiCmdValidationActionBase& aAction );
+
+    /**
+     * Custom action validation.
+    */
+    void CustomValidationL( CVtUiCmdCustomValidationActionBase& aAction );
+
+    /**
+     * Registers command context to command policy manager.
+     */
+    void RegisterCommandContextL();
+
+    /**
+     * Unregisters command context from command policy manager.
+     */
+    void UnregisterCommandContext();
+
+protected: // data
+
+    // Reference to policy manager (for cleanup)
+    MVtUiCommandManager& iCommandManager;
+
+private: // data
+
+    // Validator list (ordered by priority)
+    RPointerArray< CVtUiCmdValidatorBase > iValidators;
+
+    // Validator priority
+    const TInt iReferencePriority;
+
+    // Context type.
+    const TVtUiCmdContextType iContextType;
+
+    };
+
+#endif // C_VTUICMDCONTEXT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/cvtuicmdcustomvalidationactionbase.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,66 @@
+/*
+* 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:  Custom command validation action class definition.
+*
+*/
+
+
+#ifndef C_VTUICMDCUSTOMVALIDATIONACTIONBASE_H
+#define C_VTUICMDCUSTOMVALIDATIONACTIONBASE_H
+
+#include <e32base.h>
+
+#include "cvtuicmdvalidationactionbase.h"
+
+/**
+ *  CVtUiCmdCustomValidationActionBase
+ *
+ *  Custom command validation action base class. This class is an extension to
+ *  command validation action and defines new attribute Type ID that is used
+ *  for defining type of the custom validation action.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CVtUiCmdCustomValidationActionBase )
+    : public CVtUiCmdValidationActionBase
+    {
+
+public: // typedefs
+
+    // Custom type id type definition.
+    typedef TInt TCustomTypeId;
+
+public:
+
+    /**
+     * Returns custom type id.
+     * @return Custom type id.
+     */
+    TCustomTypeId CustomTypeId() const;
+
+protected: // new protected methods
+
+    /**
+     * C++ constructor.
+     */
+    CVtUiCmdCustomValidationActionBase( TCustomTypeId aCustomTypeId );
+
+private: // data
+
+    // Custom type id.
+    const TCustomTypeId iCustomTypeId;
+
+    };
+
+#endif // C_VTUICMDCUSTOMVALIDATIONACTIONBASE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/cvtuicmdstatecheckaction.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,84 @@
+/*
+* 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:  Command state check action.
+*
+*/
+
+
+#ifndef C_VTUICMDSTATECHECKACTION_H
+#define C_VTUICMDSTATECHECKACTION_H
+
+#include "cvtuicmdcustomvalidationactionbase.h"
+
+/**
+ *  CVtUiCmdStateCheckAction
+ *
+ *  Custom validation action that concludes whether or not a command is allowed.
+ *  Command validness is checked from its current state.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CVtUiCmdStateCheckAction )
+: public CVtUiCmdCustomValidationActionBase
+    {
+
+public:
+
+    /**
+     * Static constructor.
+     *
+     * @return Pointer to newly created instance of CVtUiCmdStateCheckAction.
+     */
+    static CVtUiCmdStateCheckAction* NewL();
+
+    /**
+     * Sets command to be checked.
+     *
+     * @param aCommandId Id of command to be checked.
+     */
+    void SetCommand( TInt aCommandId );
+
+    /**
+     * Sets command to be checked.
+     *
+     * @return ETrue is command set with SetCommand() is allowed to be
+     * executed.
+     */
+    TBool IsCommandAllowed() const;
+
+public: // from CVtUiCmdValidationActionBase
+
+    /**
+     * @see CVtUiCmdValidationActionBase::ProcessL
+     */
+    void ProcessL( const MVtUiCmdValidatorCallBack& aCallBack );
+
+private:
+
+    /**
+     * C++ constructor.
+     */
+    CVtUiCmdStateCheckAction();
+
+private: // data
+
+    // Id of command to be checked
+    TInt iCommandId;
+
+    // ETrue if command defined by iCommandId is allowed
+    TBool iIsCommandAllowed;
+
+    };
+
+#endif // C_VTUICMDSTATECHECKACTION_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/cvtuicmdvalidationactionbase.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,89 @@
+/*
+* 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:  Command validation action base class definition.
+*
+*/
+
+
+#ifndef C_VTUICMDVALIDATIONACTIONBASE_H
+#define C_VTUICMDVALIDATIONACTIONBASE_H
+
+#include <e32base.h>
+
+class CVtUiCmdValidatorBase;
+class MVtUiCmdValidatorCallBack;
+
+/**
+ *  CVtUiCmdValidationActionBase
+ *
+ *  Command validation action base class.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CVtUiCmdValidationActionBase ) : public CBase
+    {
+
+public: // public methods
+
+    /**
+     * C++ destructor.
+     */
+    ~CVtUiCmdValidationActionBase();
+
+    /**
+     * Called when validation process is about to begin. Resets internal
+     * variables.
+     */
+    virtual void BeginProcess();
+
+    /**
+     * Called when validation process has finished.
+     */
+    virtual void EndProcess();
+
+public: // pure virtual methods
+
+    /**
+     * Execute validation process.
+     *
+     * @param aCallBack Action validation callback routine that will be called
+     * for every item to be validated.
+     */
+    virtual void ProcessL( const MVtUiCmdValidatorCallBack& aCallBack ) = 0;
+
+protected:
+
+    /**
+     * Mark command handled.
+     *
+     * @param aCommandId Id of command that was handled.
+     */
+    void CommandHandledL( TInt aCommandId );
+
+    /**
+     * Check whether command is already handled or not.
+     *
+     * @param aCommandId Id of command to be checked.
+     * @return ETrue if command was already handler, EFalse otherwise.
+     */
+    TBool IsCommandHandled( TInt aCommandId ) const;
+
+private: // data
+
+    // Array of handled commands.
+    RArray< TInt > iHandledCommands;
+
+    };
+
+#endif // C_VTUICMDVALIDATIONACTIONBASE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/cvtuicmdvalidatorbase.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,116 @@
+/*
+* 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:  Base class for command validators.
+*
+*/
+
+
+#ifndef C_VTUICMDVALIDATORBASE_H
+#define C_VTUICMDVALIDATORBASE_H
+
+#include <e32base.h>
+
+#include "tvtuicmdcontexttype.h"
+
+class CVtUiCmdValidationActionBase;
+class CVtUiCmdCustomValidationActionBase;
+
+/**
+ *  CVtUiCmdValidatorBase
+ *
+ *  Base class for all validators. Validator implementations validate commands
+ *  and other properties (like softkey resource IDs) on context basis. E.g.
+ *  primary validator will validate commands in all contexts, while toolbar
+ *  validator will do fine tuning for commands only in menu context, so that
+ *  commands that are visible in toolbar are not shown in menu.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CVtUiCmdValidatorBase ) : public CBase
+    {
+
+public: // public methods
+
+    /**
+     * Returns validator priority.
+     *
+     * @return Validator priority.
+     */
+    TInt Priority() const;
+
+public: // pure virtual methods
+
+    /**
+     * Validates menu items.
+     *
+     * @param aAction Reference to validation action.
+     * @param aReferencePriority Context reference priority.
+     */
+    virtual void ValidateMenuItemsL( CVtUiCmdValidationActionBase& aAction,
+        TInt aReferencePriority ) = 0;
+
+    /**
+     * Validates softkey items.
+     *
+     * @param aAction Reference to validation action.
+     * @param aReferencePriority Context reference priority.
+     */
+    virtual void ValidateSoftkeyItemsL( CVtUiCmdValidationActionBase& aAction,
+        TInt aReferencePriority ) = 0;
+
+    /**
+     * Validates toolbar items.
+     *
+     * @param aAction Reference to validation action.
+     * @param aReferencePriority Context reference priority.
+     */
+    virtual void ValidateToolbarItemsL( CVtUiCmdValidationActionBase& aAction,
+        TInt aReferencePriority ) = 0;
+
+    /**
+     * Custom validation.
+     *
+     * @param aAction Reference to custom validation action.
+     * @param aReferencePriority Context reference priority.
+     */
+    virtual void CustomValidationL( CVtUiCmdCustomValidationActionBase& aAction,
+        TInt aReferencePriority ) = 0;
+
+    /**
+     * Query for context validation.
+     *
+     * @param aCtxType Command context type.
+     * @return ETrue if this instance validates given context type, EFalse
+     * otherwise.
+     */
+    virtual TBool ValidatesContext( const TVtUiCmdContextType& aCtxType )
+        const = 0;
+
+protected:
+
+    /**
+     * C++ constructor
+     *
+     * @param aPriority Validator priority.
+     */
+    CVtUiCmdValidatorBase( TInt aPriority );
+
+private: // data
+
+    // Validator priority
+    const TInt iPriority;
+
+    };
+
+#endif // C_VTUICMDVALIDATORBASE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/cvtuicommandmanager.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,231 @@
+/*
+* 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:  Command manager class definition.
+*
+*/
+
+
+#ifndef C_VTUICOMMANDMANAGER_H
+#define C_VTUICOMMANDMANAGER_H
+
+#include "mvtuicommandmanager.h"
+#include "mvtuicommandui.h"
+#include "tvtuilocalvariation.h"
+#include "CVtUiAppUi.h"
+
+class TVtUiStates;
+class CVtUiCommandPolicyManager;
+class CVtUiPrimaryCmdPolicy;
+class CVtUiCmdStateCheckAction;
+class CVtUiExecutionContext;
+
+/**
+ * CVtUiCommandManager
+ *
+ * Acts as a proxy for Command UIs and Validators.
+ *
+ * @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CVtUiCommandManager ) : public CBase,
+    public MVtUiCommandManager, public MVtUiCommandUi
+    {
+
+public:
+
+    /**
+    * Static constructor.
+    *
+    * @param aUiStates Constant reference to UI states object.
+    */
+    static CVtUiCommandManager* NewL( const TVtUiStates& aUiStates,
+        CVtUiAppUi& aAppUi );
+
+    /**
+    * Destructor.
+    */
+    ~CVtUiCommandManager();
+
+public:
+
+    /**
+     * Constant reference to UI states.
+     *
+     * @return Constant reference to UI states object.
+     */
+    const TVtUiStates& UiStates() const;
+
+    /**
+     * Constant reference to VT local variation.
+     *
+     * @return Constant reference to VT local variation object.
+     */
+    const TVtUiVideoTelephonyVariation& VideoTelephonyVariation() const;
+
+    /**
+     * Handles command.
+     *
+     * @param aCommandId Id of command to be handled. If given command is not
+     * found, command will be silently ignored.
+     */
+    void HandleCommandL( TInt aCommandId );
+
+    /**
+     * Constant reference to CVtUiAppUi states.
+     *
+     * @return Constant reference to UI states object.
+     */
+    const CVtUiAppUi& AppUi() const;
+    
+
+public: // from MVtUiCommandManager
+
+    /**
+     * @see MVtUiCommandManager::AddCommandUi
+     */
+    TInt AddCommandUi( MVtUiCommandUi& aCommandUi );
+
+    /**
+     * @see MVtUiCommandManager::RemoveCommandUi
+     */
+    void RemoveCommandUi( MVtUiCommandUi& aCommandUi );
+
+    /**
+     * @see MVtUiCommandManager::ValidateMenuItemsL
+     */
+    void ValidateMenuItemsL( CVtUiCmdValidationActionBase& aAction );
+
+    /**
+     * @see MVtUiCommandManager::ValidateSoftkeyItemsL
+     */
+    void ValidateSoftkeyItemsL( CVtUiCmdValidationActionBase& aAction );
+
+    /**
+     * @see MVtUiCommandManager::ValidateToolbarItemsL
+     */
+    void ValidateToolbarItemsL( CVtUiCmdValidationActionBase& aAction );
+
+    /**
+     * @see MVtUiCommandManager::IsCommandAllowedL
+     */
+    TBool IsCommandAllowedL( TInt aCommandId );
+
+    /**
+     * @see MVtUiCommandManager::RegisterCommandContext
+     */
+    TInt RegisterCommandContext( CVtUiCmdContext& aContext );
+
+    /**
+     * @see MVtUiCommandManager::UnregisterCommandContext
+     */
+    void UnregisterCommandContext( CVtUiCmdContext& aContext );
+
+    /**
+     * @see MVtUiCommandManager::AddValidator
+     */
+    TInt AddValidator( CVtUiCmdValidatorBase& aValidator );
+
+    /**
+     * @see MVtUiCommandManager::RemoveValidator
+     */
+    void RemoveValidator( CVtUiCmdValidatorBase& aValidator );
+
+    /**
+     * @see MVtUiCommandManager::RefreshL
+     */
+    void RefreshL();
+
+    /**
+     * @see MVtUiCommandManager::AddCommandModifier
+     */
+    TInt AddCommandModifier( CVtUiCommandModifyBase& aModifier );
+
+    /**
+     * @see MVtUiCommandManager::RemoveCommandModifier
+     */
+    void RemoveCommandModifier( CVtUiCommandModifyBase& aModifier );
+
+    /**
+     * @see MVtUiCommandManager::RegisterCommandL
+     */
+    void RegisterCommandL( CVtUiCmdBase& aCommand );
+
+    /**
+     * @see MVtUiCommandManager::UnregisterCommand
+     */
+    void UnregisterCommand( const CVtUiCmdBase& aCommand );
+
+private:
+
+    /**
+    * Constructor.
+    */
+    CVtUiCommandManager( const TVtUiStates& aUiStates, CVtUiAppUi& aAppUi );
+
+    /**
+    * Symbian OS constructor.
+    * @param aModel Engine model.
+    */
+    void ConstructL();
+
+    /**
+     * Called when a new command modifier is added
+     */
+    TInt CommandModifierAdded( CVtUiCommandModifyBase& aModifier );
+
+    /**
+     * Called when a command modifier is removed
+     */
+    void CommandModifierRemoved( CVtUiCommandModifyBase& aModifier );
+
+    /**
+     * Called when a new command ui is added
+     */
+    TInt CommandUiAdded( MVtUiCommandUi& aCommandUi );
+
+    /**
+     * Called when a command ui is removed
+     */
+    void CommandUiRemoved( MVtUiCommandUi& aCommandUi );
+
+private:
+
+    // Commands Uis
+    RPointerArray< MVtUiCommandUi > iCommandUis;
+
+    // Command modifiers
+    RPointerArray< CVtUiCommandModifyBase > iCommandModifiers;
+
+    // Registered commands
+    RPointerArray< CVtUiCmdBase > iCommands;
+
+    // Command policy manager instance
+    CVtUiCommandPolicyManager* iCmdPolicyMgr;
+
+    // Reference to UI states instance
+    const TVtUiStates& iUiStates;
+
+    // Reference to VT local variation
+    TVtUiVideoTelephonyVariation iVtVariation;
+
+    // Command state validation action
+    CVtUiCmdStateCheckAction* iCmdStateCheckAction;
+
+    // Execution context (for command state validation)
+    CVtUiExecutionContext* iExecutionContext;
+
+    // Reference to appui
+    const CVtUiAppUi& iAppUi;
+    };
+
+#endif // C_VTUICOMMANDMANAGER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/cvtuicommandmodifybase.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,79 @@
+/*
+* 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:  Command modifier base class definition.
+*
+*/
+
+
+#ifndef C_VTUICOMMANDMODIFYBASE_H
+#define C_VTUICOMMANDMODIFYBASE_H
+
+#include <e32base.h>
+
+#include "mvtuicommandsetting.h"
+
+/**
+ *  CVtUiCommandModifyBase
+ *
+ *  Command modifier base class. Command modifiers can be used for modifying
+ *  different command sets. E.g. in toolbar and number entry a command modifiers
+ *  are being used for modifying softkeys.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CVtUiCommandModifyBase ) : public CBase
+    {
+
+public: // static methods
+
+    /**
+     * Returns TLinearOrder<> for priority ordering.
+     */
+    static TLinearOrder< CVtUiCommandModifyBase > PriorityOrder();
+
+private: // static methods
+
+    /**
+     * Priority ordering function.
+     */
+    static TInt PriorityOrderFunc( const CVtUiCommandModifyBase& aM1,
+        const CVtUiCommandModifyBase& aM2 );
+
+public: // pure virtual methods
+
+    /**
+     * Modifies command set.
+     */
+    virtual void ModifyCommandsL( MVtUiCommandSetting& aCommandSettings ) = 0;
+
+    /**
+     * Returns ETrue if this modifier supports given command set type.
+     */
+    virtual TBool Supports( MVtUiCommandSetting::Type aType ) const = 0;
+
+protected:
+
+    /**
+     * Constructor
+     */
+    CVtUiCommandModifyBase( TInt aPriority );
+
+private:
+
+    // Modifier priority
+    const TInt iPriority;
+
+    };
+
+#endif // C_VTUICOMMANDMODIFYBASE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/cvtuicommandpolicymanager.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,181 @@
+/*
+* 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:  Command policy manager class definition.
+*
+*/
+
+
+#ifndef C_VTUICOMMANDPOLICYMANAGER_H
+#define C_VTUICOMMANDPOLICYMANAGER_H
+
+#include <e32base.h>
+
+#include "tvtuicmdcontexttype.h"
+
+class CVtUiCmdContext;
+class CVtUiCmdValidatorBase;
+class CVtUiCmdValidationActionBase;
+class CVtUiCmdCustomValidationActionBase;
+class CVtUiCommandManager;
+class CVtUiPrimaryCmdPolicy;
+
+/**
+ * CVtUiCommandPolicyManager
+ *
+ * Contains pointers to all registered command contexts and commnd policy
+ * instances. When validation is required, calls proper methods in proper
+ * context for registered validators in validator priority order.
+ *
+ * @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CVtUiCommandPolicyManager ) : public CBase
+    {
+
+public: // public methods
+
+    /**
+     * Static constructor.
+     *
+     * @param aCmdManager Constant reference to command manager instance.
+     * @return Newly created instance of CVtUiCommandPolicyManager class.
+     */
+    static CVtUiCommandPolicyManager*
+        NewL( const CVtUiCommandManager& aCmdManager );
+
+    /**
+     * C++ destructor.
+     */
+    ~CVtUiCommandPolicyManager();
+
+    /**
+     * Registers command context.
+     *
+     * @param aContext Reference to command context to be registered.
+     * @return KErrNone if registration succeeded.
+     */
+    TInt RegisterCommandContext( CVtUiCmdContext& aContext );
+
+    /**
+     * Unregisters command context.
+     *
+     * @param aContext Constant reference to command context to be unregistered.
+     */
+    void UnregisterCommandContext( CVtUiCmdContext& aContext );
+
+    /**
+     * Adds validator to policy manager and registered contexts.
+     *
+     * @param aValidator Reference to validator to be added.
+     * @return KErrNone if add succeeded.
+     */
+    TInt AddValidator( CVtUiCmdValidatorBase& aValidator );
+
+    /**
+     * Removes validator from policy manager and registered contexts.
+     *
+     * @param aValidator Constant reference to validator to be removed.
+     */
+    void RemoveValidator( CVtUiCmdValidatorBase& aValidator );
+
+    /**
+     * Validates menu items for given action.
+     *
+     * @param aAction Reference to validation action to be carried on menu
+     * commmands.
+     */
+    void ValidateMenuItemsL( CVtUiCmdValidationActionBase& aAction );
+
+    /**
+     * Validates softkey items for given action.
+     *
+     * @param aAction Reference to validation action to be carried on softkeys.
+     */
+    void ValidateSoftkeyItemsL( CVtUiCmdValidationActionBase& aAction );
+
+    /**
+     * Validates toolbar items for given action.
+     *
+     * @param aAction Reference to validation action to be carried on toolbar
+     * commands.
+     */
+    void ValidateToolbarItemsL( CVtUiCmdValidationActionBase& aAction );
+
+    /**
+     * Custom validation for given action.
+     *
+     * @param Reference to custom validation action to be carried.
+     */
+    void CustomValidateL( CVtUiCmdCustomValidationActionBase& aAction );
+
+private:
+
+    /**
+     * Constructor
+     */
+    CVtUiCommandPolicyManager( const CVtUiCommandManager& aCmdManager );
+
+    /**
+     * 2nd constructor
+     */
+    void ConstructL();
+
+    /**
+     * Called when RegisterCommandContext() succeeds.
+     */
+    void CommandContextRegistered( CVtUiCmdContext& aContext );
+
+    /**
+     * Called when UnregisterCommandContext() succeeds.
+     */
+    void CommandContextUnregistered( CVtUiCmdContext& aContext );
+
+    /**
+     * Called when AddValidator() succeeds.
+     */
+    void ValidatorAdded( CVtUiCmdValidatorBase& aValidator );
+
+    /**
+     * Called when RemoveValidator() succeeds.
+     */
+    void ValidatorRemoved( CVtUiCmdValidatorBase& aValidator );
+
+    /**
+     * Returns command context by type.
+     */
+    CVtUiCmdContext* FindCommandContextByType(
+        TVtUiCmdContextType aContextType );
+
+    /**
+     * Called from different validation routines.
+     */
+    void ValidateL( TVtUiCmdContextType aContextType,
+        CVtUiCmdValidationActionBase& aAction );
+
+private: // data
+
+    // Context list (ordered by context type)
+    RPointerArray< CVtUiCmdContext > iContexts;
+
+    // Validator list
+    RPointerArray< CVtUiCmdValidatorBase > iValidators;
+
+    // Reference to command manager
+    const CVtUiCommandManager& iCommandManager;
+
+    // Primary command policy, always exists.
+    CVtUiPrimaryCmdPolicy* iPrimaryCommandPolicy;
+
+    };
+
+#endif // C_VTUICOMMANDPOLICYMANAGER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/cvtuicommandsetting.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,109 @@
+/*
+* 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:  Command settings class definition.
+*
+*/
+
+
+#ifndef C_VTUICOMMANDSETTING_H
+#define C_VTUICOMMANDSETTING_H
+
+#include <e32base.h>
+
+#include "mvtuicommandsetting.h"
+
+class CVtUiCommandModifyBase;
+
+/**
+ *  CVtUiCommandSetting
+ *
+ *  Template commmand setting class that takes command setting action as a
+ *  templated parameter.
+ *
+ *  @since S60 v3.2
+ */
+template < typename ACTION >
+class CVtUiCommandSetting : public CBase, public MVtUiCommandSetting
+    {
+
+public:
+
+    /**
+     * Destructor
+     */
+    ~CVtUiCommandSetting();
+
+    /**
+     * Defines commands.
+     *
+     * @param aAction Action related to commands to be defined.
+     */
+    void DefineCommandsL( const ACTION& aAction );
+
+    /**
+     * Adds new modifer
+     *
+     * @param aModifier Reference to modifier to be added to this setting
+     * instance.
+     * @return KErrNone if modifier could be added, KErrAlreadyExists if same
+     * modifier is already added or KErrArgument if another modifier with
+     * same priority is already added.
+     */
+    TInt AddModifier( CVtUiCommandModifyBase& aModifier );
+
+    /**
+     * Removes modifier
+     *
+     * @param aModifier Constant reference to modifier to be removed.
+     */
+    void RemoveModifier( CVtUiCommandModifyBase& aModifier );
+
+    /**
+     * Return command type
+     *
+     * @return Type of commands this setting class instance is defining.
+     */
+    Type CommandType() const;
+
+    /**
+     * Returns reference to action
+     *
+     * @return Constant reference to action that is related to this command
+     * definition process.
+     */
+    const ACTION& Action();
+
+protected:
+
+    /**
+     * Constructor
+     */
+    CVtUiCommandSetting( Type aCommandType );
+
+private:
+
+    // Modifiers
+    RPointerArray< CVtUiCommandModifyBase > iModifiers;
+
+    // Command type
+    const Type iCommandType;
+
+    // Stored action
+    const ACTION* iAction;
+
+    };
+
+#include "cvtuicommandsetting.inl"
+
+#endif // C_VTUICOMMANDSETTING_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/cvtuicommandsetting.inl	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,139 @@
+/*
+* 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:  Command setting inline methods.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "cvtuicommandmodifybase.h"
+
+// ======== LOCAL FUNCTIONS ========
+
+static const TInt KVtUiModifierArrayGranularity = 1;
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandSetting< A >::~CVtUiCommandSetting
+// ---------------------------------------------------------------------------
+//
+template < typename A >
+CVtUiCommandSetting< A >::~CVtUiCommandSetting()
+    {
+    iModifiers.Reset();
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandSetting< A >::CVtUiCommandSetting
+// ---------------------------------------------------------------------------
+//
+template < typename A >
+CVtUiCommandSetting< A >::CVtUiCommandSetting( Type aCommandType ) :
+    iModifiers( KVtUiModifierArrayGranularity ), iCommandType( aCommandType )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandSetting< A >::DefineCommandsL
+// ---------------------------------------------------------------------------
+//
+template < typename A >
+void CVtUiCommandSetting< A >::DefineCommandsL( const A& aAction )
+    {
+    __VTPRINTENTER( "CmdSet< A >.DefineCommandsL" )
+    iAction = &aAction;
+    if ( iModifiers.Count() > 0 )
+        {
+        iModifiers[ iModifiers.Count() - 1 ]->ModifyCommandsL( *this );
+        }
+    else
+        {
+        DoDefineCommandsL();
+        }
+    iAction = NULL;
+    __VTPRINTEXIT( "CmdSet< A >.DefineCommandsL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandSetting< A >::AddModifier
+// ---------------------------------------------------------------------------
+//
+template < typename A >
+TInt CVtUiCommandSetting< A >::AddModifier(
+    CVtUiCommandModifyBase& aModifier )
+    {
+    __VTPRINTENTER( "CmdSet< A >.AddModifier" )
+    TInt result( KErrNone );
+    if ( aModifier.Supports( iCommandType ) )
+        {
+        TInt idx( iModifiers.FindInOrder( &aModifier,
+            CVtUiCommandModifyBase::PriorityOrder() ) );
+        if ( idx == KErrNotFound )
+            {
+            result = iModifiers.InsertInOrder( &aModifier,
+                CVtUiCommandModifyBase::PriorityOrder() );
+            }
+        else
+            {
+            if ( iModifiers[ idx ] != &aModifier )
+                {
+                // Priorities match, but instance is not same -> argument
+                // is not valid
+                result = KErrArgument;
+                }
+            }
+        }
+    __VTPRINTEXITR( "CmdSet< A >.AddModifier %d", result )
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandSetting< A >::RemoveModifier
+// ---------------------------------------------------------------------------
+//
+template < typename A >
+void CVtUiCommandSetting< A >::RemoveModifier(
+    CVtUiCommandModifyBase& aModifier )
+    {
+    __VTPRINTENTER( "CmdSet< A >.RemoveModifier" )
+    TInt idx( iModifiers.FindInOrder( &aModifier,
+        CVtUiCommandModifyBase::PriorityOrder() ) );
+
+    if ( idx != KErrNotFound )
+        {
+        iModifiers.Remove( idx );
+        }
+    __VTPRINTEXIT( "CmdSet< A >.RemoveModifier" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandSetting< A >::CommandType
+// ---------------------------------------------------------------------------
+//
+template < typename A >
+MVtUiCommandSetting::Type CVtUiCommandSetting< A >::CommandType() const
+    {
+    return iCommandType;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandSetting< A >::Action
+// ---------------------------------------------------------------------------
+//
+template < typename A >
+const A& CVtUiCommandSetting< A >::Action()
+    {
+    return *iAction;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/cvtuiexecutioncontext.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,73 @@
+/*
+* 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:  Execution context class definition.
+*
+*/
+
+
+#ifndef C_VTUIEXECUTIONCONTEXT_H
+#define C_VTUIEXECUTIONCONTEXT_H
+
+#include "cvtuicmdcontext.h"
+
+/**
+ *  CVtUiExecutionContext
+ *
+ *  Command execution context. This context is used for checking whether or not
+ *  a command is allowed to be performed.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CVtUiExecutionContext ) : public CVtUiCmdContext
+    {
+
+public: // public methods
+
+    /**
+     * C++ destructor.
+     */
+    ~CVtUiExecutionContext();
+
+    /**
+     * Static constructor.
+     *
+     * @param aCommandManager Reference to command manager.
+     * @return Newly created instance of CVtUiExecutionContext class.
+     */
+    static CVtUiExecutionContext* NewL( MVtUiCommandManager& aCommandManager );
+
+public: // from CVtUiCmdContext
+
+    /**
+     * @see CVtUiCmdContext::ValidateL
+     */
+    void ValidateL( CVtUiCmdValidationActionBase& aAction );
+
+private:
+
+    /**
+     * C++ constructor
+     */
+    CVtUiExecutionContext( MVtUiCommandManager& aCommandManager );
+
+    /**
+     * 2nd constructor, may leave.
+     */
+    void ConstructL();
+
+private: // data
+
+    };
+
+#endif // C_VTUIEXECUTIONCONTEXT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/cvtuifeaturecmdbase.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,66 @@
+/*
+* 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:  Feature based UI command base class definition.
+*
+*/
+
+
+#ifndef C_VTUIFEATURECMDBASE_H
+#define C_VTUIFEATURECMDBASE_H
+
+#include "cvtuicmdbase.h"
+
+class MVtUiFeature;
+
+/**
+ *  CVtUiCmdBase
+ *
+ *  Base class for all UI commands that are feature based.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CVtUiFeatureCmdBase ) : public CVtUiCmdBase
+    {
+
+public: // from CVtUiCmdBase
+
+    /**
+     * @see CVtUiCmdBase::HandleL
+     */
+    void HandleL();
+
+    /**
+     * @see CVtUiCmdBase::IsEnabled
+     */
+    TBool IsEnabled() const;
+
+protected:
+
+    /**
+     * C++ constructor.
+     *
+     * @aFeature Reference to a feature this command refers to.
+     * @aCommandId Id of this command.
+     *
+     */
+    CVtUiFeatureCmdBase( MVtUiFeature& aFeature, TInt aCommandId );
+
+protected:
+
+    // Reference to command feature
+    MVtUiFeature& iFeature;
+
+    };
+
+#endif // C_VTUIFEATURECMDBASE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/cvtuiprimarycmdpolicy.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,141 @@
+/*
+* 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:  Primary command policy class definition.
+*
+*/
+
+
+#ifndef C_VTUIPRIMARYCMDPOLICY_H
+#define C_VTUIPRIMARYCMDPOLICY_H
+
+#include <e32base.h>
+
+#include "tvtuicmdpolicypriority.h"
+#include "cvtuicmdvalidatorbase.h"
+#include "tvtuilocalvariation.h"
+
+class CVtUiCmdValidationActionBase;
+class TVtUiStates;
+class CVtUiAppUi;
+/**
+ * CVtUiPrimaryCmdPolicy
+ *
+ * Primary policy is the highest priority policy. It does the basic validation,
+ * results of which can be modified by the lower priority validators.
+ *
+ * @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CVtUiPrimaryCmdPolicy ) : public CVtUiCmdValidatorBase
+    {
+
+public: // public methods
+
+    /**
+     * Static constructor.
+     *
+     * @param aUiStates Constant reference to UI states object.
+     * @return Newly created instace of CVtUiPrimaryCmdPolicy class.
+     */
+    static CVtUiPrimaryCmdPolicy* NewL( const TVtUiStates& aUiStates, 
+        const CVtUiAppUi& aAppUi );
+
+    /**
+     * Destructor
+     */
+    ~CVtUiPrimaryCmdPolicy();
+
+public: // from CVtUiCmdValidatorBase
+
+    /**
+     * @see CVtUiCmdValidatorBase::ValidateMenuItemsL
+     */
+    void ValidateMenuItemsL( CVtUiCmdValidationActionBase& aAction,
+        TInt aReferencePriority );
+
+    /**
+     * @see CVtUiCmdValidatorBase::ValidateSoftkeyItemsL
+     */
+    void ValidateSoftkeyItemsL( CVtUiCmdValidationActionBase& aAction,
+        TInt aReferencePriority );
+
+    /**
+     * @see CVtUiCmdValidatorBase::ValidateToolbarItemsL
+     */
+    void ValidateToolbarItemsL( CVtUiCmdValidationActionBase& aAction,
+        TInt aReferencePriority );
+
+    /**
+     * @see CVtUiCmdValidatorBase::CustomValidationL
+     */
+    void CustomValidationL( CVtUiCmdCustomValidationActionBase& aAction,
+        TInt aReferencePriority );
+
+    /**
+     * @see CVtUiCmdValidatorBase::ValidatesContext
+     */
+    TBool ValidatesContext( const TVtUiCmdContextType& aCtxType )
+        const;
+
+private:
+
+    /**
+     * C++ constructor
+     */
+    CVtUiPrimaryCmdPolicy( const TVtUiStates& aUiStates, 
+        const CVtUiAppUi& aAppUi );
+
+    /**
+     * 2nd constructor
+     */
+    void ConstructL();
+
+    /**
+     * Callback for menu validation.
+     */
+    TBool ValidateMenuCommand( TInt aCommandId ) const;
+
+    /**
+     * Callback for softkey resource id validation.
+     */
+    TBool ValidateSoftkey( TInt aResourceId ) const;
+
+    /**
+     * Callback for toolbar command validation.
+     */
+    TBool ValidateToolbarCommand( TInt aCommandId ) const;
+
+    /**
+     * Callback for command state validation.
+     */
+    TBool ValidateCommandState( TInt aCommandId ) const;
+
+    /**
+     * Callback for command validation.
+     */
+    TBool ValidateCommand( TInt aCommandId, TBool& aHandled ) const;
+
+private: // data
+
+    // UI states
+    const TVtUiStates& iUiStates;
+
+    // Active idle local variation    
+    TBool iAIEnabled;
+    
+    // Reference to appui
+    const CVtUiAppUi& iAppUi;
+
+    };
+
+#endif // C_VTUIPRIMARYCMDPOLICY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/mvtuicommanditerator.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,53 @@
+/*
+* 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:  Command iterator API definition.
+*
+*/
+
+
+#ifndef M_VTUICOMMANDITERATOR_H
+#define M_VTUICOMMANDITERATOR_H
+
+#include <e32base.h>
+
+/**
+ *  MVtUiCommandIterator
+ *
+ *  API for iterating through set of commands.
+ *
+ *  @since S60 v3.2
+ */
+class MVtUiCommandIterator
+    {
+
+public:
+
+    /**
+     * Returns ETrue if the iteration has more elements
+     *
+     * @return ETrue if iteration contains more commands (i.e. call to Next()
+     * will return a valid command), EFalse otherwise.
+     */
+    virtual TBool HasNext() const = 0;
+
+    /**
+     * Returns the next command in the iteration.
+     *
+     * @return Next command in the iteration.
+     */
+    virtual TInt Next() = 0;
+
+    };
+
+#endif // M_VTUICOMMANDITERATOR_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/mvtuicommandmanager.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,162 @@
+/*
+* 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:  Command manager API definition.
+*
+*/
+
+
+#ifndef M_VTUICOMMANDMANAGER_H
+#define M_VTUICOMMANDMANAGER_H
+
+#include <e32base.h>
+
+class CEikMenuPane;
+class CVtUiCmdContext;
+class CVtUiCmdValidatorBase;
+class CVtUiCmdValidationActionBase;
+class MVtUiCommandUi;
+class CVtUiCommandModifyBase;
+class CVtUiCmdCustomValidationActionBase;
+class CVtUiCmdBase;
+
+/**
+ *  MVtUiCommandManager
+ *
+ *  Command manager API for other components. Command manager holds command UI
+ *  instances and does command validation for all registered commands.
+ *
+ *  @since S60 v3.2
+ */
+class MVtUiCommandManager
+    {
+
+public:
+
+    /**
+     * Adds new command ui to command manager.
+     * @param aCommandUi Reference to command ui to be added.
+     * @return KErrNone if command ui was added successfully.
+     */
+    virtual TInt AddCommandUi( MVtUiCommandUi& aCommandUi ) = 0;
+
+    /**
+     * Removes command ui from command manager.
+     * @param aCommandUi Constant reference to command ui to be removed.
+     *
+     */
+    virtual void RemoveCommandUi( MVtUiCommandUi& aCommandUi ) = 0;
+
+    /**
+     * Validate menu items in given manu pane.
+     *
+     * @param aAction Reference to action to be carried on all menu commands.
+     */
+    virtual void ValidateMenuItemsL(
+        CVtUiCmdValidationActionBase& aAction ) = 0;
+
+    /**
+     * Validate softkeys.
+     *
+     * @param aAction Reference to action to be carried on all softkeys.
+     */
+    virtual void ValidateSoftkeyItemsL(
+        CVtUiCmdValidationActionBase& aAction ) = 0;
+
+    /**
+     * Validate toolbar buttons.
+     *
+     * @param aAction Reference to action to be carried on all toolbar commands.
+     */
+    virtual void ValidateToolbarItemsL(
+        CVtUiCmdValidationActionBase& aAction ) = 0;
+
+    /**
+     * Validate command.
+     *
+     * @param aCommandId Id of command that is being checked.
+     * @return ETrue if command can be executed, EFalse otherwise.
+     */
+    virtual TBool IsCommandAllowedL( TInt aCommandId ) = 0;
+
+    /**
+     * Registers command context.
+     *
+     * @param aContext Reference to command context to be registered.
+     * @return KErrNone if registration succeeded.
+     */
+    virtual TInt RegisterCommandContext( CVtUiCmdContext& aContext ) = 0;
+
+    /**
+     * Unregisters command context.
+     *
+     * @param aContext Reference to command context to be unregistered.
+     */
+    virtual void UnregisterCommandContext( CVtUiCmdContext& aContext ) = 0;
+
+    /**
+     * Adds validator to policy manager and registered contexts.
+     *
+     * @param aValidator Reference to validator to be added.
+     * @return KErrNone if registration succeeded.
+     */
+    virtual TInt AddValidator( CVtUiCmdValidatorBase& aValidator ) = 0;
+
+    /**
+     * Removes validator from policy manager and registered contexts.
+     *
+     * @param aValidator Constant reference to validator to be removed.
+     */
+    virtual void RemoveValidator( CVtUiCmdValidatorBase& aValidator ) = 0;
+
+    /**
+     * Refresh command uis.
+     */
+    virtual void RefreshL() = 0;
+
+    /**
+     * Add new command modifier.
+     *
+     * @param aModifier Reference to command modifier to be added to every
+     * registered command setting.
+     * @return KErrNone if modifier could be added, KErrAlreadyExists if same
+     * modifier is already added or KErrArgument if another modifier with
+     * same priority is already added.
+     */
+    virtual TInt AddCommandModifier( CVtUiCommandModifyBase& aModifier ) = 0;
+
+    /**
+     * Remove command modifier.
+     *
+     * @param aModifier Reference to command modifier to be removed from every
+     * registered command setting.
+     */
+    virtual void RemoveCommandModifier( CVtUiCommandModifyBase& aModifier ) = 0;
+
+    /**
+     * Registers new command to command manager.
+     *
+     * @param aCommand Reference to command to be registered.
+     */
+    virtual void RegisterCommandL( CVtUiCmdBase& aCommand ) = 0;
+
+    /**
+     * Unregisters command from command manager.
+     *
+     * @param aCommand Constant reference to command to be unregistered.
+     */
+    virtual void UnregisterCommand( const CVtUiCmdBase& aCommand ) = 0;
+
+    };
+
+#endif // M_VTUICOMMANDMANAGER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/mvtuicommandsetting.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,57 @@
+/*
+* 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:  Command iterator API definition.
+*
+*/
+
+
+#ifndef M_VTUICOMMANDSETTING_H
+#define M_VTUICOMMANDSETTING_H
+
+#include <e32base.h>
+
+/**
+ *  MVtUiCommandSetting
+ *
+ *  Command Setting API.
+ *
+ *  @since S60 v3.2
+ */
+class MVtUiCommandSetting
+    {
+
+public:
+
+    /**
+     * Command types.
+     */
+    enum Type
+        {
+        /** Softkeys */
+        ECommandTypeSoftkeys
+        };
+
+public: // pure virtual methods
+
+    /**
+     * Does the base command definition. If no modifiers are registered, then
+     * this method is called from DefineCommandsL(), otherwise this method may
+     * be called by the modifier, but it is not required to do so.
+     */
+    virtual void DoDefineCommandsL() = 0;
+
+    };
+
+
+#endif // M_VTUICOMMANDSETTING_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/mvtuicommandui.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,64 @@
+/*
+* 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:  Command UI API definition.
+*
+*/
+
+
+#ifndef M_VTUICOMMANDUI_H
+#define M_VTUICOMMANDUI_H
+
+#include <e32base.h>
+
+class CVtUiCommandModifyBase;
+
+/**
+ *  MVtUiCommandUi
+ *
+ *  Command UI API. Defines methods for adding/removing command modifiers and
+ *  method to refresh related command UI.
+ *
+ *  @since S60 v3.2
+ */
+class MVtUiCommandUi
+    {
+
+public:
+
+    /**
+     * Refresh command ui.
+     */
+    virtual void RefreshL() = 0;
+
+    /**
+     * Add new command modifier.
+     *
+     * @param aModifier Reference to modifier to be added to this command ui.
+     * @return KErrNone if modifier could be added, KErrAlreadyExists if same
+     * modifier is already added or KErrArgument if another modifier with
+     * same priority is already added.
+     */
+    virtual TInt AddCommandModifier( CVtUiCommandModifyBase& aModifier ) = 0;
+
+    /**
+     * Remove command modifier.
+     *
+     * @param aModifier Reference to modifier to be removed from this command
+     * ui.
+     */
+    virtual void RemoveCommandModifier( CVtUiCommandModifyBase& aModifier ) = 0;
+
+    };
+
+#endif // M_VTUICOMMANDUI_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/tVtuifeaturevariation.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,182 @@
+/*
+* 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:  Video Telephone feature variation class definition.
+*
+*/
+
+
+#ifndef T_VTUIFEATUREVARIATION_H
+#define T_VTUIFEATUREVARIATION_H
+
+#include <e32base.h>
+#include <featmgr.h>
+
+/**
+ *  TVtUiVariationBase
+ *
+ *  Base class for feature variation classes.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUiFeatureVariationBase )
+    {
+
+public:
+
+    /**
+     * Returns variation feature ID.
+     */
+    virtual TUint32 FeatureId() const = 0;
+
+protected:
+
+    /**
+     * Return whether or not feature is supported by Featuremanager.
+     * @return ETrue if feature is supported by Featuremanager.
+     */
+    virtual TBool IsFeatureSupported( const TUint32 aId) const;
+
+    };
+
+/**
+ *  TVtUiHelpVariation
+ *
+ *  Help variation class. Uses Featuremanager to verify if feture is
+ *  supported. This class should be instanced only once and same instance
+ *  should be passesd as reference to modules that need this feature variation
+ *  information.
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUiHelpVariation ) : public TVtUiFeatureVariationBase
+    {
+
+public:
+
+    /**
+     * Return whether or help variation is supported.
+     *
+     * @return ETrue if help supported.
+     */
+    TBool IsHelpSupported() const;
+
+private: // from TVtUiFeatureVariationBase
+
+		TUint32 FeatureId() const;
+
+    };
+/**
+ *  TVtUiDPVariation
+ *
+ *  Display Post (DP) variation class. Uses Featuremanager to verify if feture is
+ *  supported. This class should be instanced only once and same instance
+ *  should be passesd as reference to modules that need this feature variation
+ *  information.
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUiDPVariation ) : public TVtUiFeatureVariationBase
+    {
+
+public:
+
+    /**
+     * Return whether or DP variation is supported.
+     *
+     * @return ETrue if DP supported.
+     */
+    TBool IsDPSupported() const;
+
+private: // from TVtUiFeatureVariationBase
+
+		TUint32 FeatureId() const;
+
+    };
+/**
+ *  TVtUiBTVariation
+ *
+ *  BlueTooth (BT) variation class. Uses Featuremanager to verify if feture is
+ *  supported. This class should be instanced only once and same instance
+ *  should be passesd as reference to modules that need this feature variation
+ *  information.
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUiBTVariation ) : public TVtUiFeatureVariationBase
+    {
+
+public:
+
+    /**
+     * Return whether or BT variation is supported.
+     *
+     * @return ETrue if BT supported.
+     */
+    TBool IsBTSupported() const;
+
+private: // from TVtUiFeatureVariationBase
+
+		TUint32 FeatureId() const;
+
+    };
+/**
+ *  TVtUiSideVolumeKeysVariation
+ *
+ *  Side volume keys variation class. Uses Featuremanager to verify if feture is
+ *  supported. This class should be instanced only once and same instance
+ *  should be passesd as reference to modules that need this feature variation
+ *  information.
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUiSideVolumeKeysVariation ) : public TVtUiFeatureVariationBase
+    {
+
+public:
+
+    /**
+     * Return whether or Side volume keys variation is supported.
+     *
+     * @return ETrue if Side volume keys supported.
+     */
+    TBool IsSideVolumeKeysSupported() const;
+
+private: // from TVtUiFeatureVariationBase
+
+		TUint32 FeatureId() const;
+
+    };
+/**
+ *  TVtUiActiveIdleFetManVariation
+ *
+ *  Active Idle feature manager variation class. Uses Featuremanager to verify if feture is
+ *  supported. This class should be instanced only once and same instance
+ *  should be passesd as reference to modules that need this feature variation
+ *  information.
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUiActiveIdleFetManVariation ) : public TVtUiFeatureVariationBase
+    {
+
+public:
+
+    /**
+     * Return whether or Acvtive Idle variation is supported.
+     *
+     * @return ETrue if Acvtive Idle  supported.
+     */
+    TBool IsActiveIdleFetManSupported() const;
+
+private: // from TVtUiFeatureVariationBase
+
+		TUint32 FeatureId() const;
+
+    };         
+#endif // T_VTUIFEATUREVARIATION_H
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/tvtflagcontainer.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,108 @@
+/*
+* 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:  Flag container class definition.
+*
+*/
+
+
+#ifndef T_VTFLAGCONTAINER_H
+#define T_VTFLAGCONTAINER_H
+
+#include <e32base.h>
+
+/**
+ *  TVtFlagContainer
+ *
+ *  Flag container is a class that holds maximum of 32 different flags. Also
+ *  contains methods for setting, clearing and getting the flag state.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtFlagContainer )
+    {
+public:
+
+    /**
+     * Constructor.
+     */
+    inline TVtFlagContainer();
+
+protected:
+
+    /**
+     * Clears all flags.
+     */
+    inline void Clear();
+
+    /**
+     * Tests flag.
+     */
+    inline TBool IsFlag( TUint32 aFlags ) const;
+
+    /**
+     * Sets flag(s).
+     */
+    inline void SetFlag( TUint32 aFlags );
+
+    /**
+     * Clears flag(s).
+     */
+    inline void ClearFlag( TUint32 aFlags );
+
+    /**
+    * Gets flag value.
+    */
+    inline TUint32 Value() const;
+
+    /**
+    * Sets flag value.
+    */
+    inline void SetValue( TUint32 aValue );
+
+private:
+
+    // Current flags
+    TUint32 iFlags;
+
+    };
+
+/**
+ *  TVtUpdateableFlagContainer
+ *
+ *  A flag container with Update() method that can be called to get
+ *  flags updated in one pass.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUpdateableFlagContainer ) : public TVtFlagContainer
+    {
+public:
+
+    /**
+    * Issues flag updation.
+    */
+    inline void Update();
+
+private:
+
+    /**
+    * Called when flags needs to be updated (as a result to call Update()).
+    */
+    virtual void UpdateFlags() = 0;
+
+    };
+
+#include "tvtflagcontainer.inl"
+
+#endif // T_VTFLAGCONTAINER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/tvtflagcontainer.inl	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,90 @@
+/*
+* 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:  Flag container class inline methods.
+*
+*/
+
+
+// -----------------------------------------------------------------------------
+// TVtFlagContainer::TVtFlagContainer
+// -----------------------------------------------------------------------------
+//
+TVtFlagContainer::TVtFlagContainer()
+    {
+    Clear();
+    }
+
+// -----------------------------------------------------------------------------
+// TVtFlagContainer::Clear
+// -----------------------------------------------------------------------------
+//
+void TVtFlagContainer::Clear()
+    {
+    iFlags = 0;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtFlagContainer::IsFlag
+// -----------------------------------------------------------------------------
+//
+TBool TVtFlagContainer::IsFlag( TUint32 aFlags ) const
+    {
+    return ( iFlags & aFlags );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtFlagContainer::SetFlag
+// -----------------------------------------------------------------------------
+//
+void TVtFlagContainer::SetFlag( TUint32 aFlags )
+    {
+    iFlags |= aFlags;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtFlagContainer::ClearFlag
+// -----------------------------------------------------------------------------
+//
+void TVtFlagContainer::ClearFlag( TUint32 aFlags )
+    {
+    iFlags &= ~aFlags;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtFlagContainer::Value
+// -----------------------------------------------------------------------------
+//
+TUint32 TVtFlagContainer::Value() const
+    {
+    return iFlags;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtFlagContainer::SetValue
+// -----------------------------------------------------------------------------
+//
+void TVtFlagContainer::SetValue( TUint32 aValue )
+    {
+    iFlags = aValue;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUpdateableFlagContainer::Update
+// -----------------------------------------------------------------------------
+//
+void TVtUpdateableFlagContainer::Update()
+    {
+    Clear();
+    UpdateFlags();
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/tvtuiaudiostate.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,121 @@
+/*
+* 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:  Audio state class definition.
+*
+*/
+
+
+#ifndef T_VTUIAUDIOSTATE_H
+#define T_VTUIAUDIOSTATE_H
+
+#include <e32base.h>
+
+#include "tvtflagcontainer.h"
+
+class CVtEngModel;
+
+/**
+ *  TVtUiAudioState
+ *
+ *  Contains status information about video telephony audio.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUiAudioState ) : public TVtUpdateableFlagContainer
+    {
+public:
+
+    /**
+     * Constructor
+     *
+     * @param aModel Reference to VT engine model.
+     */
+    inline TVtUiAudioState( CVtEngModel& aModel );
+
+    /**
+     * Return whether audio is enabled or not.
+     *
+     * @return ETrue if audio is enabled EFalse otherwise.
+     */
+    inline TBool IsAudio() const;
+
+    /**
+     * Return whether BT handsfree can be activated or not.
+     *
+     * @return ETrue if BT handsfree can be activated EFalse otherwise.
+     */
+    inline TBool CanActivateBtHf() const;
+
+    /**
+     * Return whether BT handsfree can be deactivated or not.
+     *
+     * @return ETrue if BT handsfree can be deactivated EFalse otherwise.
+     */
+    inline TBool CanDeactivateBtHf() const;
+
+    /**
+     * Return whether loudspeaker can be activated or not.
+     *
+     * @return ETrue if loudpseaker can be activated EFalse otherwise.
+     */
+    inline TBool CanActivateLoudspeaker() const;
+
+    /**
+     * Return whether loudspeaker can be deactivated or not.
+     *
+     * @return ETrue if loudspeaker can be deactivated EFalse otherwise.
+     */
+    inline TBool CanDeactivateLoudspeaker() const;
+
+    /**
+     * Return whether or not audio is permanently stopped.
+     *
+     * @return ETrue if audio is permanently stopped.
+     */
+    inline TBool IsAudioPermanentlyStopped() const;
+
+private: // from TVtUpdateableFlagContainer
+
+    /**
+     * @see TVtUpdateableFlagContainer::UpdateFlags
+     */
+    void UpdateFlags();
+
+private:
+
+    // Enumeration for audio state flags.
+    enum TFlags
+        {
+        /** Is set if audio is currently enabled. */
+        EIsAudio = ( 1<<0 ),
+        /** Is set if BT handsfree can be activated. */
+        ECanActivateBtHf = ( 1<<1 ),
+        /** Is set if BT handsfree can be deactivated. */
+        ECanDeactivateBtHf = ( 1<<2 ),
+        /** Is set if loudspeaker can be activated. */
+        ECanActivateLoudspeaker = ( 1<<3 ),
+        /** Is set if loudspeaker can be deactivated. */
+        ECanDeactivateLoudspeaker = ( 1<<4 ),
+        /** Set if audio is permanently stopped */
+        EIsAudioPermanentlyStopped = ( 1<<5 )
+        };
+
+    // Reference to engine model instance
+    CVtEngModel& iModel;
+
+    };
+
+#include "tvtuiaudiostate.inl"
+
+#endif // T_VTUIAUDIOSTATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/tvtuiaudiostate.inl	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,80 @@
+/*
+* 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:  Audio state class inline methods.
+*
+*/
+
+
+// -----------------------------------------------------------------------------
+// TVtUiAudioState::TVtUiAudioState
+// -----------------------------------------------------------------------------
+//
+TVtUiAudioState::TVtUiAudioState( CVtEngModel& aModel )
+: iModel( aModel )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAudioState::IsAudio
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiAudioState::IsAudio() const
+    {
+    return IsFlag( EIsAudio );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAudioState::CanActivateBtHf
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiAudioState::CanActivateBtHf() const
+    {
+    return IsFlag( ECanActivateBtHf );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAudioState::CanDeactivateBtHf
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiAudioState::CanDeactivateBtHf() const
+    {
+    return IsFlag( ECanDeactivateBtHf );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAudioState::CanActivateLoudspeaker
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiAudioState::CanActivateLoudspeaker() const
+    {
+    return IsFlag( ECanActivateLoudspeaker );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAudioState::CanDeactivateLoudspeaker
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiAudioState::CanDeactivateLoudspeaker() const
+    {
+    return IsFlag( ECanDeactivateLoudspeaker );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiMediaState::IsAudioPermanentlyStopped
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiAudioState::IsAudioPermanentlyStopped() const
+	{
+	return IsFlag( EIsAudioPermanentlyStopped );
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/tvtuicmdcontexttype.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,49 @@
+/*
+* 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:  Command context types.
+*
+*/
+
+
+#ifndef T_VTUICMDCONTEXTTYPE_H
+#define T_VTUICMDCONTEXTTYPE_H
+
+/**
+ * Command context types
+ *
+ * @since S60 3.2
+ */
+enum TVtUiCmdContextType
+    {
+    /** Context type not defined yet */
+    EVtUiCmdContextTypeUndefined = 0,
+
+    /** Context type menu */
+    EVtUiCmdContextTypeMenu,
+
+    /** Context type softkey */
+    EVtUiCmdContextTypeSoftkey,
+
+    /** Context type toolbar */
+    EVtUiCmdContextTypeToolbar,
+
+    /** Context type execution */
+    EVtUiCmdContextTypeExecution,
+
+    /** Context type number entry */
+    EVtUiCmdContextTypeNumberEntry
+
+    };
+
+#endif // T_VTUICMDCONTEXTTYPE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/tvtuicmdpolicypriority.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,55 @@
+/*
+* 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:  Command policy priorities.
+*
+*/
+
+
+#ifndef T_VTUICMDPOLICYPRIORITY_H
+#define T_VTUICMDPOLICYPRIORITY_H
+
+/**
+ * Command priority enumeration
+ *
+ * @since S60 3.2
+ */
+enum TVtUiCmdPolicyPriority
+    {
+    /** Undefined priority value */
+    EVtUiCmdPolicyPriorityUndefined = 0,
+
+    /** Lowest possible priority */
+    EVtUiCmdPolicyPriorityLowest = 1,
+
+    /** Number entry policy priority */
+    EVtUiCmdPolicyPriorityNumberEntry,
+
+    /** Menu policy priority */
+    EVtUiCmdPolicyPriorityMenu = 100,
+
+    /** Softkey policy priority */
+    EVtUiCmdPolicyPrioritySoftkey = 200,
+
+    /** Toolbar policy priority */
+    EVtUiCmdPolicyPriorityToolbar = 300,
+
+    /** Primary policy priority, must be highest */
+    EVtUiCmdPolicyPriorityPrimary,
+
+    /** Highest possible priority */
+    EVtUiCmdPolicyPriorityHighest = EVtUiCmdPolicyPriorityPrimary
+
+    };
+
+#endif // T_VTUICMDPOLICYPRIORITY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/tvtuicmdvalidatorcallback.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,89 @@
+/*
+* 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:  Command validator callback class definition.
+*
+*/
+
+
+#ifndef T_VTUICMDVALIDATORCALLBACK_H
+#define T_VTUICMDVALIDATORCALLBACK_H
+
+#include <e32base.h>
+
+/**
+ *  MVtUiCmdValidatorCallBack
+ *
+ *  Command validator callback API.
+ *
+ *  @since S60 v3.2
+ */
+class MVtUiCmdValidatorCallBack
+    {
+
+public:
+
+    /**
+     * Invokes callback call.
+     */
+    virtual TBool Call( TInt ) const = 0;
+
+    };
+
+/**
+ *  TVtUiCmdValidatorCallBack
+ *
+ *  Validator callback wrapper to maintain type safety. Also allows use of
+ *  different types of instances for invocation of callback.
+ *
+ *  @since S60 v3.2
+ */
+template < class T >
+NONSHARABLE_CLASS( TVtUiCmdValidatorCallBack )
+: public MVtUiCmdValidatorCallBack
+    {
+
+    // Callback method type definition
+    typedef TBool ( T::*TCallBackMethod )( TInt ) const;
+
+public:
+
+    /**
+     * Constructor
+     *
+     * @param aInstance Instance on which callback method will be called.
+     * @param aMethod Callback method to be called.
+     */
+    TVtUiCmdValidatorCallBack( const T& aInstance, TCallBackMethod aMethod );
+
+    /**
+     * Executes callback.
+     *
+     * @param aParameter Callback parameter, e.g. command Id or resource Id.
+     * @return Callback result.
+     */
+    TBool Call( TInt aParameter ) const;
+
+private:
+
+    // Instance from which callback method will be invoke
+    const T* iInstance;
+
+    // Callback method pointer
+    TCallBackMethod iMethod;
+
+    };
+
+#include "tvtuicmdvalidatorcallback.inl"
+
+#endif // T_VTUICMDVALIDATORCALLBACK_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/tvtuicmdvalidatorcallback.inl	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,39 @@
+/*
+* 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:  Command validator callback class inline methods.
+*
+*/
+
+
+// -----------------------------------------------------------------------------
+// TVtUiCmdValidatorCallBack< T >::TVtUiCmdValidatorCallBack
+// -----------------------------------------------------------------------------
+//
+template < class T >
+TVtUiCmdValidatorCallBack< T >::TVtUiCmdValidatorCallBack(
+    const T& aInstance, TCallBackMethod aMethod )
+    : iInstance( &aInstance ), iMethod( aMethod )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiCmdValidatorCallBack< T >::Call
+// -----------------------------------------------------------------------------
+//
+template < class T >
+TBool TVtUiCmdValidatorCallBack< T >::Call( TInt aCommandId ) const
+    {
+    return ( iInstance->*iMethod )( aCommandId );
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/tvtuicommandmodifierpriority.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,47 @@
+/*
+* 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:  Command modifier priorities.
+*
+*/
+
+
+#ifndef VTUICOMMANDMODIFIERPRIORITIES_H
+#define VTUICOMMANDMODIFIERPRIORITIES_H
+
+/**
+ * Enumerates Modifier priorities
+ *
+ * @since S60 3.2
+ */
+enum TVtUiCmdModifierPriority
+    {
+    /** Undefined priority value */
+    EVtUiCmdModifierPriorityUndefined = 0,
+
+    /** Lowest possible priority */
+    EVtUiCmdModifierPriorityLowest = 1,
+
+    /** Menu Modifier priority */
+    EVtUiCmdModifierPriorityToolbar = 100,
+
+    /** Menu Modifier priority */
+    EVtUiCmdModifierPriorityNumberEntry = 101,
+
+    /** Highest possible priority */
+    EVtUiCmdModifierPriorityHighest = 500,
+    };
+
+#endif      // VTUICOMMANDMODIFIERPRIORITIES_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/tvtuilocalvariation.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,231 @@
+/*
+* 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:  Video Telephone local variation class definition.
+*
+*/
+
+
+#ifndef T_VTUILOCALVARIATION_H
+#define T_VTUILOCALVARIATION_H
+
+#include <e32base.h>
+
+#include "tvtflagcontainer.h"
+
+// User selectable Call answer status values
+const TInt KAllwaysQuery = 0;
+const TInt KAllwaysAllow = 2;
+const TInt KNumberOfTbButtons = 6;
+
+/**
+ *  TVtUiVariationBase
+ *
+ *  Base class for local variation classes.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUiVariationBase ) : public TVtFlagContainer
+    {
+public:
+
+     /**
+     * Reads variations from central reposityory.
+     * and set default value in case error
+     */
+    virtual void ReadL( const TInt adefault = -1 );
+
+protected:
+
+    /**
+     * Returns UID of the repository to be read.
+     */
+    virtual const TUid& Uid() const = 0;
+
+    /**
+     * ID of the key inside repository to be read.
+     */
+    virtual TUint32 Key() const = 0;
+
+    /**
+     * Gets key value.
+     */
+    virtual TUint32 ReceiveValue() const;
+
+    };
+
+/**
+ *  TVtUiVideoTelephonyVariation
+ *
+ *  Video Telephony variation class. Reads VT local variation flags from the
+ *  CenRep and contains methods to query flag states. This class should be
+ *  instanced only once and same instance should be passesd as reference to
+ *  modules that need this local variation information.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUiVideoTelephonyVariation ) : public TVtUiVariationBase
+    {
+
+public:
+
+    /**
+     * Return whether or not ScalingMethodENearest is set in local variation.
+     *
+     * @return ETrue if ScalingMethodENearest local variation flag is set,
+     * EFalse otherwise.
+     */
+    inline TBool IsScalingMethodENearest() const;
+
+    /**
+     * Return whether or not ScalingMethodEBilinear is set in local variation.
+     *
+     * @return ETrue if ScalingMethodEBilinear local variation flag is set,
+     * EFalse otherwise.
+     */
+    inline TBool IsScalingMethodEBilinear() const;
+
+    /**
+     * Return whether or not EnableBitReversal is set in local variation.
+     *
+     * @return ETrue if EnableBitReversal local variation flag is set, EFalse
+     * otherwise.
+     */
+    inline TBool IsEnableBitReversal() const;
+
+private: // from TVtUiVariationBase
+
+    /**
+     * @see TVtUiVariationBase::Uid
+     */
+    const TUid& Uid() const;
+
+    /**
+     * @see TVtUiVariationBase::Key
+     */
+    TUint32 Key() const;
+    };
+
+/**
+ *  TVtUiActiveIdleVariation
+ *
+ *  Active Idle variation class. Reads AI local variation flags from the
+ *  CenRep and contains methods to query flag states. This class should be
+ *  instanced only once and same instance should be passesd as reference to
+ *  modules that need this local variation information.
+  *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUiActiveIdleVariation ) : public TVtUiVariationBase
+    {
+
+public:
+    /**
+     * Return whether or not active idle is enabled in local variation.
+     *
+     * @return ETrue if active idle is enabled in local variation.
+     */
+    TBool IsActiveIdleEnabled();
+
+private: // from TVtUiVariationBase
+
+    /**
+     * @see TVtUiVariationBase::Uid
+     */
+    const TUid& Uid() const;
+
+    /**
+     * @see TVtUiVariationBase::Key
+     */
+    TUint32 Key() const;
+
+private:
+    };
+
+/**
+ *  TVtUiGsMuteVariation
+ *
+ *  General settings (Gs) variation class. Reads GS local variation flags from the
+ *  CenRep and contains methods to query flag states and values. This class should be
+ *  instanced only once and same instance should be passesd as reference to
+ *  modules that need this local variation information.
+  *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUiGsMuteVariation ) : public TVtUiVariationBase
+    {
+
+public:
+
+    /**
+     * Returns Gs mute state value from CanRep.
+     *
+     * @return Gs mute state value.
+     */
+    TUint32 GsMuteState();
+
+private: // from TVtUiVariationBase
+
+    /**
+     * @see TVtUiVariationBase::Uid
+     */
+    const TUid& Uid() const;
+
+    /**
+     * @see TVtUiVariationBase::Key
+     */
+    TUint32 Key() const;
+
+private:
+    };
+
+/**
+ *  TVtUiToolbarVariation
+ *
+ *  Toolbar variation class. Reads TB local variation flags from the
+ *  CenRep and contains methods to query flag states and values. This class should be
+ *  instanced only once and same instance should be passesd as reference to
+ *  modules that need this local variation information.
+  *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUiToolbarVariation ) : public TVtUiVariationBase
+    {
+
+public:
+    /**
+     * Returns number of toolbar buttons from CanRep.
+     *
+     * @return number of toolbar buttons.
+     */
+    TUint32 NumberOfButtons();
+
+private: // from TVtUiVariationBase
+
+    /**
+     * @see TVtUiVariationBase::Uid
+     */
+    const TUid& Uid() const;
+
+    /**
+     * @see TVtUiVariationBase::Key
+     */
+    TUint32 Key() const;
+
+private:
+    };
+
+
+#include "tvtuilocalvariation.inl"
+
+#endif // T_VTUILOCALVARIATION_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/tvtuilocalvariation.inl	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,48 @@
+/*
+* 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:  Video Telephone local variation class inline methods.
+*
+*/
+
+
+#include "VideoTelephonyVariant.hrh"
+
+// TVtUiVideoTelephonyVariation
+
+// -----------------------------------------------------------------------------
+// TVtUiVideoTelephonyVariation::IsScalingMethodENearest
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiVideoTelephonyVariation::IsScalingMethodENearest() const
+    {
+    return IsFlag( KVTLVFlagScalingMethodENearest );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiVideoTelephonyVariation::IsScalingMethodEBilinear
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiVideoTelephonyVariation::IsScalingMethodEBilinear() const
+    {
+    return IsFlag( KVTLVFlagScalingMethodEBilinear );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiVideoTelephonyVariation::IsEnableBitReversal
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiVideoTelephonyVariation::IsEnableBitReversal() const
+    {
+    return IsFlag( KVTLVFlagEnableBitReversal );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/tvtuimediastate.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,216 @@
+/*
+* 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:  Media state class definition.
+*
+*/
+
+
+#ifndef T_VTUIMEDIASTATE_H
+#define T_VTUIMEDIASTATE_H
+
+#include <e32base.h>
+
+#include "tvtflagcontainer.h"
+
+class MVtEngMedia;
+class MVtEngCommandHandler;
+
+/**
+ *  TVtUiMediaState
+ *
+ *  Contains information about media's (video) current status.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUiMediaState ) : public TVtUpdateableFlagContainer
+    {
+public:
+
+    /**
+     * Constructor.
+     *
+     * @param aMedia Reference to VT engine media object.
+     * @param aCommandHandler Reference to command handler object.
+     */
+    inline TVtUiMediaState( MVtEngMedia& aMedia,
+        MVtEngCommandHandler& aCommandHandler );
+
+    /**
+     * Return whether or not video is being sent.
+     *
+     * @return ETrue if video is being sent.
+     */
+    inline TBool IsVideo() const;
+
+    /**
+     * Return whether or not any camera is available in device.
+     *
+     * @return ETrue if any camera is available in device.
+     */
+    inline TBool HasCamera() const;
+
+    /**
+     * Return whether or not freeze is supported for active video source.
+     *
+     * @return ETrue if freeze is supported for active video source.
+     */
+    inline TBool IsFreezeSupported() const;
+
+    /**
+     * Return whether or not active video source is frozen.
+     *
+     * @return ETrue if video is frozen.
+     */
+    inline TBool IsFrozen() const;
+
+    /**
+     * Return whether or not share is active.
+     *
+     * @return ETrue if still image is being shared.
+     */
+    inline TBool IsSharing() const;
+
+    /**
+     * Return whether or not sharing is being initialized.
+     *
+     * @return ETrue if still image sharing is being initialized.
+     */
+    inline TBool IsInitializingShare() const;
+
+    /**
+     * Return whether or not primary camera is being used by VT.
+     *
+     * @return ETrue if primary camera is being used.
+     */
+    inline TBool IsPrimaryCameraInUse() const;
+
+    /**
+     * Return whether or not secondary camera is being used by VT.
+     *
+     * @return ETrue if secondary camera is being used.
+     */
+    inline TBool IsSecondaryCameraInUse() const;
+
+    /**
+     * Return whether or not it is possible to share.
+     *
+     * @return ETrue if sharing is not allowed.
+     */
+    inline TBool IsNotAbleToShare() const;
+
+    /**
+     * Return whether or not device has primary camera.
+     *
+     * @return ETrue if primary camera is available.
+     */
+    inline TBool HasPrimaryCamera() const;
+
+    /**
+     * Return whether or not device has secondary camera.
+     *
+     * @return ETrue if secondary camera is available.
+     */
+    inline TBool HasSecondaryCamera() const;
+
+    /**
+     * Return whether or not active video source supports contrast setting.
+     *
+     * @return ETrue if contrast settingis allowed.
+     */
+    inline TBool IsContrastSupported() const;
+
+    /**
+     * Return whether or not active video source supports white balance setting.
+     *
+     * @return ETrue if white balance setting is allowed.
+     */
+    inline TBool IsWhiteBalanceSupported() const;
+
+    /**
+     * Return whether or not active video source supports color tone setting.
+     *
+     * @return ETrue if colour tone setting is allowed.
+     */
+    inline TBool IsColorToneSupported() const;
+
+    /**
+     * Return whether or not active video source supports brightness setting.
+     *
+     * @return ETrue if brightness setting is allowed.
+     */
+    inline TBool IsBrightnessSupported() const;
+    
+    /**
+     * Return whether or not video is permanently stopped.
+     *
+     * @return ETrue if video is permanently stopped.
+     */
+    inline TBool IsVideoPermanentlyStopped() const;
+
+private: // from TVtUpdateableFlagContainer
+
+    /**
+     * @see TVtUpdateableFlagContainer::UpdateFlags
+     */
+    void UpdateFlags();
+
+private:
+
+    // Enumeration for media state flags.
+    enum TFlags
+        {
+        /** Set if video is currently enabled. */
+        EIsVideo = ( 1<<0 ),
+        /** Set if device has any cameras */
+        EHasCamera = ( 1<<1 ),
+        /** Set if current active video source supports freezing */
+        EIsFreezeSupported = ( 1<<2 ),
+        /** Set if current active video source is frozen */
+        EIsFrozen = ( 1<<3 ),
+        /** Set if sharing is active */
+        EIsSharing = ( 1<<4 ),
+        /** Set if sharing is being initialized */
+        EIsInitializingShare = ( 1<<5 ),
+        /** Set if device's primary camera is being used by VT application */
+        EIsPrimaryCameraInUse = ( 1<<6 ),
+        /** Set if device's secondary camera is being used by VT application */
+        EIsSecondaryCameraInUse = ( 1<<7 ),
+        /** Set if it is not possible to share */
+        EIsNotAbleToShare = ( 1<<8 ),
+        /** Set if device has primary camera */
+        EHasPrimaryCamera = ( 1<<9 ),
+        /** Set if device has secondary camera */
+        EHasSecondaryCamera = ( 1<<10 ),
+        /** Set if current video source supports contrast setting */
+        EIsContrastSupported = ( 1<<11 ),
+        /** Set if current video source supports white balance setting */
+        EIsWhiteBalanceSupported = ( 1<<12 ),
+        /** Set if current video source supports color tone setting */
+        EIsColorToneSupported = ( 1<<13 ),
+        /** Set if current video source supports brightness setting */
+        EIsBrightnessSupported = ( 1<<14 ),
+        /** Set if video is permanently stopped*/
+        EIsVideoPermanentlyStopped = ( 1<<15 )
+        };
+
+    // Reference to engine media instance.
+    MVtEngMedia& iMedia;
+
+    // Reference to engine command handler instance.
+    MVtEngCommandHandler& iCommandHandler;
+    };
+
+#include "tvtuimediastate.inl"
+
+#endif // T_VTUIMEDIASTATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/tvtuimediastate.inl	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,171 @@
+/*
+* 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:  Media state class inline methods.
+*
+*/
+
+
+// -----------------------------------------------------------------------------
+// TVtUiMediaState::TVtUiMediaState
+// -----------------------------------------------------------------------------
+//
+TVtUiMediaState::TVtUiMediaState( MVtEngMedia& aMedia,
+    MVtEngCommandHandler& aCommandHandler  )
+    : iMedia( aMedia ), iCommandHandler( aCommandHandler )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiMediaState::IsVideo
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiMediaState::IsVideo() const
+    {
+    return IsFlag( EIsVideo );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiMediaState::HasCamera
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiMediaState::HasCamera() const
+    {
+    return IsFlag( EHasCamera );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiMediaState::IsFreezeSupported
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiMediaState::IsFreezeSupported() const
+    {
+    return IsFlag( EIsFreezeSupported );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiMediaState::IsFrozen
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiMediaState::IsFrozen() const
+    {
+    return IsFlag( EIsFrozen );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiMediaState::IsSharing
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiMediaState::IsSharing() const
+    {
+    return IsFlag( EIsSharing );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiMediaState::IsInitializingShare
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiMediaState::IsInitializingShare() const
+    {
+    return IsFlag( EIsInitializingShare );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiMediaState::IsPrimaryCameraInUse
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiMediaState::IsPrimaryCameraInUse() const
+    {
+    return IsFlag( EIsPrimaryCameraInUse );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiMediaState::IsSecondaryCameraInUse
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiMediaState::IsSecondaryCameraInUse() const
+    {
+    return IsFlag( EIsSecondaryCameraInUse );
+    }
+    
+// -----------------------------------------------------------------------------
+// TVtUiMediaState::IsNotAbleToShare
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiMediaState::IsNotAbleToShare() const
+    {
+    return IsFlag( EIsNotAbleToShare );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiMediaState::HasPrimaryCamera
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiMediaState::HasPrimaryCamera() const
+    {
+    return IsFlag( EHasPrimaryCamera );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiMediaState::HasSecondaryCamera
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiMediaState::HasSecondaryCamera() const
+    {
+    return IsFlag( EHasSecondaryCamera );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiMediaState::IsContrastSupported
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiMediaState::IsContrastSupported() const
+    {
+    return IsFlag( EIsContrastSupported );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiMediaState::IsWhiteBalanceSupported
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiMediaState::IsWhiteBalanceSupported() const
+    {
+    return IsFlag( EIsWhiteBalanceSupported );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiMediaState::IsColorToneSupported
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiMediaState::IsColorToneSupported() const
+    {
+    return IsFlag( EIsColorToneSupported );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiMediaState::IsBrightnessSupported
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiMediaState::IsBrightnessSupported() const
+    {
+    return IsFlag( EIsBrightnessSupported );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiMediaState::IsVideoPermanentlyStopped
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiMediaState::IsVideoPermanentlyStopped() const
+	{
+	return IsFlag( EIsVideoPermanentlyStopped );
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/tvtuistates.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,679 @@
+/*
+* Copyright (c) 2007 - 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:  UI states class definition.
+*
+*/
+
+
+#ifndef T_VTUISTATES_H
+#define T_VTUISTATES_H
+
+#include <e32base.h>
+
+#include "tvtuimediastate.h"
+#include "tvtuiaudiostate.h"
+
+class CVtEngModel;
+class MVtEngCameraPreferences;
+
+/**
+ *  TVtUiStates
+ *
+ *  Contains information about Application UI's current status.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUiStates ) : public TVtFlagContainer
+    {
+
+public: // enumerations
+
+    /**
+    * Application execution state (will be set by the app state classes)
+    */
+    enum TVtUiExecState
+        {
+        EExecStateStarting,
+        EExecStateRunning,
+        EExecStateResetting,
+        EExecStateFinalized
+        };
+
+public:
+
+    /**
+     * Constructor.
+     */
+    TVtUiStates( CVtEngModel& aModel );
+
+    /**
+     * Updates UI states.
+     */
+    void Update();
+
+    /**
+     * Return whether or not ColorToneSetting
+     * is supported by current camera.
+     *
+     * @return ETrue if at least one color tone setting is available,
+     * EFalse otherwise.
+     */
+    TBool IsColorToneSettingAvailable() const;
+
+    /**
+     * Return whether or not WhiteBalanceSetting
+     * is supported by current camera.
+     *
+     * @return ETrue if at least one white balance setting is available,
+     * EFalse otherwise.
+     */
+    TBool IsWhiteBalanceSettingAvailable() const;
+
+    /**
+     * Return whether or not ontrast setting
+     * is supported by current camera.
+     *
+     * @return ETrue if at contrast setting is available,
+     * EFalse otherwise.
+     */
+    TBool IsContrastSettingAvailable() const;
+
+    /**
+     * Return whether or not brightness setting
+     * is supported by current camera.
+     *
+     * @return ETrue if brightness setting is available,
+     * EFalse otherwise.
+     */
+    TBool IsBrightnessSettingAvailable() const;
+
+    /**
+     * Returns reference to media state object
+     *
+     * @return Reference to media state object.
+     */
+    inline const TVtUiMediaState& MediaState() const;
+
+    /**
+     * Returns reference to audio state object
+     *
+     * @return Reference to audio state object.
+     */
+    inline const TVtUiAudioState& AudioState() const;
+
+    /**
+     * Sets or clears EIsCLIReceived
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetCLIReceived( TBool aSet );
+
+    /**
+     * Check if EIsCLIReceived is set
+     *
+     * @return ETrue if EIsCLIReceived is set EFalse otherwise
+     */
+    inline TBool IsCLIReceived() const;
+
+    /**
+     * Sets or clears EIsLayoutChangeNeeded
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetLayoutChangeNeeded( TBool aSet );
+
+    /**
+     * Check if EIsLayoutChangeNeeded is set
+     *
+     * @return ETrue if EIsLayoutChangeNeeded is set EFalse otherwise
+     */
+    inline TBool IsLayoutChangeNeeded() const;
+
+    /**
+     * Sets or clears EIsBlankControlAdded
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetBlankControlAdded( TBool aSet );
+
+    /**
+     * Check if EIsBlankControlAdded is set
+     *
+     * @return ETrue if EIsBlankControlAdded is set EFalse otherwise
+     */
+    inline TBool IsBlankControlAdded() const;
+
+    /**
+     * Sets or clears EIsLaunchOkOptionsMenu
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetLaunchOkOptionsMenu( TBool aSet );
+
+    /**
+     * Check if EIsLaunchOkOptionsMenu is set
+     *
+     * @return ETrue if EIsLaunchOkOptionsMenu is set EFalse otherwise
+     */
+    inline TBool IsLaunchOkOptionsMenu() const;
+
+    /**
+     * Sets or clears EIsDeviceLockOn
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetDeviceLockOn( TBool aSet );
+
+    /**
+     * Check if EIsDeviceLockOn is set
+     *
+     * @return ETrue if EIsDeviceLockOn is set EFalse otherwise
+     */
+    inline TBool IsDeviceLockOn() const;
+
+    /**
+     * Sets or clears EDetailsReceived
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetDetailsReceived( TBool aSet );
+
+    /**
+     * Check if EDetailsReceived is set
+     *
+     * @return ETrue if EDetailsReceived is set EFalse otherwise
+     */
+    inline TBool IsDetailsReceived() const;
+
+    /**
+     * Sets or clears EWaitingForFirstFrame
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetWaitingForFirstFrame( TBool aSet );
+
+    /**
+     * Check if EWaitingForFirstFrame is set
+     *
+     * @return ETrue if EWaitingForFirstFrame is set EFalse otherwise
+     */
+    inline TBool IsWaitingForFirstFrame() const;
+
+    /**
+     * Sets or clears EUseSQCif
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetUseSQCif( TBool aSet );
+
+    /**
+     * Check if EUseSQCif is set
+     *
+     * @return ETrue if EUseSQCif is set EFalse otherwise
+     */
+    inline TBool IsUseSQCif() const;
+
+    /**
+     * Sets or clears EIsViewFindersInitialPlaceContextPane
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetViewFindersInitialPlaceContextPane( TBool aSet );
+
+    /**
+     * Check if EIsViewFindersInitialPlaceContextPane is set
+     *
+     * @return ETrue if EIsViewFindersInitialPlaceContextPane is set EFalse
+     * otherwise
+     */
+    inline TBool IsViewFindersInitialPlaceContextPane() const;
+
+    /**
+     * Sets or clears EViewFinderToMainPane
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetViewFinderToMainPane( TBool aSet );
+
+    /**
+     * Check if EViewFinderToMainPane is set
+     *
+     * @return ETrue if EViewFinderToMainPane is set EFalse otherwise
+     */
+    inline TBool IsViewFinderToMainPane() const;
+
+    /**
+     * Sets or clears EIsCaptureModeOn
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetCaptureModeOn( TBool aSet );
+
+    /**
+     * Check if EIsCaptureModeOn is set
+     *
+     * @return ETrue if EIsCaptureModeOn is set EFalse otherwise
+     */
+    inline TBool IsCaptureModeOn() const;
+
+    /**
+     * Sets or clears EIsThisApplicationForeground
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetThisApplicationForeground( TBool aSet );
+
+    /**
+     * Check if EIsThisApplicationForeground is set
+     *
+     * @return ETrue if EIsThisApplicationForeground is set EFalse otherwise
+     */
+    inline TBool IsThisApplicationForeground() const;
+
+    /**
+     * Sets or clears EIsDisableBlindSetting
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetDisableBlindSetting( TBool aSet );
+
+    /**
+     * Check if EIsDisableBlindSetting is set
+     *
+     * @return ETrue if EIsDisableBlindSetting is set EFalse otherwise
+     */
+    inline TBool IsDisableBlindSetting() const;
+
+    /**
+     * Sets or clears EExecShowCameraInUse
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetExecShowCameraInUse( TBool aSet );
+
+    /**
+     * Check if EExecShowCameraInUse is set
+     *
+     * @return ETrue if EExecShowCameraInUse is set EFalse otherwise
+     */
+    inline TBool IsExecShowCameraInUse() const;
+
+     /**
+     * Check if EIsZoomModeOn is set
+     *
+     * @return ETrue if EIsZoomModeOn is set EFalse otherwise
+     */
+    inline TBool IsZoomModeOn() const;
+
+    /**
+     * Sets or clears EIsZoomModeOn
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetZoomModeOn( TBool aSet );
+
+    /**
+    * Check if EIsWhiteBalanceModeOn is set
+    *
+    * @return ETrue if EIsWhiteBalanceModeOn is set EFalse otherwise
+    */
+    inline TBool IsWhiteBalanceModeOn() const;
+
+    /**
+     * Sets or clears EIsWhiteBalanceModeOn
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetWhiteBalanceModeOn( TBool aSet );
+
+    /**
+    * Check if EIsColorToneModeOn is set
+    *
+    * @return ETrue if EIsColorToneModeOn is set EFalse otherwise
+    */
+    inline TBool IsColorToneModeOn() const;
+
+    /**
+     * Sets or clears EIsColorToneModeOn
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetColorToneModeOn( TBool aSet );
+
+    /**
+    * Check if EBrightnessModeOn is set
+    *
+    * @return ETrue if EBrightnessModeOn is set EFalse otherwise
+    */
+    inline TBool IsBrightnessModeOn() const;
+
+    /**
+     * Sets or clears EBrightnessModeOn
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetBrightnessModeOn( TBool aSet );
+
+    /**
+     *  Check if EContrastModeOn is set
+     *
+     *  @return ETrue if EContrastModeOn is set EFalse otherwise
+     */
+    inline TBool IsContrastModeOn() const;
+
+    /**
+     * Sets or clears EContrastModeOn
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetContrastModeOn( TBool aSet );
+
+    /**
+     * Sets or clears EIsNumberEntryOpen
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetIsNumberEntryOpen( TBool aSet );
+
+    /**
+     * Check if EIsNumberEntryOpen is set
+     *
+     * @return ETrue if EIsNumberEntryOpen is set EFalse otherwise
+     */
+    inline TBool IsNumberEntryOpen() const;
+
+    /**
+     * Sets or clears EIsToolbarAvailable
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetIsToolbarAvailable( TBool aSet );
+
+    /**
+     * Check if IsToolbarAvailable is set
+     *
+     * @return ETrue if IsToolbarAvailable is set EFalse otherwise
+     */
+    inline TBool IsToolbarAvailable() const;
+
+    /**
+     * Sets or clears EIsWaitingCall
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetWaitingCall( TBool aSet );
+
+	/**
+     * Check if there is waiting video/voice call.
+     *
+     * @return ETrue if waiting call is ongoing, EFalse otherwise
+     */
+    inline TBool IsWaitingCall() const;
+
+     /**
+     * Sets or clears EIsSelectingShare
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+     inline void SetSelectingShare( TBool aSet );
+
+	/**
+     * Check if user is selecting file to be shared.
+     *
+     * @return ETrue if user is selecting file, EFalse otherwise
+     */
+    inline TBool IsSelectingShare() const;
+
+     /**
+     * Sets or clears EIsDialerOpen
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetIsDialerOpen( TBool aSet );
+
+	/**
+     * Check if video DTMF dialer is open.
+     *
+     * @return ETrue if dialer is open, EFalse otherwise
+     */
+    inline TBool IsDialerOpen() const;
+
+    /**
+     * Sets or clears EIsFixedToolbarVisible
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetIsFixedToolbarVisible( TBool aSet );
+
+	/**
+     * Check if fixed toolbar is visible.
+     *
+     * @return ETrue iftoolbar is visible, EFalse otherwise
+     */
+    inline TBool IsFixedToolbarVisible() const;
+
+    /**
+     * Sets or clears EIsDialerActivating
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetIsDialerActivating( TBool aSet );
+
+	/**
+     * Check if dialer is being activated
+     *
+     * @return ETrue if dialer is being activated, EFalse otherwise
+     */
+    inline TBool IsDialerActivating() const;
+
+    /**
+     * Adjusts command activating reference count
+     *
+     * @param aSet ETrue if setting will be increased, EFalse if
+     * decreased.
+     */
+    void SetIsCommandActivating( TBool aSet );
+
+	/**
+     * Check if command activating ref.count is greater than zero
+     *
+     * @return ETrue if any command is being activated, EFalse otherwise
+     */
+    inline TBool IsCommandActivating() const;
+
+    /**
+     *  Check if EIsVolumeModeOn is set
+     *
+     *  @return ETrue if EIsVolumeModeOn is set EFalse otherwise
+     */
+    inline TBool IsVolumeModeOn() const;
+
+    /**
+     * Sets or clears EIsVolumeModeOn
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetVolumeModeOn( TBool aSet );
+
+    /**
+     *  Check if EIsVideoQualityModeOn is set
+     *
+     *  @return ETrue if EIsVideoQualityModeOn is set EFalse otherwise
+     */
+    inline TBool IsVideoQualityModeOn() const;
+
+    /**
+     * Sets or clears EIsVideoQualityModeOn
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+     
+    inline void SetVideoQualityModeOn( TBool aSet );    
+    /**
+     * Sets or clears EIsFloatingToolbarVisible
+     *
+     * @param aSet ETrue if setting will be set, EFalse otherwise.
+     */
+    inline void SetIsFloatingToolbarVisible( TBool aSet );
+
+    /**
+     * Check if floating toolbar is visible.
+     *
+     * @return ETrue iftoolbar is visible, EFalse otherwise
+     */
+    inline TBool IsFloatingToolbarVisible() const;
+
+    /**
+    * Returns application's execution state.
+    * @return Application's current execution state.
+    */
+    TVtUiExecState ExecState() const;
+
+private: // methods to be accessed only by certain classes (see friends)
+
+    /**
+    * Sets application's execution state.
+    * @param aState Application's new execution state.
+    */
+    void SetExecState( const TVtUiExecState aState );
+
+private:
+
+    // Enumeration for ui state flags.
+    enum TFlags
+        {
+        /** Set if CLI is received */
+        EIsCLIReceived = ( 1<<0 ),
+
+        /** Set if layout change is needed */
+        EIsLayoutChangeNeeded = ( 1<<1 ),
+
+        /** Set if blank control has been added to control stack */
+        EIsBlankControlAdded = ( 1<<2 ),
+
+        /** Set if launch ok in options menu */
+        EIsLaunchOkOptionsMenu = ( 1<<3 ),
+
+        /** Set if device lock is on */
+        EIsDeviceLockOn = ( 1<<4 ),
+
+        /** Set if details have been received */
+        EDetailsReceived = ( 1<<5 ),
+
+        /** Set if waiting for first frame */
+        EWaitingForFirstFrame = ( 1<<6 ),
+
+        /** Set if SQCIF is being used */
+        EUseSQCif = ( 1 << 7 ),
+
+        /** Set if images was in context pane before freeze, unset if not */
+        EViewFindersInitialPlaceContextPane = ( 1<<8 ),
+
+        /** Set if viewfinder has to be moved to mainpane, when imageshare is
+            ready */
+        EViewFinderToMainPane = ( 1<<9 ),
+
+        /** Set if capture mode is on, unset if off */
+        EIsCaptureModeOn = ( 1<<10 ),
+
+        /** Set if application on foreground */
+        EIsThisApplicationForeground = ( 1<<11 ),
+
+        /** Set if blind setting should be temporarily disabled.
+            This is used in preventing blind bitmap from flashing
+            while operations involving multiple engine commands/events
+            take place (e.g. 'Swap image places' and layout switch). */
+        EIsDisableBlindSetting = ( 1<<12 ),
+
+        /** Set if camera in use note should be shown. */
+        EExecShowCameraInUse = ( 1<<13 ),
+
+        /** Set if zooming slider indicators is shown in navi pane.
+            Toolbar also dims other toolbar controls except zoom
+            mode control.*/
+        EIsZoomModeOn = ( 1<<14 ),
+
+        /** Set if contrast mode is on, unset if off */
+        EIsContrastModeOn = ( 1<<15 ),
+
+        /** Set if brightness mode is on, unset if off */
+        EIsBrightnessModeOn = ( 1<<16 ),
+
+        /** Set if number entry is open in UI (do not use this flag in new code)
+         */
+        EIsNumberEntryOpen = ( 1<<17 ),
+
+        /** Set if toolbar is available in UI */
+        EIsToolbarAvailable = ( 1<<18 ),
+
+		/** Set if waiting call exists */
+        EIsWaitingCall = ( 1<<19 ),
+
+        /** Set if initializing share */
+        EIsSelectingShare = ( 1<<20 ),
+
+        /** Set if initializing share */
+        EIsDialerOpen = ( 1<<21 ),
+
+        /** Set if white balance mode is on, unset if off */
+        EIsWhiteBalanceModeOn = ( 1<<22 ),
+
+        /** Set if color tone mode is on, unset if off */
+        EIsColorToneModeOn = ( 1 << 23 ),
+
+        /** Set if fixed toolar is visible, unset if not */
+        EIsFixedToolbarVisible = ( 1 << 24 ),
+
+        /** Set if dialer is being activated, unset if not */
+        EIsDialerActivating = ( 1 << 25 ),
+
+        /** Set if volume mode is on, unset if off */
+        EIsVolumeModeOn = ( 1 << 26 ),
+
+        /** Set if floating toolar is visible, unset if not */
+        EIsFloatingToolbarVisible = ( 1 << 27 ),
+        
+        /** Set if video quality mode is on, unset if not */
+        EIsVideoQualityModeOn = ( 1 << 28 )
+        };
+
+    // Engine media state
+    TVtUiMediaState iMediaState;
+
+    // Engine audio state
+    TVtUiAudioState iAudioState;
+
+    // Refrence to engine
+    CVtEngModel& iModel;
+
+    // Refrence to camera prefrences
+    MVtEngCameraPreferences* iCameraPref;
+
+    // Application execution state
+    TVtUiExecState iExecState;
+    
+    // Reference count of command activating. Enables command to be set
+    // active several times and action to take only when count is reset
+    // back to zer0.
+    TUint iCommandActivatingRefCount;
+
+private: // friends
+
+    friend class TVtUiAppStateBase;
+
+    };
+
+#include "tvtuistates.inl"
+
+#endif // T_VTUISTATES_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/commands/tvtuistates.inl	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,596 @@
+/*
+* Copyright (c) 2007 - 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:  UI states class inline methods.
+*
+*/
+
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::MediaState
+// -----------------------------------------------------------------------------
+//
+const TVtUiMediaState& TVtUiStates::MediaState() const
+    {
+    return iMediaState;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::AudioState
+// -----------------------------------------------------------------------------
+//
+const TVtUiAudioState& TVtUiStates::AudioState() const
+    {
+    return iAudioState;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetCLIReceived
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetCLIReceived( TBool aSet )
+    {
+    aSet ? SetFlag( EIsCLIReceived ) : ClearFlag( EIsCLIReceived );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsCLIReceived
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsCLIReceived() const
+    {
+    return IsFlag( EIsCLIReceived );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetLayoutChangeNeeded
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetLayoutChangeNeeded( TBool aSet )
+    {
+    aSet ? SetFlag( EIsLayoutChangeNeeded ) :
+        ClearFlag( EIsLayoutChangeNeeded );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsLayoutChangeNeeded
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsLayoutChangeNeeded() const
+    {
+    return IsFlag( EIsLayoutChangeNeeded );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetBlankControlAdded
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetBlankControlAdded( TBool aSet )
+    {
+    aSet ? SetFlag( EIsBlankControlAdded ) :
+        ClearFlag( EIsBlankControlAdded );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsBlankControlAdded
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsBlankControlAdded() const
+    {
+    return IsFlag( EIsBlankControlAdded );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetLaunchOkOptionsMenu
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetLaunchOkOptionsMenu( TBool aSet )
+    {
+    aSet ? SetFlag( EIsLaunchOkOptionsMenu ) :
+        ClearFlag( EIsLaunchOkOptionsMenu );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsLaunchOkOptionsMenu
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsLaunchOkOptionsMenu() const
+    {
+    return IsFlag( EIsLaunchOkOptionsMenu );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetDeviceLockOn
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetDeviceLockOn( TBool aSet )
+    {
+    aSet ? SetFlag( EIsDeviceLockOn ) :
+        ClearFlag( EIsDeviceLockOn );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsDeviceLockOn
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsDeviceLockOn() const
+    {
+    return IsFlag( EIsDeviceLockOn );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetDetailsReceived
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetDetailsReceived( TBool aSet )
+    {
+    aSet ? SetFlag( EDetailsReceived ) :
+        ClearFlag( EDetailsReceived );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsDetailsReceived
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsDetailsReceived() const
+    {
+    return IsFlag( EDetailsReceived );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetWaitingForFirstFrame
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetWaitingForFirstFrame( TBool aSet )
+    {
+    aSet ? SetFlag( EWaitingForFirstFrame ) :
+        ClearFlag( EWaitingForFirstFrame );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsWaitingForFirstFrame
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsWaitingForFirstFrame() const
+    {
+    return IsFlag( EWaitingForFirstFrame );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetUseSQCif
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetUseSQCif( TBool aSet )
+    {
+    aSet ? SetFlag( EUseSQCif ) :
+        ClearFlag( EUseSQCif );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsUseSQCif
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsUseSQCif() const
+    {
+    return IsFlag( EUseSQCif );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetViewFindersInitialPlaceContextPane
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetViewFindersInitialPlaceContextPane( TBool aSet )
+    {
+    aSet ? SetFlag( EViewFindersInitialPlaceContextPane ) :
+        ClearFlag( EViewFindersInitialPlaceContextPane );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsViewFindersInitialPlaceContextPane
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsViewFindersInitialPlaceContextPane() const
+    {
+    return IsFlag( EViewFindersInitialPlaceContextPane );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetViewFinderToMainPane
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetViewFinderToMainPane( TBool aSet )
+    {
+    aSet ? SetFlag( EViewFinderToMainPane ) :
+        ClearFlag( EViewFinderToMainPane );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsViewFinderToMainPane
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsViewFinderToMainPane() const
+    {
+    return IsFlag( EViewFinderToMainPane );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetCaptureModeOn
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetCaptureModeOn( TBool aSet )
+    {
+    aSet ? SetFlag( EIsCaptureModeOn ) :
+        ClearFlag( EIsCaptureModeOn );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsCaptureModeOn
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsCaptureModeOn() const
+    {
+    return IsFlag( EIsCaptureModeOn );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetThisApplicationForeground
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetThisApplicationForeground( TBool aSet )
+    {
+    aSet ? SetFlag( EIsThisApplicationForeground ) :
+        ClearFlag( EIsThisApplicationForeground );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsThisApplicationForeground
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsThisApplicationForeground() const
+    {
+    return IsFlag( EIsThisApplicationForeground );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetDisableBlindSetting
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetDisableBlindSetting( TBool aSet )
+    {
+    aSet ? SetFlag( EIsDisableBlindSetting ) :
+        ClearFlag( EIsDisableBlindSetting );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsDisableBlindSetting
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsDisableBlindSetting() const
+    {
+    return IsFlag( EIsDisableBlindSetting );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetExecShowCameraInUse
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetExecShowCameraInUse( TBool aSet )
+    {
+    aSet ? SetFlag( EExecShowCameraInUse ) :
+        ClearFlag( EExecShowCameraInUse );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsExecShowCameraInUse
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsExecShowCameraInUse() const
+    {
+    return IsFlag( EExecShowCameraInUse );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsZoomModeOn
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsZoomModeOn() const
+    {
+    return IsFlag( EIsZoomModeOn );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetZoomModeOn
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetZoomModeOn( TBool aSet )
+    {
+    aSet ? SetFlag( EIsZoomModeOn ) :
+        ClearFlag( EIsZoomModeOn );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsWhiteBalanceModeOn
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsWhiteBalanceModeOn() const
+    {
+    return IsFlag( EIsWhiteBalanceModeOn );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetWhiteBalanceModeOn
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetWhiteBalanceModeOn( TBool aSet )
+    {
+    aSet ? SetFlag( EIsWhiteBalanceModeOn ) :
+        ClearFlag( EIsWhiteBalanceModeOn );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsColorToneModeOn
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsColorToneModeOn() const
+    {
+    return IsFlag( EIsColorToneModeOn );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetColorToneModeOn
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetColorToneModeOn( TBool aSet )
+    {
+    aSet ? SetFlag( EIsColorToneModeOn ) :
+        ClearFlag( EIsColorToneModeOn );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsBrightnessModeOn
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsBrightnessModeOn() const
+    {
+    return IsFlag( EIsBrightnessModeOn );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetBrightnessModeOn
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetBrightnessModeOn( TBool aSet )
+    {
+    aSet ? SetFlag( EIsBrightnessModeOn ) :
+        ClearFlag( EIsBrightnessModeOn );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsContrastModeOn
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsContrastModeOn() const
+    {
+    return IsFlag( EIsContrastModeOn );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetContrastModeOn
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetContrastModeOn( TBool aSet )
+    {
+    aSet ? SetFlag( EIsContrastModeOn ) :
+        ClearFlag( EIsContrastModeOn );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetIsNumberEntryOpen
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetIsNumberEntryOpen( TBool aSet )
+    {
+    aSet ? SetFlag( EIsNumberEntryOpen ) :
+        ClearFlag( EIsNumberEntryOpen );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsNumberEntryOpen
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsNumberEntryOpen() const
+    {
+    return IsFlag( EIsNumberEntryOpen );
+    }
+
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetIsToolbarAvailable
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetIsToolbarAvailable( TBool aSet )
+    {
+    aSet ? SetFlag( EIsToolbarAvailable ) :
+        ClearFlag( EIsToolbarAvailable );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsToolbarAvailable
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsToolbarAvailable() const
+    {
+    return IsFlag( EIsToolbarAvailable );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates:::SetWaitingCall
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetWaitingCall( TBool aSet )
+    {
+    aSet ? SetFlag( EIsWaitingCall ) :
+        ClearFlag( EIsWaitingCall );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsWaitingCall
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsWaitingCall() const
+    {
+    return IsFlag( EIsWaitingCall );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates:::SetSelectingShare
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetSelectingShare( TBool aSet )
+    {
+    aSet ? SetFlag( EIsSelectingShare ) :
+        ClearFlag( EIsSelectingShare );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsSelectingShare
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsSelectingShare() const
+    {
+    return IsFlag( EIsSelectingShare );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetIsDialerOpen
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetIsDialerOpen( TBool aSet )
+    {
+    aSet ? SetFlag( EIsDialerOpen ) :
+        ClearFlag( EIsDialerOpen );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsDialerOpen
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsDialerOpen() const
+    {
+    return IsFlag( EIsDialerOpen );
+    }
+
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetIsFixedToolbarVisible
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetIsFixedToolbarVisible( TBool aSet )
+    {
+    aSet ? SetFlag( EIsFixedToolbarVisible ) :
+        ClearFlag( EIsFixedToolbarVisible );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsFixedToolbarVisible
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsFixedToolbarVisible() const
+    {
+    return IsFlag( EIsFixedToolbarVisible );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetIsDialerActivating
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetIsDialerActivating( TBool aSet )
+    {
+    aSet ? SetFlag( EIsDialerActivating ) :
+        ClearFlag( EIsDialerActivating );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsDialerActivating
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsDialerActivating() const
+    {
+    return IsFlag( EIsDialerActivating );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsCommandActivating
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsCommandActivating() const
+    {
+    return iCommandActivatingRefCount > 0;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsVolumeModeOn
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsVolumeModeOn() const
+    {
+    return IsFlag( EIsVolumeModeOn );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetVolumeModeOn
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetVolumeModeOn( TBool aSet )
+    {
+    aSet ? SetFlag( EIsVolumeModeOn ) :
+        ClearFlag( EIsVolumeModeOn );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetIsFloatingToolbarVisible
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetIsFloatingToolbarVisible( TBool aSet )
+    {
+    aSet ? SetFlag( EIsFloatingToolbarVisible ) :
+        ClearFlag( EIsFloatingToolbarVisible );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsFloatingToolbarVisible
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsFloatingToolbarVisible() const
+    {
+    return IsFlag( EIsFloatingToolbarVisible );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsVideoQualityModeOn
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsVideoQualityModeOn() const
+    {
+    return IsFlag( EIsVideoQualityModeOn );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetVideoQualityModeOn
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetVideoQualityModeOn( TBool aSet )
+    {
+    aSet ? SetFlag( EIsVideoQualityModeOn ) :
+        ClearFlag( EIsVideoQualityModeOn );
+    }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/compman/cvtuicomponentmanager.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,435 @@
+/*
+* 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:  Component manager implementation.
+*
+*/
+
+
+#ifndef C_VTUICOMPONENTMANAGER_H
+#define C_VTUICOMPONENTMANAGER_H
+
+#include <coeaui.h>
+
+#include "mvtuicomponentmanager.h"
+#include "mvtuicomponent.h"
+#include "tvtuicomponentstate.h"
+
+/**
+ *  CVtUiComponentManager
+ *
+ *  Component manager implementation.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CVtUiComponentManager )
+    : public CBase, public MVtUiComponentManager
+    {
+
+public: // public methods
+
+    /**
+     * Static constructor.
+     *
+     * @return Newly created instance of CVtUiComponentManager class.
+     */
+    static CVtUiComponentManager* NewL();
+
+    /**
+     * Destructor.
+     */
+    ~CVtUiComponentManager();
+
+    /**
+     * Called when a Ws event is delivered.
+     *
+     * @param aEvent Window server event.
+     * @param aDestination Event destination control.
+     */
+    void HandleWsEventL( const TWsEvent& aEvent, CCoeControl *aDestination );
+
+    /**
+     * Called when a resource change is informed.
+     *
+     * @param aType Type of change.
+     */
+    void HandleResourceChangeL( TInt aType );
+
+    /**
+     * Called when a keyevent needs handling.
+     *
+     * @param aKeyEvent Key event structure.
+     * @param aCode Event code.
+     */
+    TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType);
+
+    /**
+     * Called when a layout change is informed.
+     *
+     */
+    void HandleLayoutChangeL();
+
+public: // from MVtUiComponentManager
+
+    /**
+     * @see MVtUiComponentManager::ChangeWsEventRegistration
+     */
+    TInt ChangeWsEventRegistration( MVtUiWindowServerEventObserver& aObserver,
+        TAction aAction );
+
+    /**
+     * @see MVtUiComponentManager::ChangeResourceChangeRegistration
+     */
+    TInt ChangeResourceChangeRegistration(
+        MVtUiResourceChangeObserver& aObserver,
+        TAction aAction );
+
+    /**
+     * @see MVtUiComponentManager::ChangeKeyEventRegistration
+     */
+    TInt ChangeKeyEventRegistration( MVtUiKeyEventObserver& aComponent,
+        TAction aAction );
+
+    /**
+     * @see MVtUiComponentManager::ChangeLayoutChangeRegistration
+     */
+    TInt ChangeLayoutChangeRegistration( MVtUiLayoutChangeObserver& aComponent,
+        TAction aAction );
+
+    /**
+     * @see MVtUiComponentManager::ChangeComponentRegistration
+     */
+    TInt ChangeComponentRegistration( TVtUiComponentState& aComponentState,
+        TAction aAction );
+
+    /**
+     * @see MVtUiComponentManager::RequestActivation
+     */
+    void RequestActivationL( MVtUiComponent::TComponentId aId );
+
+    /**
+     * @see MVtUiComponentManager::DeActivateComponentL
+     */
+    void DeActivateComponentL( MVtUiComponent::TComponentId aId );
+
+private: // private classes
+
+    /**
+     * TStateListItem
+     *
+     * Contains one component's state in state list.
+     */
+    class TStateListItem
+        {
+
+    public: // public type definitions
+
+		/**
+		 * Compare by key type definition.
+		 */
+        typedef TInt (*TKeyCmpFunc)
+            ( const MVtUiComponent::TComponentId*, const TStateListItem& );
+
+    public: // public methods
+
+		/**
+		 * Constructor
+		 *
+		 * @param aState Constant reference to component state.
+		 */
+        TStateListItem( const TVtUiComponentState& aState );
+
+		/**
+		 * Returns component id.
+		 *
+		 * @return Component's id.
+		 */
+        MVtUiComponent::TComponentId ComponentId() const;
+
+		/**
+		 * Returns component's state.
+		 *
+		 * @return Component's state.
+		 */
+        TVtUiComponentState::TState State() const;
+
+		/**
+		 * Sets component's state.
+		 *
+		 * @param aState Component's new state.
+		 */
+        void SetState( TVtUiComponentState::TState aState );
+
+		/**
+		 * Returns const reference to block list.
+		 *
+		 * @return Constant reference to block list.
+		 */
+        const TVtUiBlockList& BlockList() const;
+
+		/**
+		 * Sets this object as root.
+		 */
+        void SetRoot();
+
+		/**
+		 * Returns ETrue if this object is root.
+		 *
+		 * @return ETrue if this item is root, EFalse otherwise.
+		 */
+        TBool IsRoot() const;
+
+		/**
+		 * Sets this object as visited.
+		 */
+        void SetVisited();
+
+		/**
+		 * Returns ETrue if this object is visited.
+		 *
+		 * @return ETrue if this item has been visited, EFalse otherwise.
+		 */
+        TBool IsVisited() const;
+
+    public: // static public methods
+
+		/**
+		 * Returns TLinearOrder for RArray operations. Ordered by component id.
+		 *
+		 * @return TLinearOrder insntace for RArray operations. Ordering will
+		 * be done based on component Id.
+		 */
+        static TLinearOrder< TStateListItem > LinearOrder();
+
+		/**
+		 * Returns key order function for RArray operations.
+		 *
+		 * @return Key compare method pointer for RArray operations.
+		 */
+        static TKeyCmpFunc KeyOrder();
+
+		/**
+		 * Returns TLinearOrder for RArray operations. Ordered by component
+		 * state.
+		 *
+		 * @return TLinearOrder instance for RArray operations. Ordering will
+		 * be done based on component state.
+		 */
+        static TLinearOrder< TStateListItem > StateOrder();
+
+    private: // static private methods
+
+		/**
+		 * StateListItem compare method.
+		 */
+        static TInt ItemCmpFunc( const TStateListItem& aItem1,
+            const TStateListItem& aItem2 );
+
+		/**
+		 * StateListItem vs key compare method.
+		 */
+        static TInt KeyCmpFunc( const MVtUiComponent::TComponentId* aKey,
+            const TStateListItem& aItem );
+
+		/**
+		 * StateListItem by state compare method.
+		 */
+        static TInt StateCmpFunc( const TStateListItem& aItem1,
+            const TStateListItem& aItem2 );
+
+    private: // data
+
+        // Component's ID
+        MVtUiComponent::TComponentId iComponentId;
+
+        // Component's state
+        TVtUiComponentState::TState iState;
+
+        // Block mask (IDs which will be blocked by this component)
+        TVtUiBlockListBitField iBlockList;
+
+        // ETrue if this component is the root compoent, EFalse otherwise
+        TBool iIsRoot;
+
+        // ETrue if this component has been already visited (i.e. evaluated)
+        TBool iIsVisited;
+
+        };
+
+    /**
+     * TStateList
+     *
+     * Contains list of component states. This list can be modified and when all
+     * modifications are ready, the whole list can be commited at once.
+     *
+     */
+    class TStateList
+        {
+
+    public: // public methods
+
+		/**
+		 * Constructor.
+		 */
+        TStateList();
+
+		/**
+		 * Destructor.
+		 */
+        ~TStateList();
+
+		/**
+		 * Add new item to state list.
+		 *
+		 * @param aItem Reference to item to be added to the list.
+		 */
+        void AddItemL( TStateListItem& aItem );
+
+		/**
+		 * Returns number of items in state list.
+		 *
+		 * @return Number of items on list.
+		 */
+        TInt ItemCount() const;
+
+		/**
+		 * Find state list item by component id.
+		 *
+		 * @param aComponentId Id of component that will be searched.
+		 * @return Index of the component or KErrNotFound if component with
+		 * given Id could not be found.
+		 */
+        TInt FindItem( MVtUiComponent::TComponentId aComponentId ) const;
+
+		/**
+		 * Returns reference to state list item at given index.
+		 *
+		 * @param aIndex Index of the item to be fetched.
+		 * @return Reference to item at given index.
+		 */
+        TStateListItem& At( TInt aIndex );
+
+		/**
+		 * Returns const reference to state list item at given index.
+		 *
+		 * @param aIndex Index of the item to be fetched.
+		 * @return Constant reference to item at given index.
+		 */
+        const TStateListItem& At( TInt aIndex ) const;
+
+		/**
+		 * Sorts list using given linear order.
+		 *
+		 * @param aOrder TLinearObject that will be used in sorting.
+		 */
+        void Sort(
+            TLinearOrder< CVtUiComponentManager::TStateListItem > aOrder );
+
+    private: // data
+
+        // List items
+        RArray< TStateListItem > iItems;
+
+        };
+
+private: // enumerations
+
+    /**
+     * Activation actions
+     */
+    enum TActivationAction
+        {
+        /** Hide component */
+        EHide,
+        /** Show component */
+        EShow
+        };
+
+private:
+
+    /**
+     * Constructor
+     */
+    CVtUiComponentManager();
+
+    /**
+     * 2nd constructor, may leave
+     */
+    void ConstructL();
+
+    /**
+     * Adds or removes component from given array.
+     */
+    template < class T >
+    TInt AddOrRemoveComponent( RPointerArray< T >& aArray, T* aComponent,
+        TAction aAction );
+
+    /**
+     * Returns linear order object for array operations.
+     */
+    static TLinearOrder< MVtUiComponent > ComponentOrder();
+
+    /**
+     * Returns linear order object for array operations.
+     */
+    static TLinearOrder< TVtUiComponentState > ComponentStateOrder();
+
+    /**
+     * Starts activation process.
+     */
+    void DoActivationL( TVtUiComponentState& aComponentState,
+        TVtUiComponentState::TState aNewState );
+
+    /**
+     * Starts deactivation process.
+     */
+    void DoDeactivationL( TVtUiComponentState& aComponentState,
+        TVtUiComponentState::TState aNewState );
+
+    /**
+     * Calculates activation.
+     */
+    void CalculateActivationL( const TVtUiBlockList& aBlockList,
+        const TVtUiBlockList& aExclList, TStateList& aStateList,
+        TActivationAction aAction );
+
+    /**
+     * Commits activation calculation results.
+     */
+    void CommitStateListL( TStateList& aList );
+
+    /**
+     * Constructs component state list before the calculations.
+     */
+    void ConstructStateListL( TStateList& aList );
+
+private: // data
+
+    // Window server event listeners
+    RPointerArray< MVtUiWindowServerEventObserver > iWsEventObservers;
+
+    // Resource change event listeners
+    RPointerArray< MVtUiResourceChangeObserver > iResourceChangeObservers;
+
+    // Key event listeners
+    RPointerArray< MVtUiKeyEventObserver > iKeyEventObservers;
+    
+    // Layout change listeners
+    RPointerArray< MVtUiLayoutChangeObserver > iLayoutChangeObservers;
+
+    // Registered components
+    RPointerArray< TVtUiComponentState > iComponents;
+
+    };
+
+#endif // C_VTUICOMPONENTMANAGER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/compman/mvtuicomponent.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,96 @@
+/*
+* 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:  VT UI Component API definition.
+*
+*/
+
+
+#ifndef M_VTUICOMPONENT_H
+#define M_VTUICOMPONENT_H
+
+#include <e32base.h>
+
+class CCoeControl;
+
+/**
+ *  MVtUiComponent
+ *
+ *  UI component API definition.
+ *
+ *  @since S60 v3.2
+ */
+class MVtUiComponent
+    {
+
+public: // enumerations
+
+    /**
+     * Component Ids.
+     */
+    enum TComponentId
+        {
+        /** NULL component Id */
+        EComponentIdNull =                  0,
+        /** Toobar component Id */
+        EComponentIdToolbar =               ( 1 << 0 ),
+        /** Number entry component Id */
+        EComponentIdNumberEntry =           ( 1 << 1 ),
+        /** Video quality component id */
+        EComponentIdVideoQuality  =         ( 1 << 2 ),
+        /** White balance feature id */
+        EComponentIdWhiteBalance =          ( 1 << 3 ),
+        /** Color tone component id */
+        EComponentIdColorTone =             ( 1 << 4 ),
+        /** Brightness component id */
+        EVComponentIdBrightness =           ( 1 << 5 ),
+        /** Contrast component id */
+        EVComponentIdContrast =             ( 1 << 6 ),
+        /** Dialer component id  */
+        EComponentIdDialer =                ( 1 << 7 ),
+        /** Volume component id  */
+        EComponentIdVolume =                ( 1 << 8 ),
+        /** Zoom component id  */
+        EComponentIdZoom =                  ( 1 << 9 )
+        };
+
+public: // public methods
+
+    /**
+     * Returns component id.
+     *
+     * @return Component's id.
+     */
+    virtual TComponentId ComponentId() const = 0;
+
+    /**
+     * Returns this component as a CCoeControl.
+     *
+     * @return Component as a pointer to CCoeControl or NULL if this component
+     * is not inherited from CCoeControl.
+     */
+    virtual CCoeControl* ComponentAsControl() = 0;
+
+    /**
+     * Activates component.
+     */
+    virtual void DoActivateL() = 0;
+
+    /**
+     * Deactivates component.
+     */
+    virtual void DoDeactivateL() = 0;
+
+    };
+
+#endif // M_VTUICOMPONENT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/compman/mvtuicomponentmanager.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,131 @@
+/*
+* 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:  VT UI Component manager API definition.
+*
+*/
+
+
+#ifndef M_VTUICOMPONENTMANAGER_H
+#define M_VTUICOMPONENTMANAGER_H
+
+#include <e32base.h>
+
+#include "mvtuicomponent.h"
+
+class TVtUiComponentState;
+class MVtUiWindowServerEventObserver;
+class MVtUiResourceChangeObserver;
+class MVtUiKeyEventObserver;
+class MVtUiLayoutChangeObserver;
+
+/**
+ *  MVtUiComponentManager
+ *
+ *  Component manager API definition.
+ *
+ *  @since S60 v3.2
+ */
+class MVtUiComponentManager
+    {
+
+public: // enumerations
+
+    /**
+     * Registration action.
+     */
+    enum TAction
+        {
+        /** Register action */
+        ERegister,
+
+        /** Unregister action */
+        EUnregister
+        };
+
+public: // public methods
+
+    /**
+     * Register or unregister Ws event listening.
+     *
+     * @param aComponent Observer whose registration will be changed.
+     * @param aAction Registration action
+     * @see MVtUiComponentManager::TAction
+     * @return KErrNone if registration action succeeded.
+     */
+    virtual TInt ChangeWsEventRegistration(
+        MVtUiWindowServerEventObserver& aComponent,
+        TAction aAction ) = 0;
+
+    /**
+     * Register or unregister resource change event listening.
+     *
+     * @param aComponent Observer whose registration will be changed.
+     * @param aAction Registration action
+     * @see MVtUiComponentManager::TAction
+     * @return KErrNone if registration action succeeded.
+     */
+    virtual TInt ChangeResourceChangeRegistration(
+        MVtUiResourceChangeObserver& aComponent,
+        TAction aAction ) = 0;
+
+    /**
+     * Register or unregister key event listening.
+     *
+     * @param aComponent Observer whose registration will be changed.
+     * @param aAction Registration action
+     * @see MVtUiComponentManager::TAction
+     * @return KErrNone if registration action succeeded.
+     */
+    virtual TInt ChangeKeyEventRegistration( MVtUiKeyEventObserver& aComponent,
+        TAction aAction ) = 0;
+
+    /**
+     * Register or unregister layout change listening.
+     *
+     * @param aComponent Observer whose registration will be changed.
+     * @param aAction Registration action
+     * @see MVtUiComponentManager::TAction
+     * @return KErrNone if registration action succeeded.
+     */
+    virtual TInt ChangeLayoutChangeRegistration( MVtUiLayoutChangeObserver& aComponent,
+        TAction aAction ) = 0;
+
+    /**
+     * Register or unregister component.
+     *
+     * @param aComponent Observer whose registration will be changed.
+     * @param aAction Registration action
+     * @see MVtUiComponentManager::TAction
+     * @return KErrNone if registration action succeeded.
+     */
+    virtual TInt ChangeComponentRegistration( TVtUiComponentState& aComponent,
+        TAction aAction ) = 0;
+
+    /**
+     * Request component activation.
+     *
+     * @param aId Id of component to be activated.
+     */
+    virtual void RequestActivationL( MVtUiComponent::TComponentId aId ) = 0;
+
+    /**
+     * Deactivate component.
+     *
+     * @param aId Id of component to be deactivated.
+     */
+    virtual void DeActivateComponentL( MVtUiComponent::TComponentId aId ) = 0;
+
+    };
+
+#endif // M_VTUICOMPONENTMANAGER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/compman/mvtuikeyeventobserver.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,50 @@
+/*
+* 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:  Key event observer API for components.
+*
+*/
+
+
+#ifndef M_VTUIKEYEVENTOBSERVER_H
+#define M_VTUIKEYEVENTOBSERVER_H
+
+#include <w32std.h>
+#include <coedef.h>
+
+/**
+ *  MVtUiKeyEventObserver
+ *
+ *  Keyevent observer API definition.
+ *
+ *  @since S60 v3.2
+ */
+class MVtUiKeyEventObserver
+    {
+
+public:
+
+    /**
+     * Called when key event handling is required.
+     *
+     * @param aEvent The key event.
+     * @param aCode The type of key event: EEventKey, EEventKeyUp or
+     * EEventKeyDown.
+     * @return Indicates whether or not the key event was used.
+     */
+    virtual TKeyResponse OfferKeyEventL( const TKeyEvent& aEvent,
+        TEventCode aCode ) = 0;
+
+    };
+
+#endif // M_VTUIKEYEVENTOBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/compman/mvtuilayoutchangeobserver.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,44 @@
+/*
+* 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:  Layout change observer API definition.
+*
+*/
+
+
+#ifndef M_VTUILAYOUTCHANGEOBSERVER_H
+#define M_VTUILAYOUTCHANGEOBSERVER_H
+
+#include <e32def.h>
+
+/**
+ *  MVtUiLayoutChangeObserver
+ *
+ *  Layout change observer API definition.
+ *
+ *  @since S60 v3.2
+ */
+class MVtUiLayoutChangeObserver
+    {
+
+public:
+
+    /**
+     * Called when layout have been changed.
+     *
+     */
+    virtual void HandleLayoutChangeL() = 0;
+
+    };
+
+#endif // M_VTUIRESOURCECHANGEOBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/compman/mvtuiresourcechangeobserver.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Resource change observer API definition.
+*
+*/
+
+
+#ifndef M_VTUIRESOURCECHANGEOBSERVER_H
+#define M_VTUIRESOURCECHANGEOBSERVER_H
+
+#include <e32def.h>
+
+/**
+ *  MVtUiResourceChangeObserver
+ *
+ *  Resource change observer API definition.
+ *
+ *  @since S60 v3.2
+ */
+class MVtUiResourceChangeObserver
+    {
+
+public:
+
+    /**
+     * Called when resources have been changed.
+     *
+     * @param aType The type of resources that have changed.
+     */
+    virtual void HandleResourceChangeL( TInt aType ) = 0;
+
+    };
+
+#endif // M_VTUIRESOURCECHANGEOBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/compman/mvtuiwindowservereventobserver.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,49 @@
+/*
+* 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:  Window Server event observer API definition.
+*
+*/
+
+
+#ifndef M_VTUIWINDOWSERVEREVENTOBSERVER_H
+#define M_VTUIWINDOWSERVEREVENTOBSERVER_H
+
+class TWsEvent;
+class CCoeControl;
+
+/**
+ *  MVtUiWindowServerEventObserver
+ *
+ *  Window Server event observer API definition.
+ *
+ *  @since S60 v3.2
+ */
+class MVtUiWindowServerEventObserver
+    {
+
+public:
+
+    /**
+     * Called when window server event handling is required.
+     *
+     * @param aEvent A window server event.
+     * @param aDestination The control associated with the event.
+     * This is only relevant for pointer events.
+     */
+    virtual void HandleWsEventL( const TWsEvent& aEvent,
+        CCoeControl* aDestination ) = 0;
+
+    };
+
+#endif // M_VTUIWINDOWSERVEREVENTOBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/compman/tvtuiblocklists.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,217 @@
+/*
+* 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:  VT UI component state definition.
+*
+*/
+
+
+#ifndef T_VTUIBLOCKLISTS_H
+#define T_VTUIBLOCKLISTS_H
+
+#include <e32base.h>
+
+#include "mvtuicomponent.h"
+
+/**
+ *  CVtUiBlockListIterator
+ *
+ *  Class for iterating through component's block list.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CVtUiBlockListIterator ) : public CBase
+    {
+
+public: // public abstract methods
+
+    /**
+     * Returns ETrue if there is more component Ids left in the iterator.
+     *
+     * @return ETrue if there is more Ids left, EFalse otherwise.
+     */
+    virtual TBool HasNext() const = 0;
+
+    /**
+     * Returns next component id.
+     *
+     * @return Next component Id.
+     */
+    virtual MVtUiComponent::TComponentId Next() = 0;
+
+    };
+
+/**
+ *  TVtUiBlockList
+ *
+ *  Base class for component block lists.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUiBlockList )
+    {
+
+public: // public methods
+
+    /**
+     * Destructor.
+     */
+    virtual ~TVtUiBlockList();
+
+public: // public abstract methods
+
+    /**
+     * Returns ETrue if block list is empty.
+     *
+     * @return ETrue if this block list is empty, EFalse otherwise.
+     */
+    virtual TBool IsEmpty() const = 0;
+
+    /**
+     * Returns ETrue if block list contains given component id.
+     *
+     * @param aId Component Id to check.
+     * @return ETrue if this block list contains given component Id, EFalse
+     * otherwise.
+     */
+    virtual TBool Contains( MVtUiComponent::TComponentId aId ) const = 0;
+
+    /**
+     * Merges this block list with given block list.
+     *
+     * @param aBlockList List to merge into this block list.
+     */
+    virtual void Union( const TVtUiBlockList& aBlockList ) = 0;
+
+    /**
+     * Returns new instance of block list iterator. Instance is owned by the
+     * caller, but it is also pushed to cleanupstack.
+     *
+     * @return Instance to block list iterator. Iterator is for this block
+     * list instance.
+     */
+    virtual CVtUiBlockListIterator* IteratorLC() const = 0;
+
+protected: // protected methods
+
+    /**
+     * Constructor.
+     */
+    TVtUiBlockList();
+
+    };
+
+/**
+ *  TVtUiBlockListBitField
+ *
+ *  Component block list in which component IDs are defined as bits (i.e.
+ *  only single bit is set per ID).
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUiBlockListBitField ) : public TVtUiBlockList
+    {
+
+public: // public methods
+
+    /**
+     * Default construct, initialized block list as empty.
+     */
+    TVtUiBlockListBitField();
+
+    /**
+     * Constructor that initializes block list.
+     *
+     * @param aBlockMask Component Ids that will be added to block list.
+     */
+    TVtUiBlockListBitField( TUint aBlockMask );
+
+public: // from
+
+    /**
+     * @see TVtUiBlockList::IsEmpty
+     */
+    TBool IsEmpty() const;
+
+    /**
+     * @see TVtUiBlockList::Contains
+     */
+    TBool Contains( MVtUiComponent::TComponentId aId ) const;
+
+    /**
+     * @see TVtUiBlockList::Union
+     */
+    void Union( const TVtUiBlockList& aBlockList );
+
+    /**
+     * @see TVtUiBlockList::IteratorLC
+     */
+    CVtUiBlockListIterator* IteratorLC() const;
+
+private: // inner classes
+
+    /**
+     * CVtUiBListIteratorBF
+     *
+     * @since S60 v3.2
+     */
+    class CVtUiBListIteratorBF : public CVtUiBlockListIterator
+        {
+
+    public: // public methods
+
+        /**
+         * Static constructor
+         *
+         * @param aBlockMask Components Ids.
+         */
+        static CVtUiBListIteratorBF* NewLC( const TUint& aBlockMask );
+
+    private: // private methods
+
+        /**
+         * Constructor
+         */
+        CVtUiBListIteratorBF( const TUint& aBlockMask );
+
+    private: // from CVtUiBlockListIterator
+
+        /**
+         * @see CVtUiBlockListIterator::HasNext
+         */
+        TBool HasNext() const;
+
+        /**
+         * @see CVtUiBlockListIterator::Next
+         */
+        MVtUiComponent::TComponentId Next();
+
+    private:  // data
+
+        // Blockmask from TVtUiBlockListBitField
+        const TUint iBlockMask;
+
+        // Current id
+        TUint iCurrent;
+
+        };
+
+private: // data
+
+    // Block list as bit field, this requires that component ids are defined
+    // as bitfields.
+    TUint iBlockMask;
+
+    };
+
+#endif // T_VTUIBLOCKLISTS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/compman/tvtuicomponentstate.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,119 @@
+/*
+* 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:  VT UI component state definition.
+*
+*/
+
+
+#ifndef T_VTUICOMPONENTSTATE_H
+#define T_VTUICOMPONENTSTATE_H
+
+#include <e32base.h>
+
+#include "tvtuiblocklists.h"
+
+/**
+ *  TVtUiComponentState
+ *
+ *  Component state definition.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( TVtUiComponentState )
+    {
+
+public: // enumerations
+
+    enum TState
+        {
+        /** Component is inactive */
+        EInactive,
+
+        /** Component is activated but some other component is blocking it */
+        EWaiting,
+
+        /** Component is active */
+        EActive
+        };
+
+public: // public methods
+
+    /**
+     * Activate component.
+     */
+    void ActivateComponentL();
+
+    /**
+     * Blocks component.
+     */
+    void BlockComponentL();
+
+    /**
+     * Deactivates component.
+     */
+    void DeActivateComponentL();
+
+    /**
+     * Returns component's state.
+     *
+     * @return Component's current state.
+     */
+    TState State() const;
+
+    /**
+     * Returns component.
+     *
+     * @return Constant reference to component.
+     */
+    const MVtUiComponent& Component() const;
+
+    /**
+     * Returns const reference to the block list.
+     *
+     * @return Constant reference to component's block list.
+     */
+    const TVtUiBlockList& BlockList() const;
+
+    /**
+     * Returns reference to the block list.
+     *
+     * @return Reference to component's block list.
+     */
+    TVtUiBlockList& BlockList();
+
+protected: // protected methods
+
+    /**
+     * Constructor
+     *
+     * @param aComponent Component for this state instance.
+     * @param aBlockList Block list for this state intance.
+     */
+    TVtUiComponentState( MVtUiComponent& aComponent,
+        const TVtUiBlockList& aBlockList );
+
+protected:
+
+    // Reference to component
+    MVtUiComponent& iComponent;
+
+    // Blocklist
+    TVtUiBlockListBitField iBlockList;
+
+    // Component's state
+    TState iState;
+
+    };
+
+#endif // T_VTUICOMPONENTSTATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/cvtuiappshutter.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,175 @@
+/*
+* 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:  Class responsible for application exit.
+*
+*/
+
+
+#ifndef C_VTUIAPPSHUTTER_H
+#define C_VTUIAPPSHUTTER_H
+
+#include <babitflags.h>
+
+#include 	<MPhCltEmergencyCallObserver.h>
+#include    <CPhCltEmergencyCall.h>
+#include    <RPhCltServer.h>
+
+class CAsyncCallBack;
+class MVtUiShutterObserver;
+class MVtUiStateContext;
+
+/**
+* Shutdown service for the application. This is singleton
+* which deletes itself when shutdown is complete.
+*
+* @since S60 v3.2
+*/                       
+class CVtUiAppShutter : public CBase
+    {
+public:          
+
+    /**
+    * Returns the instance of application shutter.
+    *
+    * @param aComms for sending call ending related commands to Phone.
+    * @param aObserver observer informed when shutdown is completed.
+    * @return the application shutter
+    */
+    static CVtUiAppShutter* InstanceL( 
+        MVtUiShutterObserver& aObserver );
+
+    /**
+    *  Starts shutdown.
+    */
+    void StartShutdown();
+
+    /**
+    * Starts shutdown because emergency call was requested by the user.
+    * If supplied number is detected other than emergency number this method
+    * leaves KErrArgument.
+    * @param aStateContext for accessing emergency number and local
+    * variation.
+    */
+    void ShutdownWithEmergencyCallL( MVtUiStateContext& aStateContext );
+                               
+    /**
+    * Callback from emergency caller.
+    */
+    void EmergencyCallDoneL();
+                                   
+private:
+
+    /**
+    * Exits the application if no pending shutdown preparation
+    * is ongoing. Deletes itself as last action.
+    */
+    void ShutdownIfReadyAndDestroy();
+
+    
+    /**
+    * Enques async callback.
+    */
+    void EnqueCallbackL( TCallBack& aCallback );
+
+    /**
+    * Asynch callback handling response to emergency call creation.
+    */
+    static TInt EmergencyResponseCallback( TAny* aAny );
+
+    /** C++ constructor */
+    CVtUiAppShutter( MVtUiShutterObserver& aObserver );
+
+    /** destructor */
+    ~CVtUiAppShutter();
+
+private: // for making shutdown with emergency call
+    class CEmergencyCaller : public CBase, private MPhCltEmergencyCallObserver
+        {
+        public:         
+            /**
+            * Dials emergency call. Object destroys itself when
+            * response is received.
+            */
+            static CEmergencyCaller* DialEmergencyL(
+                CVtUiAppShutter& aObserver,
+                MVtUiStateContext& aStateContext );
+            
+            // Destructor
+            ~CEmergencyCaller();
+            
+        private: // C++ constructor
+            
+            CEmergencyCaller( 
+                CVtUiAppShutter& aObserver, 
+                MVtUiStateContext& aStateContext );
+            
+            /**
+            * 2nd phase constructor
+            */
+            void ConstructL();
+            
+        private: // from MPhCltEmergencyCallObserver       
+            /**
+            * @see  MPhCltEmergencyCallObserver::HandleEmergencyDialL
+            */
+            virtual void HandleEmergencyDialL( const TInt aStatus );
+
+        private: // Data
+
+            // Emergency number
+            TPhCltTelephoneNumber iNumber;             
+            
+            // Phone Server session
+            RPhCltServer          iServer;
+            
+            // Emergency call handler
+            CPhCltEmergencyCall*  iEmergency;
+            
+            // Observer for callback
+            CVtUiAppShutter&      iObserver;
+
+            // State context for gettin entered numbers and local variation
+            MVtUiStateContext&    iStateContext;
+        };
+private: // Data
+
+    /**
+    * Guard flags for completing shutdown.
+    * All must be cleared before shutdown
+    * can be completed.
+    */
+    enum TShutterFlags 
+        {                               
+        /** Waiting for call on StartShutdown() */
+        EShutterWaitingStart,
+        /** Waiting for callback on emegency call request */
+        EShutterWaitingEmergencyCallback,
+        };
+    
+    // Asynch callback
+    CAsyncCallBack* iCallback;
+    
+    // guard flags          
+    TBitFlags8 iPendingStateFlags;
+     
+    // Observer to notify when application exit
+    // is allowed.
+    MVtUiShutterObserver& iObserver;
+
+    // Handles emergency call dialling    
+    CEmergencyCaller* iEmergencyCaller;
+
+    };
+
+#endif // C_VTUIAPPSHUTTER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/cvtuidtmfbuffer.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,138 @@
+/*
+* 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:  DTMF buffer definition.
+*
+*/
+
+
+#ifndef C_VTUIDTMFBUFFER_H
+#define C_VTUIDTMFBUFFER_H
+
+#include <e32base.h>
+#include "mvtuinumbersource.h"
+
+class CCoeEnv;
+class TKeyEvent;
+
+// Maximum size of the DTMF buffer
+const TInt KVtUiDTMFBufferSize = 64;
+
+/**
+*  TVtUiBaseComponentState
+*
+*  Base componentstate definition.
+*
+*  @since S60 v5.0
+*/
+class CVtUiDTMFBuffer : public CActive, public MVtUiNumberSource
+    {
+
+public:
+
+    /**
+    * Static construction method.
+    * @param aCoeEnv Reference to CoeEnv object.
+    * @return Pointer to newly created instance of CVtUiDTMFBuffer.
+    */
+    static CVtUiDTMFBuffer* NewL( const CCoeEnv& aCoeEnv );
+
+    /**
+    * C++ destructor.
+    */
+    ~CVtUiDTMFBuffer();
+
+    /**
+    * Append one character to DTMF buffer.
+    * @param aChar Character to append.
+    * @return ETrue if the given character was appended (i.e. it is a DTMF)
+    */
+    TBool Append( TChar aChar );
+
+    /**
+    * Clears the contents of the DTMF buffer.
+    */
+    void Reset();
+
+    /**
+    * Promote this instance as current number source.
+    */
+    void Activate();
+
+    /**
+    * Demote this instance from current number source position.
+    */
+    void Deactivate();
+
+public: // from MVtUiNumberSource
+
+    /**
+    * @see MVtUiNumberSource::GetContents
+    */
+    void GetContents( TDes& aContents ) const;
+
+private: // from CActive
+
+    /**
+    * @see CActive::DoCancel
+    */
+    void DoCancel();
+
+    /**
+    * @see CActive::RunL
+    */
+    void RunL();
+
+private:
+
+    /**
+    * C++ constructor
+    */
+    CVtUiDTMFBuffer( const CCoeEnv& aCoeEnv );
+
+    /**
+    * 2nd constructor, may leave.
+    */
+    void ConstructL();
+
+    /**
+    * Starts buffer modification monitoring timer. If this timer expires,
+    * buffer will be reset. Timer is restarted when new character is added to
+    * the buffer.
+    */
+    void StartTimer();
+
+    /**
+    * Called when buffer modification monitoring timer has expired.
+    */
+    void TimerExpired( TInt aError );
+
+    /**
+    * Clears the contents of the DTMF buffer.
+    */
+    void ResetBuffer();
+
+private:
+
+    // Reference to coeenv
+    const CCoeEnv& iCoeEnv;
+
+    // Timer instance
+    RTimer iTimer;
+
+    // DTMF buffer
+    TBuf< KVtUiDTMFBufferSize > iBuffer;
+
+    };
+
+#endif // C_VTUIDTMFBUFFER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/cvtuivideocontrolbase.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,354 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Base class for video control.
+*
+*/
+
+
+#ifndef C_VTUIVIDEOCONTROLBASE_H
+#define C_VTUIVIDEOCONTROLBASE_H
+
+#include    <coecntrl.h>
+#include    <AknUtils.h>
+#include    <babitflags.h>
+
+#include    "MVtUiVideoWindow.h"
+#include    "CVtUiBitmapManager.h"
+
+// FORWARD DECLARATIONS
+class CVtUiBitmapManager;
+class TAknTextLineLayout;
+class CAknsBasicBackgroundControlContext;
+/**
+ *  CVtUiVideoControlBase
+ *
+ *  Video control base class.
+ *
+ *  @since S60 v5.0
+ */
+class CVtUiVideoControlBase : public CCoeControl, public MVtUiVideoWindow
+    {
+
+protected: // enumerations
+
+    // Rendering hints
+    enum TRenderingHint
+        {
+        // If this hint is set, then control's background is filled with color
+        // at index 0. This hint is mutually exclusive with ESkinnedBackground.
+        // If neither EColoredBackground nor ESkinnedBackground is set, then
+        // no background drawing is done.
+        EColoredBackground,
+
+        // If this is set, then control's background is skinned. This hint is
+        // mutually exclusive with EColoredBackground. If neither
+        // EColoredBackground nor ESkinnedBackground is set, then no background
+        // drawing is done.
+        ESkinnedBackground,
+
+        // If this hint is set, then no blind icon is drawn.
+        ENoBlindIcon,
+
+        // If this hint is set, then no waiting text is shown.
+        ENoWaitingText
+        };
+
+public:
+
+    /**
+     * Destructor
+     */
+    ~CVtUiVideoControlBase();
+
+protected:
+
+    /**
+     * Constructor
+     */
+    CVtUiVideoControlBase( CVtUiBitmapManager& aBitmapManager );
+
+    /**
+     * 2nd constructor
+     */
+    void BaseConstructL();
+
+    /**
+    * Sets (enables) rendering hints
+    */
+    void SetRenderingHint( TRenderingHint aHint );
+
+    /**
+    * Clears (disables) rendering hints
+    */
+    void ClearRenderingHint( TRenderingHint aHint );
+
+    /**
+    * Returns reference to bitmap manager.
+    */
+    CVtUiBitmapManager& BitmapManager() const;
+
+    /**
+    * Returns pointer to bitmap with given ID.
+    */
+    CFbsBitmap* Bitmap( TVtUiBitmapPoolId aId ) const;
+
+    /**
+    * Fixes given point suitable for DP (e.g. x coordinates of the point is
+    * even).
+    */
+    TPoint AdjustPointForDP( const TPoint aPoint ) const;
+
+    /**
+    * Fixes given rect suitable for DP (e.g. x coordinates and width of the
+    * rectangle are even).
+    */
+    TRect AdjustRectForDP( const TRect aRect ) const;
+
+protected: // virtual methods
+
+    /**
+    * Gets waiting text layout.
+    */
+    virtual TAknTextLineLayout WaitingTextLayout( TInt aLine );
+
+    /**
+    * The size changed method. If you need to do special handling after the
+    * control's size has changed, overwrite this method.
+    */
+    virtual void HandleSizeChanged();
+
+    /**
+    * Draws control background using current skin. If you need special
+    * background rendering in inherited control, override this method.
+    * There is no need to check ESkinnedBackground hint again in this method
+    * because it has been checked prior to calling.
+    */
+    virtual void DrawSkinnedBackground( CWindowGc& aGc ) const;
+
+    /**
+    * Draws control background using color. If you need special
+    * background rendering in inherited control, override this method.
+    * There is no need to check EColoredBackground hint again in this method
+    * because it has been checked prior to calling.
+    */
+    virtual void DrawColoredBackground( CWindowGc& aGc ) const;
+
+    /**
+    * Draws waiting text. If you need special waiting text rendering in
+    * inherited control, override this method.
+    * There is no need to check ENoWaitingText hint again in this method
+    * because it has been checked prior to calling.
+    */
+    virtual TBool DrawWaitingText( CWindowGc& aGc ) const;
+
+    /**
+    * Draws blind icon. If you need special blind icon rendering in inherited
+    * control, override this method.
+    * There is no need to check ENoBlindIcon hint again in this method
+    * because it has been checked prior to calling.
+    */
+    virtual void DrawBlind( CWindowGc& aGc ) const;
+
+    /**
+    * Draws stream. If you need special stream rendering in inherited control,
+    * override this method. iStreamBitmap cannot be NULL if this method is
+    * called.
+    */
+    virtual void DrawStream( CWindowGc& aGc ) const;
+
+    /**
+    * Returns blitting position (top-left corner) coordinates for the stream.
+    */
+    virtual TPoint StreamBlitPosition() const;
+
+    /**
+    * Returns clipping rectangle for the stream.
+    */
+    virtual TRect StreamClippingRect() const;
+
+    /**
+    * Returns pointer to blind bitmap or NULL if no bitmap is present.
+    */
+    virtual CFbsBitmap* BlindImage() const;
+
+    /**
+    * Returns pointer to blind mask or NULL if no mask is present.
+    */
+    virtual CFbsBitmap* BlindMask() const;
+
+    /**
+    * Returns blit position for blind icon.
+    */
+    virtual TPoint BlindBlitPosition() const;
+
+public: // from MVtUiVideoWindow
+
+    /**
+    * @see MVtUiVideoWindow::Reset
+    */
+    void Reset();
+
+    /**
+    * @see MVtUiVideoWindow::SetBlind
+    */
+    void SetBlind( TBool aStatus );
+
+    /**
+    * @see MVtUiVideoWindow::SetStreamBitmap
+    */
+    void SetStreamBitmap( CFbsBitmap* aStreamBitmap );
+
+    /**
+    * @see MVtUiVideoWindow::SetStreamBitmapReserve
+    */
+    void SetStreamBitmapReserve( CFbsBitmap* aStreamBitmap );
+
+    /**
+    * @see MVtUiVideoWindow::SetWaiting
+    */
+    void SetWaiting( TBool aShowWaitingText );
+
+    /**
+    * @see MVtUiVideoWindow::Redraw
+    */
+    void Redraw();
+
+    /**
+    * @see CCoeControl::MopSupplyObject
+    */
+    TTypeUid::Ptr MopSupplyObject( TTypeUid aId );
+
+    /**
+     * Set remote video control 
+     */
+    virtual void SetRemoteVideoControl( CCoeControl* aRemoteControl );
+    
+    /**
+     * Layout the postion and the size of the remote video control
+      */
+    virtual void LayoutRemoteVideo();    
+    
+    /**
+     * Returns pointer to remote video control  or NULL if no remote video control  is present.
+     */
+    CCoeControl * RemoteVideoControl();
+    
+private: // from CCoeControl
+
+    /**
+    * @see CCoeControl::Draw
+    */
+    void Draw( const TRect& aRect ) const;
+
+    /**
+    * @see CCoeControl::SizeChanged
+    */
+    void SizeChanged();
+
+    /**
+    * @see CCoeControl::PositionChanged
+    */
+    void PositionChanged();
+
+private:
+
+    /**
+    * Redraws stream bitmap.
+    */
+    void RedrawStream();
+
+    /**
+    * Wraps waiting text if needed.
+    */
+    void WrapOnDemand();
+
+    /**
+    * Wraps waiting text.
+    */
+    void WrapWaitingTextL();
+
+    /**
+    * The draw method.
+    */
+    void DoDraw( CWindowGc& aGc ) const;
+
+    /**
+    * Draws control background.
+    */
+    void DoDrawBackground( CWindowGc& aGc ) const;
+
+    /**
+    * Draws waiting text.
+    */
+    TBool DoDrawWaitingText( CWindowGc& aGc ) const;
+
+    /**
+    * Draws blind icon.
+    */
+    void DoDrawBlind( CWindowGc& aGc ) const;
+
+    /**
+    * Draws stream.
+    */
+    void DoDrawStream( CWindowGc& aGc ) const;
+
+    TBool IsAlphaZero() const;
+
+    void SetAlpha( CWindowGc& aGc ) const;
+
+protected:
+
+    // ETrue if blind icon is shown.
+    TBool iBlindStatus;
+
+    // Reference to stream bitmap.
+    CFbsBitmap* iStreamBitmap;
+
+    // ETrue if waiting text should be shown.
+    TBool iWaitingTextShow;
+
+    // Owned wrapped waiting text.
+    HBufC* iWaitingTextWrapped;
+
+    // Owned wrapped waiting text.
+    CArrayFix< TPtrC >* iWaitingTextWrappedArray;
+
+    // First line layout of waiting text.
+    TAknLayoutText iWaitingTextLine1Layout;
+
+    // Second line layout of waiting text.
+    TAknLayoutText iWaitingTextLine2Layout;
+
+    // Owned: background context.
+    CAknsBasicBackgroundControlContext* iBgContext;
+
+    // Reference to remote video control.
+    CCoeControl* iRemoteVideoControl;    
+    
+private:
+
+    // Pointer to bitmap manager.
+    CVtUiBitmapManager* iBitmapManager;
+
+    // Rendering hints
+    TBitFlags32 iHints;
+
+    // FrameUpdate() is called from AO.
+    CAsyncCallBack* iAsyncFrameUpdated;
+
+    mutable TBool iSetAlpha;
+
+    };
+
+#endif // C_VTUIVIDEOCONTROLBASE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/cvtuifeaturebase.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,99 @@
+/*
+* 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:  CVtUiFeatureBase implementation.
+*
+*/
+
+
+#ifndef C_VTUIFEATUREBASE_H
+#define C_VTUIFEATUREBASE_H
+
+//  INCLUDES
+#include <e32base.h>
+#include "mvtuifeature.h"
+
+// CLASS DECLARATION
+class CVtUiAppUi;
+class CVtUiFeatureManager;
+
+/**
+*   Base class for Video Telephone application features.
+*
+*  @since S60 3.2
+*/
+class CVtUiFeatureBase : public CBase, public MVtUiFeature
+    {
+    public: // public methods
+        /**
+        * C++ destructor.
+        */
+        ~CVtUiFeatureBase();
+ 
+    public: // from MVtUiFeature
+
+        /** @see MVtUiFeature */
+        virtual void StartL();
+
+        /** @see MVtUiFeature */
+        virtual void Stop() = 0;
+        
+        /** @see MVtUiFeature */
+        virtual void InitFeatureL() = 0;
+        
+        /** @see MVtUiFeature */
+        TVtUiFeatureState State() const;
+        
+        /** @see MVtUiFeature */
+        TVtUiFeatureId Id() const;
+
+    protected:
+        /**
+        * C++ constructor
+        *
+        */
+        CVtUiFeatureBase( TVtUiFeatureId aId,
+            CVtUiFeatureManager& aFeatureManager );
+
+        /**
+        * BaseConstructL
+        * For child class to use.
+        * Calls constructL. 
+        */
+        void BaseConstructL();
+
+        /**
+        * Callback function that inits the features.
+        * @param aAny pointer to an instance of the class.
+        * @return always KErrNone.
+        */
+        static TInt DoInitFeaturesL( TAny* aAny );
+    
+
+    protected: // data
+        
+        // Feature's unique Id
+        const TVtUiFeatureId iId;
+        
+        // Reference to featuremanager
+        CVtUiFeatureManager& iFeatureManager;
+                
+        // Features current state
+        MVtUiFeature::TVtUiFeatureState iFeatureState;
+    
+        // Owned asynch callback.
+        CAsyncCallBack* iAsyncCallback;
+        
+    };
+
+#endif // C_VTUIFEATUREBASE_H
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/cvtuifeaturemanager.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,129 @@
+/*
+* Copyright (c) 2004-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:  Feature manager for Video Telephone application.
+*
+*/
+
+
+#ifndef C_VTUIFEATUREMANAGER_H
+#define C_VTUIFEATUREMANAGER_H
+
+//  INCLUDES
+#include    <e32std.h>
+#include    <e32base.h>
+
+// CLASS DECLARATION
+class MVtUiFeature;
+class CVtUiAppUi;
+class CVtUiFeatureBase;
+class TVtUiStates;
+class MVtUiCommandManager;
+class MVtUiComponentManager;
+class CVtEngModel;
+/**
+*  Feature manager for Video Telephone application.
+*
+*  @since S60 v3.2
+*/
+class CVtUiFeatureManager : public CBase
+    {
+    public: // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CVtUiFeatureManager* NewL( CVtUiAppUi& aAppUi,
+            TVtUiStates& aUiStates, MVtUiCommandManager& aCommandManager,
+            MVtUiComponentManager& aComponentManager );
+
+        /**
+        * Destructor.
+        */
+        ~CVtUiFeatureManager();
+
+    public:  // New functions
+
+        /**
+        * Return reference to CVtUiAppUi class.
+        */
+        CVtUiAppUi& AppUi();
+
+        /**
+        * GetFeatureById
+        */
+        MVtUiFeature* GetFeatureById( TInt aId );
+
+        /**
+        * TVtUiStates
+        */
+        TVtUiStates& UiStates();
+
+        /**
+        * Command Manager
+        */
+        MVtUiCommandManager& CommandManager();
+
+        /**
+        * Component Manager
+        */
+        MVtUiComponentManager& ComponentManager();
+        
+        /**
+        *  Return reference to CVtEngModel class.
+        */
+        CVtEngModel& Model();
+
+ private:
+
+        /**
+        * Second phase constructor
+        */
+        void ConstructL();
+
+        /**
+        * c++ constructor
+        */
+        CVtUiFeatureManager( CVtUiAppUi& aAppUi, TVtUiStates& aUiStates,
+            MVtUiCommandManager& aCommandManager,
+            MVtUiComponentManager& aComponentManager );
+
+        /**
+        * Creates all features
+        */
+        void CreateFeaturesL();
+
+    private: // data
+
+        // Feature list
+        RPointerArray< CVtUiFeatureBase > iFeatures;
+
+        // Ref to application ui.
+        CVtUiAppUi& iAppUi;
+
+        // Reference to UI states instance
+        TVtUiStates& iUiStates;
+
+         // Reference to command manager API
+        MVtUiCommandManager& iCommandManager;
+
+        // Reference to component manager API
+        MVtUiComponentManager& iComponentManager;
+        
+        // Engine model.
+        CVtEngModel* iModel;
+
+    };
+
+#endif // C_VTUIFEATUREMANAGER_H
+// End of File
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/dialer/cvtuicmdclosedialer.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,83 @@
+/*
+* 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:  Dialer close command.
+*
+*/
+
+
+#ifndef C_VTUICMDCLOSEDIALER_H
+#define C_VTUICMDCLOSEDIALER_H
+
+#include "cvtuifeaturecmdbase.h"
+
+class MVtUiCommandManager;
+
+/**
+ *  CVtUiCmdCloseDialer
+ *
+ *  @since S60 v5.0
+ */
+class CVtUiCmdCloseDialer : public CVtUiFeatureCmdBase
+    {
+
+public:
+
+    /**
+     * Static constructor
+     *
+     * @param aCommandManager Reference to command manager.
+     * @param aFeature Reference to minidialer feature.
+     * @return Newly created instance to CVtUiCmdCloseDialer.
+     */
+    static CVtUiCmdCloseDialer* NewL( MVtUiCommandManager& aCommandManager,
+        MVtUiFeature& aFeature );
+
+    /**
+     * Destructor
+     */
+    ~CVtUiCmdCloseDialer();
+
+private: // from CVtUiFeatureCmdBase
+
+    /**
+     * @see CVtUiFeatureCmdBase::HandleL
+     */
+    void HandleL();
+
+    /**
+    * @see CVtUiFeatureCmdBase::IsEnabled
+    */
+    TBool CVtUiCmdCloseDialer::IsEnabled() const;
+
+private:
+
+    /**
+     * Constructor
+     */
+    CVtUiCmdCloseDialer( MVtUiCommandManager& aCommandManager,
+        MVtUiFeature& aFeature );
+
+    /**
+     * 2nd constructor
+     */
+     void ConstructL();
+
+private:
+
+    // Reference to command manager API.
+    MVtUiCommandManager& iCommandManager;
+
+    };
+
+#endif // C_VTUICMDCLOSEDIALER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/dialer/cvtuicmdopendialer.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,71 @@
+/*
+* 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:  Dialer open command.
+*
+*/
+
+
+#ifndef C_VTUICMDOPENDIALER_H
+#define C_VTUICMDOPENDIALER_H
+
+#include "cvtuifeaturecmdbase.h"
+
+class MVtUiCommandManager;
+
+/**
+ *  CVtUiCmdOpenDialer
+ *
+ *  @since S60 v5.0
+ */
+class CVtUiCmdOpenDialer : public CVtUiFeatureCmdBase
+    {
+
+public:
+
+    /**
+     * Static constructor
+     *
+     * @param aCommandManager Reference to command manager.
+     * @param aFeature Reference to minidialer feature.
+     * @return Newly created instance to CVtUiCmdOpenDialer.
+     */
+    static CVtUiCmdOpenDialer* NewL( MVtUiCommandManager& aCommandManager,
+        MVtUiFeature& aFeature );
+
+    /**
+     * Destructor
+     */
+    ~CVtUiCmdOpenDialer();
+
+private:
+
+    /**
+     * Constructor
+     */
+    CVtUiCmdOpenDialer( MVtUiCommandManager& aCommandManager,
+        MVtUiFeature& aFeature );
+
+    /**
+     * 2nd constructor
+     */
+     void ConstructL();
+
+private:
+
+    // Reference to command manager API.
+    MVtUiCommandManager& iCommandManager;
+
+    };
+
+#endif // C_VTUICMDOPENDIALER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/dialer/cvtuidialer.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,116 @@
+/*
+* 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:  Dialer UI feature.
+*
+*/
+
+
+#ifndef C_VTUIDIALER_H
+#define C_VTUIDIALER_H
+
+#include "cvtuifeaturebase.h"
+#include "mvtuidialer.h"
+
+class CVtUiFeatureCmdBase;
+class CVtUiDialerContainer;
+
+/**
+ *  CVtUiDialer
+ *
+ *  Mini dialer UI feature definition.
+ *
+ *  @since S60 v5.0
+ */
+class CVtUiDialer : public CVtUiFeatureBase, public MVtUiDialer
+    {
+
+public:
+
+    /**
+     * Static constructor
+     * @param aFeatureManager Reference to featuremanager.
+     * @return Newly created instance to CVtUiDialer.
+     */
+    static CVtUiDialer* NewL( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+     * Destructor
+     */
+    ~CVtUiDialer();
+
+public: // from CVtUiFeatureBase
+
+    /**
+    * @see CVtUiFeatureBase::StartL
+    */
+    void StartL();
+
+    /**
+    * @see CVtUiFeatureBase::Stop
+    */
+    void Stop();
+
+    /**
+    * @see CVtUiFeatureBase::InitFeatureL
+    */
+    void InitFeatureL();
+
+private: // from MVtUiDialer
+
+    /**
+    * @see MVtUiDialer::VideoWindow
+    */
+    MVtUiVideoWindow& VideoWindow() const;
+
+    /**
+    * @see MVtUiDialer::VideoControl
+    */
+    CCoeControl& VideoControl() const;
+
+private:
+
+    /**
+     * Constructor
+     */
+    CVtUiDialer( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+     * 2nd constructor
+     */
+    void ConstructL();
+
+    /**
+     * Preapres feature before start.
+     */
+    void PrepareL();
+
+    /**
+     * Unprepares feature after stop.
+     */
+    void Unprepare();
+
+private:
+
+    // Open command
+    CVtUiFeatureCmdBase* iCmdOpen;
+
+    // Open command
+    CVtUiFeatureCmdBase* iCmdClose;
+
+    // Dialer container
+    CVtUiDialerContainer* iDialerContainer;
+
+    };
+
+#endif // C_VTUIDIALER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/dialer/cvtuidialercontainer.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,263 @@
+/*
+* 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:  Dialer container class.
+*
+*/
+
+
+#ifndef C_VTUIDIALERCONTAINER_H
+#define C_VTUIDIALERCONTAINER_H
+
+#include    <coecntrl.h>
+#include    "CVtUiAppUi.h"
+#include    "mvtuicomponent.h"
+#include    "mvtuiresourcechangeobserver.h"
+#include    "mvtuikeyeventobserver.h"
+#include    "mvtuinumbersource.h"
+#include    "tvtuicomponentstate.h"
+
+// FORWARD DECLARATIONS
+class MVtUiVideoWindow;
+class MVtUiComponentManager;
+class CVtUiBitmapManager;
+class CVtUiDialerVideoControl;
+class CVideoDTMFDialer;
+class TVtUiStates;
+class CVtUiDialerSKModifier;
+class CVtUiFeatureManager;
+class CVtUiDTMFBuffer;
+class CAknsBasicBackgroundControlContext;
+
+// CONSTANTS
+const TInt KVtUiDigitBufferSize = 128;
+
+/**
+ *  TVtUiMiniDialerComponentState
+ *
+ *  Mini dialer component state definition.
+ *
+ *  @since S60 v5.0
+ */
+class TVtUiDialerComponentState : public TVtUiComponentState
+    {
+
+public:
+
+    /**
+     * Constructor
+     */
+    TVtUiDialerComponentState( MVtUiComponent& aComponent );
+
+    };
+
+/**
+ *  CVtUiDialerContainer
+ *
+ *  Mini dialer UI feature definition.
+ *
+ *  @since S60 v5.0
+ */
+class CVtUiDialerContainer : public CCoeControl,
+    public MVtUiResourceChangeObserver, public MVtUiComponent,
+    public MVtUiNumberSource, public MVtUiKeyEventObserver
+    {
+
+public:
+
+    /**
+     * Static constructor
+     * @param aFeatureManager Reference to feature manager.
+     * @param aComponentManager Reference to component manager.
+     * @param aBitmapManager Reference to bitmap manager.
+     * @return Newly created instance of CVtUiDialerContainer.
+     */
+    static CVtUiDialerContainer*
+        NewL( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+     * Destructor
+     */
+    ~CVtUiDialerContainer();
+
+    /**
+     * Registers component to component manager's event handling mechanism.
+     * @exception May leave with error KErrAlreadyExists, if the component
+     * has already been registered.
+     */
+    void RegisterComponentL();
+
+    /**
+     * Unregisters component from component manager's event handling mechanism.
+     */
+    void UnregisterComponent();
+
+    /**
+    * Returns video window.
+    * @return Pointer to video window.
+    */
+    MVtUiVideoWindow* ComponentAsVideoWindow();
+    
+    /**
+    * @see CCoeControl::MopSupplyObject
+    */
+    TTypeUid::Ptr MopSupplyObject( TTypeUid aId );
+
+private: // from MVtUiResourceChangeObserver
+
+    /**
+    * @see MVtUiResourceChangeObserver::HandleResourceChangeL
+    */
+    void HandleResourceChangeL( TInt aType );
+
+
+private: // from MVtUiComponent
+
+    /**
+    * @see MVtUiComponent::ComponentId
+    */
+    TComponentId ComponentId() const;
+
+    /**
+    * @see MVtUiComponent::ComponentAsControl
+    */
+    CCoeControl* ComponentAsControl();
+
+    /**
+    * @see MVtUiComponent::DoActivateL
+    */
+    void DoActivateL();
+
+    /**
+    * @see MVtUiComponent::DoDeactivateL
+    */
+    void DoDeactivateL();
+
+private: // from MVtUiNumberSource
+
+    /**
+     * @see MVtUiNumberSource::GetContents
+     */
+    void GetContents( TDes& aContents ) const;
+
+private: // from MVtUiKeyEventObserver
+
+    /**
+     * @see MVtUiNumberSource::OfferKeyEventL
+     */
+    TKeyResponse OfferKeyEventL( const TKeyEvent& aEvent,
+        TEventCode aCode );
+
+private: // from CCoeControl
+
+    /**
+    * @see CCoeControl::Draw
+    */
+    void Draw( const TRect& aRect ) const;
+
+    /**
+    * @see CCoeControl::SizeChanged
+    */
+    void SizeChanged();
+
+    /**
+    * @see CCoeControl::PositionChanged
+    */
+    void PositionChanged();
+
+    /**
+    * @see CCoeControl::CountComponentControls
+    */
+    TInt CountComponentControls() const;
+
+    /**
+    * @see CCoeControl::ComponentControl
+    */
+    CCoeControl* ComponentControl( TInt aIndex ) const;
+
+private:
+
+    /**
+     * Constructor
+     */
+    CVtUiDialerContainer( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+     * 2nd constructor
+     */
+    void ConstructL( CVtUiBitmapManager& aBitmapManager );
+
+    /**
+    * Layouts this control.
+    */
+    void LayoutDialerContainer();
+
+    /**
+    * Returns dialer's rect (wrapper to VtUiLayout).
+    */
+    TRect DialerRect() const;
+
+    /**
+    * Resets digit buffer.
+    */
+    void Reset();
+
+    /**
+    * Appends new digit to digit buffer. If buffer is full, oldest digit is
+    * deleted.
+    */
+    void AppendDigit( TChar aDigit );
+
+    /**
+    * Static callback method for deactivating dialer asynchronously.
+    */
+    static TInt ASyncDoDeactivate( TAny* aSelf );
+
+private:
+
+    // Component state
+    TVtUiDialerComponentState iComponentState;
+
+    // Feature manager instance
+    CVtUiFeatureManager* iFeatureManager;
+
+    // Component manager
+    MVtUiComponentManager* iComponentManager;
+
+    // UI states
+    TVtUiStates& iUiStates;
+
+    // Video control instance
+    CVtUiDialerVideoControl* iVideoControl;
+
+    // Dialer instance
+    CVideoDTMFDialer* iDialer;
+
+    // Buffer for digits
+    CVtUiDTMFBuffer* iInputBuffer;
+
+    // Rendering mode
+    CVtUiAppUi::TRenderingMode iMode;
+
+    // Softkey modifier for dialer feature
+    CVtUiDialerSKModifier* iSKModifier;
+
+    // Asynccallback instance for handling asynchronous deactivation.
+    CAsyncCallBack* iAsyncDeactivate;
+
+    // Owned: background context.
+    CAknsBasicBackgroundControlContext* iBgContext;
+
+    };
+
+#endif // C_VTUIDIALERCONTAINER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/dialer/cvtuidialerskmodifier.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,77 @@
+/*
+* 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:  Dialer feature softkey modifier class.
+*
+*/
+
+
+#ifndef C_VTUIDIALERSKMODIFIER_H
+#define C_VTUIDIALERSKMODIFIER_H
+
+//  INCLUDES
+#include <e32base.h>
+#include "cvtuicommandmodifybase.h"
+
+// FORWARD DECLARATIONS
+class   CVtUiFeatureManager;
+
+/**
+ *  CVtUiDialerSKModifier
+ *
+ *  Modifies softkeys for dialer control.
+ *
+ *  @since S60 v5.0
+ */
+class CVtUiDialerSKModifier : public CVtUiCommandModifyBase
+    {
+
+public: // static methods
+    /**
+     * Static constructor.
+     *
+     */
+    static CVtUiDialerSKModifier* NewL( CVtUiFeatureManager& aFeatureMgr );
+
+    /**
+     * Destructor
+     */
+    ~CVtUiDialerSKModifier();
+
+public: // from base class
+
+    /**
+     * @See CVtUiCommandModifyBase::ModifyCommandsL
+     */
+    virtual void ModifyCommandsL( MVtUiCommandSetting& aCommandSettings );
+
+   /**
+     * @See CVtUiCommandModifyBase::Supports
+     */
+    virtual TBool Supports( MVtUiCommandSetting::Type aType ) const;
+
+private:
+    /**
+     * C++ constructor
+     *
+     */
+    CVtUiDialerSKModifier( CVtUiFeatureManager& aFeatureMgr );
+
+private: // data
+
+    // refrence to appui
+    CVtUiFeatureManager& iFeatureMgr;
+
+    };
+
+#endif // C_VTUIDIALERSKMODIFIER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/dialer/cvtuidialervideocontrol.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,74 @@
+/*
+* 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:  Video control.
+*
+*/
+
+
+#ifndef C_VTUIDIALERVIDEOCONTROL_H
+#define C_VTUIDIALERVIDEOCONTROL_H
+
+#include    "cvtuivideocontrolbase.h"
+
+/**
+ *  CVtUiDialerVideoControl
+ *
+ *  Mini dialer UI feature definition.
+ *
+ *  @since S60 v5.0
+ */
+class CVtUiDialerVideoControl : public CVtUiVideoControlBase
+    {
+
+public:
+
+    /**
+     * Static constructor
+     * @param aBitmapManager Reference to bitmap manager.
+     * @return Newly created instance of CVtUiDialerVideoControl.
+     */
+    static CVtUiDialerVideoControl* NewL( CVtUiBitmapManager& aBitmapManager );
+
+    /**
+     * Destructor
+     */
+    ~CVtUiDialerVideoControl();
+public:
+    /**
+    * LayoutRemoteVideo
+    */
+    void LayoutRemoteVideo();
+
+private:
+
+    /**
+     * Constructor
+     */
+    CVtUiDialerVideoControl( CVtUiBitmapManager& aBitmapManager );
+
+    /**
+    * 2nd constructor
+    */
+    void ConstructL();
+
+private: // from CVtUiVideoControlBase
+
+    /**
+    * @see CVtUiVideoControlBase::WaitingTextLayout
+    */
+    TAknTextLineLayout WaitingTextLayout( TInt aLine );
+
+    };
+
+#endif // C_VTUIDIALERVIDEOCONTROL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/dialer/mvtuidialer.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,51 @@
+/*
+* 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:  Dialer API for VT application.
+*
+*/
+
+
+#ifndef M_VTUIDIALER_H
+#define M_VTUIDIALER_H
+
+class MVtUiVideoWindow;
+class CCoeControl;
+
+/**
+ *  MVtUiDialer
+ *
+ *  Mini dialer UI feature API for AppUi.
+ *
+ *  @since S60 v5.0
+ */
+class MVtUiDialer
+    {
+
+public:
+
+    /**
+    * Get reference to video window control
+    * @return Reference to video window.
+    */
+    virtual MVtUiVideoWindow& VideoWindow() const = 0;
+
+    /**
+    * Get reference to video window control
+    * @return Reference to video control.
+    */
+    virtual CCoeControl& VideoControl() const = 0;
+
+    };
+
+#endif //
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/menu/cvtuimenucontext.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,75 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Menu context class definition.
+*
+*/
+
+
+#ifndef C_VTUIMENUCONTEXT_H
+#define C_VTUIMENUCONTEXT_H
+
+#include <e32base.h>
+
+#include "cvtuicmdcontext.h"
+
+/**
+ *  CVtUiMenuContext
+ *
+ *  Menu command context class definition.
+ *
+ *  @since S60 v3.2
+ */
+class CVtUiMenuContext : public CVtUiCmdContext
+    {
+
+public: // public methods
+
+    /**
+     * C++ destructor.
+     *
+     */
+    ~CVtUiMenuContext();
+
+    /**
+     * Leave safe destructor.
+     *
+     */
+    static CVtUiMenuContext* NewL( MVtUiCommandManager& aCommandManager );
+
+public: // from CVtUiCmdContext
+
+    /**
+     *  @see CVtUiCmdContext::ValidateL
+     */
+    void ValidateL( CVtUiCmdValidationActionBase& aAction );
+
+private:
+
+    /**
+     * C++ constructor
+     *
+     * @param aPriority Validator priority.
+     */
+    CVtUiMenuContext( MVtUiCommandManager& aCommandManager );
+
+    /**
+     * 2nd consttuctor, may leave.
+     */
+    void ConstructL();
+
+private: // data
+
+    };
+
+#endif // C_VTUIMENUCONTEXT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/menu/cvtuimenuitemdimmeraction.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,85 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Menu dimmer action class definition.
+*
+*/
+
+
+#ifndef C_VTUIMENUITEMDIMMERACTION_H
+#define C_VTUIMENUITEMDIMMERACTION_H
+
+#include <e32base.h>
+
+#include "cvtuicmdvalidationactionbase.h"
+
+class CEikMenuPane;
+
+/**
+ *  CVtUiCmdValidationActionBase
+ *
+ *  Menu item dimmer action definition.
+ *
+ *  @since S60 v3.2
+ */
+class CVtUiMenuItemDimmerAction : public CVtUiCmdValidationActionBase
+    {
+
+public:
+
+    /**
+     * Leave-safe constructor.
+     *
+     */
+    static CVtUiMenuItemDimmerAction* NewL();
+
+    /**
+     * Sets menu pane instance.
+     *
+     */
+    void SetMenuPane( CEikMenuPane* aMenuPane );
+
+public: // from CVtUiCmdValidationActionBase
+
+    /**
+     * @see CVtUiCmdValidationActionBase::ProcessL
+     */
+    void ProcessL( const MVtUiCmdValidatorCallBack& aCallBack );
+
+    /**
+     * @see CVtUiCmdValidationActionBase::EndProcess
+     */
+    void EndProcess();
+
+private:
+
+    /**
+     * C++ constructor.
+     *
+     */
+    CVtUiMenuItemDimmerAction();
+
+    /**
+     * Sets given menu command dimmed in menu.
+     *
+     */
+    void SetItemDimmed( TInt aCommandId );
+
+private: // data
+
+    // Menu pane instance this action is currently working on
+    CEikMenuPane* iMenuPane;
+
+    };
+
+#endif // C_VTUIMENUITEMDIMMERACTION_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/menu/cvtuimenus.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,115 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Menu UI feature.
+*
+*/
+
+
+#ifndef C_VTUIMENUS_H
+#define C_VTUIMENUS_H
+
+#include "cvtuifeaturebase.h"
+#include "mvtuicommandui.h"
+
+class CVtUiMenuContext;
+class CVtUiMenuItemDimmerAction;
+class CEikMenuPane;
+class CVtUiCommandModifyBase;
+
+/**
+ *  CVtUiMenus
+ *
+ *  Menu feature definition.
+ *
+ *  @since S60 v3.2
+ */
+class CVtUiMenus : public CVtUiFeatureBase, public MVtUiCommandUi
+    {
+
+public:
+
+    /**
+     * Static constructor
+     */
+    static CVtUiMenus* NewL( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+     * Destructor
+     */
+    ~CVtUiMenus();
+
+public:
+
+    /**
+     * Sets menu context.
+     */
+    void SetMenuPane( CEikMenuPane* aMenuPane );
+
+public: // from CVtUiFeatureBase
+
+    /**
+    * @see CVtUiFeatureBase::StartL
+    */
+    void StartL();
+
+    /**
+    * @see CVtUiFeatureBase::Stop
+    */
+    void Stop();
+
+    /**
+    * @see CVtUiFeatureBase::InitFeatureL
+    */
+    void InitFeatureL();
+
+public: // from MVtUiCommandUi
+
+    /**
+     * @see MVtUiCommandUi::RefreshL
+     */
+    void RefreshL();
+
+    /**
+     * @see MVtUiCommandUi::AddCommandModifier
+     */
+    TInt AddCommandModifier( CVtUiCommandModifyBase& );
+
+    /**
+     * @see MVtUiCommandUi::RemoveCommandModifier
+     */
+    void RemoveCommandModifier( CVtUiCommandModifyBase& );
+
+private:
+
+    /**
+     * Constructor
+     */
+    CVtUiMenus( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+     * 2nd constructor
+     */
+    void ConstructL();
+
+private:
+
+    // Menu context instance
+    CVtUiMenuContext* iMenuCommandContext;
+
+    // Menu dimmer action instance
+    CVtUiMenuItemDimmerAction* iMenuDimmerAction;
+
+    };
+
+#endif // C_VTUIMENUS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/menu/tvtuimenucommanditerator.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Menu command iterator class definition.
+*
+*/
+
+
+#ifndef T_VTUIMENUCOMMANDITERATOR_H
+#define T_VTUIMENUCOMMANDITERATOR_H
+
+#include "mvtuicommanditerator.h"
+
+/**
+ *  TVtUiMenuCommandIterator
+ *
+ *  Menu command iterator class definition.
+ *
+ *  @since S60 v3.2
+ */
+class TVtUiMenuCommandIterator : public MVtUiCommandIterator
+    {
+
+public: // public methods
+
+    /**
+     * C++ constructor
+     *
+     */
+    TVtUiMenuCommandIterator( CEikMenuPane& aMenuPane );
+
+public: // from MVtUiCommandIterator
+
+    /**
+     * @see MVtUiCommandIterator::HasNext
+     */
+    TBool HasNext() const;
+
+    /**
+     * @see MVtUiCommandIterator::Next
+     */
+    TInt Next();
+
+private:
+
+    // Pointer to menu pane to be iterated
+    CEikMenuPane* iMenuPane;
+
+    // Current iteration point
+    TInt iCurrent;
+
+    };
+
+#endif // T_VTUIMENUCOMMANDITERATOR_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/mvtuifeature.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,86 @@
+/*
+* Copyright (c) 2004-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:  Observer interface for handling features
+*
+*/
+
+
+#ifndef MVTUIFEATURE_H
+#define MVTUIFEATURE_H
+
+//  INCLUDES
+#include <e32std.h>
+
+#include "tvtuifeatureids.h"
+
+// CLASS DECLARATION
+
+/**
+*  Interface for handling features
+*
+*  @since S60 v3.2
+*/
+class MVtUiFeature
+    {
+    public:  // New functions
+        /**
+        * ENotSupported
+        *  feature is not supported in current configuration.
+        * EUnprepared
+        *   starting may require some init code to run.
+        * EPreparing
+        *   running initialization code.
+        * EReady
+        *   feature can be started.
+        * EActive
+        *   feature is running.
+        * EDisabled
+        *   feature is supported but cannot be started at this time.
+        * EFailed
+        *   started but failed (maybe temporary or permanent, feature specific)
+        */
+        enum TVtUiFeatureState
+            {
+            ENotSupported,
+            EUnprepared,
+            EPreparing,
+            EReady,
+            EActive,
+            EDisabled,
+            EFailed
+            };
+
+        /**
+        * Starts the feature.
+        */
+        virtual void StartL() = 0;
+
+        /**
+        * Stops the feature.
+        */
+        virtual void Stop() = 0;
+
+        /**
+        * Current state of the feature
+        */
+        virtual TVtUiFeatureState State() const = 0;
+
+        /**
+        * Id()
+        */
+        virtual TVtUiFeatureId Id() const = 0;
+    };
+
+#endif // MVTUIFEATURE_H
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/numberentry/CVtUiNumberEntryControl.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,196 @@
+/*
+* 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:  Number entry control for Video Telephone application.
+*
+*/
+
+
+
+#ifndef CVTUINUMBERENTRYCONTROL_H
+#define CVTUINUMBERENTRYCONTROL_H
+
+//  INCLUDES
+#include    <coecntrl.h>
+#include    <AknUtils.h>
+
+#include    "mvtuicomponent.h"
+#include    "tvtuicomponentstate.h"
+#include    "mvtuinumbersource.h"
+
+// FORWARD DECLARATIONS
+class MVtUiFeature;
+class MVtUiComponentManager;
+class TVtUiStates;
+class MVtUiNumberEntryControlObserver;
+class CVtUiDTMFBuffer;
+
+// CLASS DECLARATION
+
+/**
+* TVtUiNumberEntryComponentState
+*
+* Component state implementation for Number Entry control. Component state is
+* used by the Component Manager.
+*
+* @since S60 3.2
+*/
+class TVtUiNumberEntryComponentState : public TVtUiComponentState
+    {
+
+public:
+
+    /**
+     * Constructor.
+     */
+    TVtUiNumberEntryComponentState( MVtUiComponent& aComponent );
+
+    };
+
+/**
+*  Number entry control for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class CVtUiNumberEntryControl
+    : public CCoeControl, public MVtUiComponent
+    {
+    public: // Constructors and destructor
+
+        /**
+        * C++ constructor.
+        * @param aAppUi application ui.
+        * @param aUiStates ui states
+        */
+        CVtUiNumberEntryControl( MVtUiFeature& aFeature,
+            TVtUiStates& aUiStates );
+
+        /**
+        * Symbian constructor.
+        * @param aRect initial area.
+        */
+        void ConstructL( const TRect& aRect );
+
+        /**
+        * C++ destructor.
+        */
+        ~CVtUiNumberEntryControl();
+
+    public: // New functions
+
+        /**
+        * Opens number entry.
+        * @return ETrue if number entry was opened, EFalse otherwise.
+        */
+        TBool OpenNumberEntry();
+
+        /**
+        * Returns ETrue if number entry is open.
+        * @return ETrue if number entry is open.
+        */
+        TBool IsNumberEntryOpen() const;
+
+        /**
+        * Closes number entry.
+        */
+        void CloseNumberEntry();
+
+        /**
+         * Register component to component manager.
+         */
+        void RegisterComponentL( MVtUiComponentManager& aComponentManager );
+
+        /**
+         * Unregister component to component manager.
+         */
+        void UnregisterComponent( MVtUiComponentManager& aComponentManager );
+
+        /**
+         * Adds number entry control observer.
+         */
+        void SetNumberEntryControlObserver(
+            MVtUiNumberEntryControlObserver* aObserver );
+
+    public: // Functions from base classes
+
+        /**
+        * @see CCoeControl::OfferKeyEventL.
+        */
+        virtual TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,
+            TEventCode aType );
+
+    private:
+
+        /**
+        * Callback function to close number entry.
+        * @param aAny pointer to an instance of this class.
+        * @return KErrNone.
+        */
+        static TInt DoCloseNumberEntry( TAny* aAny );
+
+        /**
+        * Called from DoCloseNumberEntry when number entry needs to be closed.
+        */
+        void HandleTimeoutCloseNumberEntry();
+
+        /**
+        * Return ETrue if menu or dialog is being displayed.
+        */
+        TBool IsDisplayingMenuOrDialog() const;
+
+    private: // from MVtUiComponent
+
+        /**
+         * @see MVtUiComponent::ComponentId
+         */
+        TComponentId ComponentId() const;
+
+        /**
+         * @see MVtUiComponent::ComponentAsControl
+         */
+        CCoeControl* ComponentAsControl();
+
+        /**
+         * @see MVtUiComponent::DoActivateL
+         */
+        void DoActivateL();
+
+        /**
+         * @see MVtUiComponent::DoDeactivateL
+         */
+        void DoDeactivateL();
+
+    private:
+
+        // Reference to feature that owns this control.
+        MVtUiFeature& iFeature;
+
+        // Number entry area layout.
+        TAknLayoutRect iNumberEntryAreaLayout;
+
+        // Component state
+        TVtUiNumberEntryComponentState iComponentState;
+
+        // UI States
+        TVtUiStates& iUiStates;
+
+        // Number entry control observer
+        MVtUiNumberEntryControlObserver* iControlObserver;
+
+        // Buffer for digits
+        CVtUiDTMFBuffer* iInputBuffer;
+    };
+
+#endif      // CVTUINUMBERENTRYCONTROL_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/numberentry/cvtuinumberentry.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,120 @@
+/*
+* 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:  Number entry UI feature definition.
+*
+*/
+
+
+#ifndef C_VTUINUMBERENTRY_H
+#define C_VTUINUMBERENTRY_H
+
+#include "mvtuicommandui.h"
+#include "cvtuifeaturebase.h"
+#include "mvtuinumberentrycontrolobserver.h"
+#include "cvtuifeaturemanager.h"
+
+class CVtUiNumberEntryControl;
+
+/**
+ *  CVtUiNumberEntry
+ *
+ *  NumberEntry UI feature.
+ *
+ *  @since S60 v3.2
+ */
+ class CVtUiNumberEntry : public CVtUiFeatureBase,
+    public MVtUiNumberEntryControlObserver
+    {
+
+public:
+
+    /**
+     * Static constructor
+     */
+    static CVtUiNumberEntry* NewL( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+     * Destructor
+     */
+    ~CVtUiNumberEntry();
+
+public: // from CVtUiFeatureBase
+
+    /**
+    * @see CVtUiFeatureBase::StartL
+    */
+    void StartL();
+
+    /**
+    * @see CVtUiFeatureBase::Stop
+    */
+    void Stop();
+
+    /**
+    * @see CVtUiFeatureBase::InitFeatureL
+    */
+    void InitFeatureL();
+
+public: // from MVtUiNumberEntryControlObserver
+
+    /**
+     * @see MVtUiNumberEntryControlObserver::ControlActivatedL
+     */
+    void ControlActivatedL();
+
+    /**
+     * @see MVtUiNumberEntryControlObserver::ControlDeactivated
+     */
+    void ControlDeactivated();
+
+private:
+
+    /**
+     * Constructor
+     */
+    CVtUiNumberEntry( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+     * 2nd constructor
+     */
+    void ConstructL();
+
+    /**
+     * Prepares feature
+     */
+    void PrepareL();
+
+    /**
+     * Unprepares feature
+     */
+     void Unprepare();
+
+    /**
+     * Creates number entry control instance
+     */
+    void CreateNumberEntryControlL();
+
+    /**
+     * Deletes number entry control instance
+     */
+    void DeleteNumberEntryControl();
+
+private:
+
+    // Owned number entry control instance.
+    CVtUiNumberEntryControl* iNumberEntryControl;
+
+    };
+
+#endif // C_VTUINUMBERENTRY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/numberentry/mvtuinumberentrycontrolobserver.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,46 @@
+/*
+* 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:  Key event observer API for components.
+*
+*/
+
+
+#ifndef M_VTUINUMBERENTRYCONTROLOBSERVER_H
+#define M_VTUINUMBERENTRYCONTROLOBSERVER_H
+
+/**
+* MVtUiNumberEntryControlObserver
+*
+* Observer API for number entry control.
+*
+* @since S60 v3.2
+*/
+class MVtUiNumberEntryControlObserver
+    {
+
+public:
+
+    /**
+     * Called when number entry control is activated.
+     */
+    virtual void ControlActivatedL() = 0;
+
+    /**
+     * Called when number entry control is deactivated.
+     */
+    virtual void ControlDeactivated() = 0;
+
+    };
+
+#endif // M_VTUINUMBERENTRYCONTROLOBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/prefs/cvtuibrightness.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,73 @@
+/*
+* 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:  Brightness ui feature
+*
+*/
+
+
+#ifndef     C_VTUIBRIGHTNESS_H
+#define     C_VTUIBRIGHTNESS_H
+
+#include    "cvtuiprefsliderbase.h"
+
+/**
+*  CVtUiBrightness
+*
+*  Brightness ui feature
+*
+*  @since S60 v3.2
+*/
+class CVtUiBrightness : public CVtUiPrefSliderBase
+    {
+
+public:
+
+    /**
+    * Static constructor
+    * @param aFeatureManager Reference to feature manager.
+    */
+    static CVtUiBrightness* NewL( CVtUiFeatureManager& aFeatureManager );
+    
+    /**
+    * Destructor
+    */
+    ~CVtUiBrightness();
+
+public: // from CVtUiPrefSliderBase
+    
+    /** 
+    * @see CVtUiPrefSliderBase::StartL
+    */
+    void StartL();
+
+    /** 
+    * @see CVtUiPrefSliderBase::Stop
+    */
+    void Stop();
+    
+protected: 
+
+    /*
+    * Constructor
+    */
+    CVtUiBrightness( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+    * 2nd constructor
+    */
+    void ConstructL(); 
+
+    };
+
+#endif // C_VTUIBRIGHTNESS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/prefs/cvtuibrightnesspopup.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,68 @@
+/*
+* 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:  Brightness popup
+*
+*/
+
+
+#ifndef C_VTUIBRIGHTNESSPOPUP_H
+#define C_VTUIBRIGHTNESSPOPUP_H
+
+#include    "tvtuicomponentstate.h"
+#include    "cvtuiprefpopupbase.h"
+
+
+/**
+*  CVtUiBrightnessPopup
+*
+*  Brightness popup definition.
+*
+*  @since S60 v3.2
+*/
+class CVtUiBrightnessPopup : public CVtUiPrefPopupBase
+    {
+
+public:
+
+    /**
+    * Static constructor
+    * @param aFeatureManager Reference to feature manager.
+    */
+    static CVtUiBrightnessPopup* NewL( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+    * Destructor
+    */
+    ~CVtUiBrightnessPopup();
+
+protected: // from CVtUiPrefPopupBase 
+    
+    // @see CVtUiPrefPopupBase::CurrentValue
+    TInt CurrentValue() ;
+    
+private:
+
+    /**
+     * Constructor
+     */
+    CVtUiBrightnessPopup( CVtUiFeatureManager& aFeatureManager );
+
+    /*
+    * 2nd constructor
+    */
+    void ConstructL();
+
+    };
+
+#endif // C_VTUIBRIGHTNESSPOPUP_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/prefs/cvtuicolortone.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,169 @@
+/*
+* 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:  Color tone feature.
+*
+*/
+
+
+#ifndef C_VTUICOLORTONE_H
+#define C_VTUICOLORTONE_H
+
+#include    <mvtengcamerapreferences.h>
+#include    "cvtuiprefsettinglistbase.h"
+#include    "cvtuifeaturebase.h"
+#include    "tvtuicomponentstate.h"
+#include    "mvtuicomponent.h"
+#include    "mvtuilayoutchangeobserver.h"
+
+/**
+*  TVtUiColorToneComponentState
+*
+* Video quality componentstate definition.
+*
+*  @since S60 v3.2
+*/
+class TVtUiColorToneComponentState : public TVtUiComponentState
+    {
+
+public:
+
+    /**
+    * Constructor
+    * @param aComponent Reference to component.
+    */
+    TVtUiColorToneComponentState( MVtUiComponent& aComponent );
+    
+    };
+    
+/**
+*  CVtUiColorTone
+*
+*  Color tone UI feature definition.
+*
+*  @since S60 v3.2
+*/
+class CVtUiColorTone : public CVtUiPrefSettingListBase,
+    public MVtUiComponent, public MVtUiLayoutChangeObserver
+    {
+
+public:
+
+    /**
+    * Static constructor
+    * @param aFeatureManager Reference to feature manager.
+    */
+    static CVtUiColorTone* NewL( CVtUiFeatureManager& aFeatureManager );
+    
+    /**
+    * Destructor
+    */
+    ~CVtUiColorTone();
+
+public: // from MVtUiFeature
+
+    /** 
+    * @see MVtUiFeature::StartL
+    */
+    void StartL();
+
+     /** 
+    * @see MVtUiFeature::Stop
+    */
+    void Stop();
+    
+     /** 
+    * @see MVtUiFeature::InitFeatureL
+    */
+    void InitFeatureL();
+
+public: // from MVtUiComponent
+
+    /**
+    * @see MVtUiComponent::ComponentId
+    */
+    MVtUiComponent::TComponentId ComponentId() const;
+
+    /**
+    * @see MVtUiComponent::ComponentAsControl
+    */
+    CCoeControl* ComponentAsControl();
+
+    /**
+    * @see MVtUiComponent::DoActivateL
+    */
+    void DoActivateL();
+
+    /**
+    * @see MVtUiComponent::DoDeactivateL
+    */
+    void DoDeactivateL();
+    
+public: // from MVtUiComponentManager
+
+    /**
+    * @see MVtUiComponentManager::HandleLayoutChangeL
+    */
+    void HandleLayoutChangeL();
+
+protected: // from base class
+     
+   	/**
+    * @see CVtUiPrefSettingListBase::CurrentSelection
+    */
+    virtual TInt CurrentSelection();
+    
+    /**
+    * @see CVtUiPrefSettingListBase::SetItemsL
+    */
+    virtual void SetItemsL( CDesCArray& aArray );
+    
+    /**
+    * @see CVtUiPrefSettingListBase::SettingPageResId
+    */
+    virtual TInt SettingPageResId() const;
+    
+    /**
+    * @see CVtUiPrefSettingListBase::SettingPageItemChangedL
+    */
+    virtual void SettingPageItemChangedL( TInt aIndex );
+    
+private:
+
+    /**
+     * Constructor
+     */
+    CVtUiColorTone( CVtUiFeatureManager& aFeatureManager );
+
+    // Maps color tone enum to array index
+    TInt MapCTEnumToArrayIndex( MVtEngCameraPreferences::TColorTone&
+        aColorTone ) const;
+    
+    // Maps arrya index to color tone enum 
+    MVtEngCameraPreferences::TColorTone MapArrayIndexToCTEnum(
+        TInt aIndex) const;        
+
+    // Callback function that stops the feature.
+    static TInt DoStopL( TAny* aAny );
+    
+    // Callback function that starts the feature.
+    static TInt DoStartL( TAny* aAny );    
+
+private:
+
+    // Component state
+    TVtUiColorToneComponentState iComponentState;
+  
+    };
+
+#endif // CVTUICOLORTONE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/prefs/cvtuicontrast.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,74 @@
+/*
+* 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:  Contrast ui feature
+*
+*/
+
+
+#ifndef     C_VTUICONTRAST_H
+#define     C_VTUICONTRAST_H
+
+#include    "cvtuiprefsliderbase.h"
+
+
+/**
+*  CVtUiContrast
+*
+*  Contrast ui feature
+*
+*  @since S60 v3.2
+*/
+class CVtUiContrast : public CVtUiPrefSliderBase
+    {
+
+public:
+
+    /**
+    * Static constructor
+    * @param aFeatureManager Reference to feature manager.
+    */
+    static CVtUiContrast* NewL( CVtUiFeatureManager& aFeatureManager );
+    
+    /**
+    * Destructor
+    */
+    ~CVtUiContrast();
+
+public: // from CVtUiPrefSliderBase
+    
+    /** 
+    * @see CVtUiPrefSliderBase::StartL
+    */
+    void StartL();
+
+    /** 
+    * @see CVtUiPrefSliderBase::Stop
+    */
+    void Stop();
+
+protected: 
+
+    /*
+    * Constructor
+    */
+    CVtUiContrast( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+    * 2nd constructor
+    */
+    void ConstructL(); 
+
+    };
+
+#endif // C_VTUICONTRAST_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/prefs/cvtuicontrastpopup.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,68 @@
+/*
+* 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:  Contrast popup
+*
+*/
+
+
+#ifndef C_VTUICONTRASTPOPUP_H
+#define C_VTUICONTRASTPOPUP_H
+
+#include    "tvtuicomponentstate.h"
+#include    "cvtuiprefpopupbase.h"
+
+
+/**
+*  CVtUiContrastPopup
+*
+*  Contrast popup definition.
+*
+*  @since S60 v3.2
+*/
+class CVtUiContrastPopup : public CVtUiPrefPopupBase
+    {
+
+public:
+
+    /**
+    * Static constructor
+    * @param aFeatureManager Reference to feature manager.
+    */
+    static CVtUiContrastPopup* NewL( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+    * Destructor
+    */
+    ~CVtUiContrastPopup();
+
+protected: // from CVtUiPrefPopupBase 
+    
+    // @see CVtUiPrefPopupBase::CurrentValue
+    TInt CurrentValue();
+    
+private:
+
+    /**
+     * Constructor
+     */
+    CVtUiContrastPopup( CVtUiFeatureManager& aFeatureManager );
+
+    /*
+    * 2nd constructor
+    */
+    void ConstructL();
+
+    };
+
+#endif // C_VTUICONTRASTPOPUP_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/prefs/cvtuiprefpopupbase.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,106 @@
+/*
+* 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:  Base class for video preference popups
+*
+*/
+
+
+#ifndef     C_VTUIPREFPOPUPBASE_H
+#define     C_VTUIPREFPOPUPBASE_H
+
+
+#include    "cvtuipopupbase.h"
+
+class MVtEngCameraPreferences;
+class CVtUiFeatureManager;
+/*
+*  CVtUiPrefPopupBase
+*
+*  Base class for video preference popups
+*
+*  @since S60 v3.2
+*/
+class CVtUiPrefPopupBase : public CVtUiPopupBase
+    {
+    
+public:
+
+    /**
+    * Destructor
+    */
+    ~CVtUiPrefPopupBase();
+
+
+public: // from CVtUiPopupBase
+
+    /**
+    * @see CVtUiPopupBase::HandleControlEventL
+    */
+    void HandleControlEventL( 
+        CCoeControl* aControl,TCoeEvent aEventType );
+    
+    /**
+    * @see CVtUiPopupBase::UpdatePopupL
+    */    
+    void UpdatePopupL();
+    
+private: // from base class
+    
+    /**
+    * @see CVtUiPopupBase::OfferKeyEventL
+    */  
+    TKeyResponse OfferKeyEventL( const TKeyEvent& aEvent, 
+            TEventCode aCode );
+
+protected: // new functions
+    
+    // Does the actual viewfinder adjusting
+    void AdjustVideoL( TInt aValue );
+    
+    // from base class CVtUiPopupBase::DoActivateL()
+    void DoActivateL();
+    
+    // Gets current adjustvalue
+    virtual TInt CurrentValue() = 0;
+    
+protected:
+
+    /**
+    * Constructor
+    */
+    CVtUiPrefPopupBase( CVtUiFeatureManager& aFeatureManager,
+        TVtUiBlockListBitField aBitField, TComponentId aComponentId,
+         TInt aCmdId );
+
+     /**
+     * 2nd constructor
+     */
+    void BaseConstructL();
+
+protected:    
+    
+    // Pointer to camera preferences
+    MVtEngCameraPreferences* iCameraPref;
+    
+    // Reference to feature manager
+    CVtUiFeatureManager& iFeatureManager;
+    
+    // Engine command id
+    TInt iEngineCommandId;
+    
+    // Current value
+    TInt iCurrent;
+    };
+
+#endif // C_VTUIPREFPOPUPBASE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/prefs/cvtuiprefsettinglistbase.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,199 @@
+/*
+* 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:  Base class for video preference setting list.
+*
+*/
+
+
+#ifndef C_VTUIPEFSETTINGLISTBASE_H
+#define C_VTUIPEFSETTINGLISTBASE_H
+
+#include    <AknTransparentCameraSettingPage.h>
+#include    "mvtuicommandui.h"
+#include    "cvtuifeaturebase.h"
+#include    "mvtuicomponent.h"
+#include    "tvtuicomponentstate.h"
+#include    "tvtuifeatureids.h"
+#include    "mvtuisettingpageobserver.h"
+
+class CVtUiAppUi;
+class CVtUiTransparentSettingPage;
+class MVtEngCameraPreferences;
+
+/**
+*  CVtUiPrefSettingListBase
+*
+*  Base class for color tone and white balance
+*
+*  @since S60 v3.2
+*/
+class CVtUiPrefSettingListBase : public CVtUiFeatureBase,
+    public MAknSettingPageObserver, MVtUiSettingPageObserver
+    {
+
+public:
+
+    /**
+    * Destructor
+    */
+    ~CVtUiPrefSettingListBase();
+    
+    /**
+    * has pending settingpange changed cmd cause camera cover switched.
+    */
+    TBool IsPendingCmd();
+    
+    /**
+    * handle pending settingpange command
+    */
+    void HandlePendingCmdL();
+
+public: // from MVtUiFeature
+
+    /** 
+    * @see MVtUiFeature::Stop 
+    */
+    virtual void Stop() = 0;
+    
+    /** 
+    * @see MVtUiFeature::InitFeatureL
+    */
+    virtual void InitFeatureL();
+
+protected: // from MAknSettingPageObserver
+    
+    /** 
+    * @see MAknSettingPageObserver::HandleSettingPageEventL 
+    */
+    void HandleSettingPageEventL(
+        CAknSettingPage* aSettingPage,
+        TAknSettingPageEvent aEventType );    
+
+protected: // from MVtUiSettingPageObserver
+    
+    /** 
+    * @see MVtUiSettingPageObserver::ListStateChangedL
+    */
+    void ListStateChangedL();
+
+protected:
+     
+     // Gets currently selected list item
+     virtual TInt CurrentSelection() = 0;
+     
+     // Set items to setting page
+     virtual void SetItemsL( CDesCArray& aArray ) = 0;
+     
+     // Gets resource id for selection list
+     virtual TInt SettingPageResId() const = 0;
+     
+     // This function gets called when focus is moved
+     // to new item in the settin page list
+     virtual void SettingPageItemChangedL( TInt aIndex ) = 0;
+     
+     // Start function calls this
+     void StartSettingPageL();
+     
+     // Stop function calls this
+     void StopSettingPageL();
+     
+public: // from CCoeControl
+    
+    /* 
+    * @see CCoeControl::SizeChanged
+    */
+    void SizeChanged();
+    
+public:  
+ 
+    /** 
+    * Updates setting pages background bitmap
+    * @param aFrame Bitmap for setting page's backgound.
+    */
+    void UpdateBackground( CFbsBitmap* aFrame );
+    
+    /** 
+    * Updates setting value
+    * E.g disabling video will reset camera settings. and 
+    * after enabling video camera setting value needs to be restored.
+    */
+    void UpdateSettingL();
+
+protected:
+
+    /**
+     * Constructor
+     */
+    CVtUiPrefSettingListBase( CVtUiFeatureManager& aFeatureManager,
+        TVtUiFeatureId aFeatureId );
+
+     /**
+     * 2nd constructor
+     */
+    void ConstructL();
+
+    // Reads item from resource and appends it to the array
+    void ReadAndAppendItemL( CDesCArray& aItems, TInt aResId );
+
+private:
+    
+    // Does the initialisation of the setting page
+    void CreateSettingPageL();
+    
+    // Resizes backround bitmap
+    void ResizeBackroundBitmapRect( );
+    
+    // Sort controls window position
+    void SortControlsWindowPoistion();
+
+protected:    
+    
+    // Pointer to camera preferences
+    MVtEngCameraPreferences* iCameraPref;
+    
+    // The original value (which was active when the
+    // setting page was launched)
+    TInt iOriginalSelection;
+    
+    // Supported color tone or white balance modes
+    TUint32 iSupportedModes;
+    
+    // Contains currenltly supported items in setting page
+    RArray< TInt> iActiveItems;
+            
+    // whether or not has a pending command
+    TBool iPendingSettingChangeCmd;
+
+private:
+    
+    // Owned setting page instance
+    CVtUiTransparentSettingPage* iSettingPage;
+    
+    // Background bitmap for  setting page
+    CFbsBitmap* iViewfinderBitmap;
+
+    // Currently focused value 
+    TInt iCurrentSelection;
+    
+    // Position of bitmap's top left corner
+    TPoint iBitmapTopLeftCorner;
+    
+    // Background bitmap's clip rect
+    TRect iBitmapClippingRect;
+    
+    // Reference to appui
+    CVtUiAppUi& iAppUi;
+    };
+
+#endif // CVTUIPEFSETTINGLISTBASE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/prefs/cvtuiprefsliderbase.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,75 @@
+/*
+* 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:  Base class for video pref sliders
+*
+*/
+
+
+#ifndef     CVTUIPREFSLIDERBASE_H
+#define     CVTUIPREFSLIDERBASE_H
+
+#include    "cvtuisliderbase.h"
+
+class CVtUiPopupBase;
+
+/**
+*  CVtUiPrefSliderBase
+*
+*  Base class for video pref sliders
+*
+*  @since S60 v3.2
+*/
+class CVtUiPrefSliderBase : public CVtUiSliderBase
+    {
+
+public:
+
+    /**
+    * Destructor
+    */
+    ~CVtUiPrefSliderBase();
+
+public: // from CVtUiSliderBase
+
+    /** 
+    * @see CVtUiSliderBase::StartL
+    */
+    void StartL();
+
+     /** 
+    * @see CVtUiSliderBase::Stop
+    */
+    void Stop();
+    
+     /** 
+    * @see CVtUiSliderBase::InitFeatureL
+    */
+    void InitFeatureL();
+
+protected: 
+
+    /*
+    * Constructor
+    */
+    CVtUiPrefSliderBase( CVtUiFeatureManager& aFeatureManager,
+        TVtUiFeatureId aFeatureId );
+
+    /**
+    * 2nd constructor
+    */
+    void BaseConstructL( ); 
+    
+    };
+
+#endif // CVTUIPREFSLIDERBASE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/prefs/cvtuiprefsliderskmodifier.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,84 @@
+/*
+* 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:  Video preference slider softkey modifier class definition.
+*
+*/
+
+
+#ifndef C_VTUIPREFSLIDERMODIFIER_H
+#define C_VTUIPREFSLIDERMODIFIER_H
+
+#include <e32base.h>
+#include "cvtuicommandmodifybase.h"
+
+class   CVtUiAppUi;
+
+/**
+*  CVtUiPrefSliderSKModifier
+*
+* Video preference slider softkey modifier class definition.
+*
+*  @since S60 v3.2
+*/
+class CVtUiPrefSliderSKModifier : public CVtUiCommandModifyBase
+    {
+    public: // static methods
+        /**
+        * Static constructor.
+        * @param aAppUi Reference to command appui.
+        * @param aResourceId Reference resource id.
+        */
+        static CVtUiPrefSliderSKModifier* NewL( CVtUiAppUi& aAppUi,
+            TInt aResourceId );
+
+        /**
+        * Destructor
+        */
+        ~CVtUiPrefSliderSKModifier();
+
+    public: // from base class
+
+        /**
+        * @See CVtUiCommandModifyBase::ModifyCommandsL
+        */
+        virtual void ModifyCommandsL( MVtUiCommandSetting& aCommandSettings );
+
+       /**
+        * @See CVtUiCommandModifyBase::Supports
+        */
+        virtual TBool Supports( MVtUiCommandSetting::Type aType ) const;
+
+    private:
+        /**
+         * C++ constructor
+         *
+         */
+        CVtUiPrefSliderSKModifier( CVtUiAppUi& aAppUi, TInt aResourceId  );
+
+        /**
+         * 2nd constructor
+         */
+        void ConstructL();
+
+    private: // data
+
+        // refrence to appui
+        CVtUiAppUi& iAppUi;
+        
+        // softkey resource id
+        TInt iResourceId;
+
+    };
+
+#endif // C_VTUIPREFSLIDERMODIFIER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/prefs/cvtuitransparentsettingpage.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,108 @@
+/*
+* 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:  CVtUiTransparentSettingPage API definition.
+*
+*/
+
+
+#ifndef CVTUITRANSPARENTSETTINGPAGE_H
+#define CVTUITRANSPARENTSETTINGPAGE_H
+
+#include <AknTransparentCameraSettingPage.h>
+
+class MVtUiSettingPageObserver;
+class CAknsBasicBackgroundControlContext;
+
+/**
+*  CVtUiTransparentSettingPage
+*
+*  CVtUiTransparentSettingPage API definition.
+*
+*  @since S60 v3.2
+*/   
+class CVtUiTransparentSettingPage : public CAknTransparentCameraSettingPage
+{
+public: // public methods
+    /**
+    * handle layoutChange
+     */
+    void HandleLayoutChangeL();
+
+    /**
+    * Constructor.
+    * @param aResourceID Setting Page to use.
+    * @param aCurrentSelectionIndex The currently selected index.
+    * @param aItemArray List of option texts and their selection states.
+    * @param aAppUi Reference to AppUi.
+    * @return Newly created instance of CVtUiTransparentSettingPage class.
+    */
+    CVtUiTransparentSettingPage(
+        TInt aResourceID, 
+        TInt& aCurrentSelectionIndex, 
+        const MDesCArray* aItemArray );
+     
+    /**
+    * 2nd constructor
+    */   
+    void ConstructL();
+        
+    /**
+    * Destructor
+    */        
+    ~CVtUiTransparentSettingPage();
+
+    /**
+    * Adds setting page observer.
+    * @param aObserver Observer for setting page.
+    */
+    void SetSettingPageEventStateObserver(
+        MVtUiSettingPageObserver* aObserver );
+
+private: // from aknsettinpage
+
+     /**
+     * @see CAknSettinPage::DynamicInitL
+     */
+     void  DynamicInitL();
+     
+     /**
+     * @get the layout data in portrait or landscape mode
+     */
+		 void		GetTheLayoutData();
+		 
+     /**
+     * @see CAknSettinPage::HandleControlEventL
+     */
+     void HandleControlEventL( CCoeControl* aControl,TCoeEvent aEventType );
+     
+     /**
+     * @see CAknSettinPage::HandleResourceChange
+     */
+     void HandleResourceChange(TInt aType);
+     
+private: // new functions
+        
+        /*
+        * Gets rect from layout data.
+        */
+        TRect RectFromLayout( const TAknWindowComponentLayout&
+            aComponentLayout ) const;
+                 
+private:
+    
+    // Setting page observer
+    MVtUiSettingPageObserver* iSettingPageObserver;
+}; 
+
+#endif // CVTUITRANSPARENTSETTINGPAGE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/prefs/cvtuivideoquality.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,160 @@
+/*
+* 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:  Video quality feature.
+*
+*/
+
+
+#ifndef C_VTUIVIDEOQUALITY_H
+#define C_VTUIVIDEOQUALITY_H
+
+#include    <gulicon.h>
+#include    "cvtuifeaturebase.h"
+#include    "mvtuicomponent.h"
+#include    "tvtuicomponentstate.h"
+#include    "videotelui.hrh"
+
+/**
+*  TVtUiVideoQualityComponentState
+*
+* Video quality componentstate definition.
+*
+*  @since S60 v3.2
+*/
+class TVtUiVideoQualityComponentState : public TVtUiComponentState
+    {
+
+public:
+
+    /**
+    * Constructor
+    * @param aComponent Reference to component.
+    */
+    TVtUiVideoQualityComponentState( MVtUiComponent& aComponent );
+    
+    };
+
+/**
+*  CVtUiVideoQuality
+*
+*  Video quality UI feature definition.
+*
+*  @since S60 v3.2
+*/
+class CVtUiVideoQuality : public CVtUiFeatureBase,
+    public MVtUiComponent
+    {
+
+public:
+
+    /**
+    * Static constructor
+    * @param aFeatureManager Reference to feature manager.
+    */
+    static CVtUiVideoQuality* NewL( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+    * Destructor
+    */
+    ~CVtUiVideoQuality();
+
+public: // from MVtUiFeature
+
+    /** 
+    * @see MVtUiFeature::StartL
+    */
+    void StartL();
+
+    /** 
+    * @see MVtUiFeature::Stop 
+    */
+    void Stop();
+    
+    /** 
+    * @see MVtUiFeature::InitFeatureL
+    */
+    void InitFeatureL();
+
+public: // from MVtUiComponent
+
+    /**
+    * @see MVtUiComponent::ComponentId
+    */
+    MVtUiComponent::TComponentId ComponentId() const;
+
+    /**
+    * @see MVtUiComponent::ComponentAsControl
+    */
+    CCoeControl* ComponentAsControl();
+
+    /**
+    * @see MVtUiComponent::DoActivateL
+    */
+    void DoActivateL();
+
+    /**
+    * @see MVtUiComponent::DoDeactivateL
+    */
+    void DoDeactivateL();
+
+private:
+    
+    // Creates icons for list
+    CGulIcon* CreateIconLC( TVtUiBitmapId aIconId, TVtUiBitmapId aMaskId );
+
+    // Shows the selection list
+    void ShowSelectionListL();
+    
+    // Async the selection list
+    static TInt AsyncShowSelectionList( TAny* aPtr );
+    
+    // Reads items from source to target array and updates the selection icon
+    // if needed.
+    void SetItemsL( CDesCArray& aTarget,const CDesCArray& aSource );
+    
+    // Return curretly active item.
+    TInt ActiveItem() const;
+    
+    // Item selected, adjust video quality.
+    void ItemSelectedL( TInt aItemIndex );
+    
+private:
+
+    /**
+    * Constructor
+    */
+    CVtUiVideoQuality( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+    * 2nd constructor
+    */
+    void ConstructL();
+    
+    /**
+    * Callback function that stops the feature.
+    * @param aAny pointer to an instance of the class.
+    * @return always KErrNone.
+    */
+    static TInt DoStop( TAny* aAny );
+
+private:
+
+    // Component state
+    TVtUiVideoQualityComponentState iComponentState;
+    
+    // Async callback for selection list
+    CAsyncCallBack* iShowSelectionListCallback;
+    };
+
+#endif // CVTUIVIDEOQUALITY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/prefs/cvtuiwhitebalance.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,167 @@
+/*
+* 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:  White balance feature.
+*
+*/
+
+
+#ifndef C_VTUIWHITEBALANCE_H
+#define C_VTUIWHITEBALANCE_H
+
+#include    <mvtengcamerapreferences.h>
+#include    "cvtuiprefsettinglistbase.h"
+#include    "tvtuicomponentstate.h"
+#include    "mvtuicomponent.h"
+#include    "mvtuilayoutchangeobserver.h"
+
+/**
+*  TVtUiWhiteBalanceComponentState
+*
+* Video quality componentstate definition.
+*
+*  @since S60 v3.2
+*/
+class TVtUiWhiteBalanceComponentState : public TVtUiComponentState
+    {
+
+public:
+
+    /**
+    * Constructor
+    * @param aComponent Reference to component.
+    */
+    TVtUiWhiteBalanceComponentState( MVtUiComponent& aComponent );
+    
+    };
+    
+/**
+*  CVtUiWhiteBalance
+*
+*  White balance UI feature definition.
+*
+*  @since S60 v3.2
+*/
+class CVtUiWhiteBalance : public CVtUiPrefSettingListBase,
+    public MVtUiComponent, public MVtUiLayoutChangeObserver 
+    {
+
+public:
+
+    /**
+    * Static constructor
+    * @param aFeatureManager Reference to feature manager.
+    */
+    static CVtUiWhiteBalance* NewL( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+    * Destructor
+    */
+    ~CVtUiWhiteBalance();
+
+public: // from MVtUiFeature
+
+    /** 
+    * @see MVtUiFeature::StartL 
+    */
+    void StartL();
+
+    /** 
+    * @see MVtUiFeature:Stop
+    */
+    void Stop();
+    
+    /** 
+    * @see MVtUiFeature::InitFeatureL 
+    */
+    void InitFeatureL();
+
+public: // from MVtUiComponent
+
+    /**
+    * @see MVtUiComponent::ComponentId
+    */
+    MVtUiComponent::TComponentId ComponentId() const;
+
+    /**
+    * @see MVtUiComponent::ComponentAsControl
+    */
+    CCoeControl* ComponentAsControl();
+
+    /**
+    * @see MVtUiComponent::DoActivateL
+    */
+    void DoActivateL();
+
+    /**
+    * @see MVtUiComponent::DoDeactivateL
+    */
+    void DoDeactivateL();
+
+public: // from MVtUiComponentManager
+
+    /**
+    * @see MVtUiComponentManager::HandleLayoutChangeL
+    */
+    void HandleLayoutChangeL();
+    
+protected: // from base class
+   
+   	/**
+    * @see CVtUiPrefSettingListBase::CurrentSelection
+    */
+    virtual TInt CurrentSelection();
+    
+    /**
+    * @see CVtUiPrefSettingListBase::SetItemsL
+    */
+    virtual void SetItemsL( CDesCArray& aArray );
+    
+    /**
+    * @see CVtUiPrefSettingListBase::SettingPageResId
+    */
+    virtual TInt SettingPageResId() const;
+    
+    /**
+    * @see CVtUiPrefSettingListBase::SettingPageItemChangedL
+    */
+    virtual void SettingPageItemChangedL( TInt aIndex );
+
+private:
+
+    /**
+    * Constructor
+    */
+    CVtUiWhiteBalance( CVtUiFeatureManager& aFeatureManager );
+
+    // Maps white balance enum to array index
+    TInt MapWBEnumToArrayIndex( MVtEngCameraPreferences::TWhiteBalance&
+        aWhiteBalance ) const;
+    
+    // Maps arrya index to white balance enum 
+    MVtEngCameraPreferences::TWhiteBalance MapArrayIndexToWBEnum( TInt aIndex) const;        
+
+    // Callback function that stops the feature.
+    static TInt DoStopL( TAny* aAny );
+    
+    // Callback function that starts the feature.
+    static TInt DoStartL( TAny* aAny );    
+    
+private:
+
+    // Component state
+    TVtUiWhiteBalanceComponentState iComponentState;
+
+    };
+
+#endif // CVTUIWHITEBALANCE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/prefs/mvtuisettingpageobserver.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,42 @@
+/*
+* 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:  Observer API for CVtUiTransparentSettingPage.
+*
+*/
+
+
+#ifndef M_VTUISETTINGPAGEOBSERVER_H
+#define M_VTUISETTINGPAGEOBSERVER_H
+
+/**
+* MVtUiSettingPageObserver
+*
+* Observer API for CVtUiTransparentSettingPage.
+*
+* @since S60 v3.2
+*/
+class MVtUiSettingPageObserver
+    {
+
+public:
+
+    /**
+    * Called when EEventStateChanged event occurs 
+    * in setting page.
+    */
+    virtual void ListStateChangedL() = 0;
+
+    };
+
+#endif // M_VTUISETTINGPAGEOBSERVER_H
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/softkey/cvtuisoftkeycontext.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,74 @@
+/*
+* 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:  Softkey context class definition.
+*
+*/
+
+
+#ifndef C_VTUISOFTKEYCONTEXT_H
+#define C_VTUISOFTKEYCONTEXT_H
+
+#include <e32base.h>
+
+#include "cvtuicmdcontext.h"
+
+/**
+ *  CVtUiSoftkeyContext
+ *
+ *  Softkey command context class definition.
+ *
+ *  @since S60 v3.2
+ */
+class CVtUiSoftkeyContext : public CVtUiCmdContext
+    {
+
+public: // public methods
+
+    /**
+     * C++ destructor.
+     */
+    ~CVtUiSoftkeyContext();
+
+    /**
+     * Static constructor
+     * @param aCommandManager Reference to command manager.
+     */
+    static CVtUiSoftkeyContext* NewL( MVtUiCommandManager& aCommandManager );
+
+public: // virtual methods
+
+    /**
+     * Make validations.
+     *
+     * @param aAction Reference to validation action base.
+     */
+    void ValidateL( CVtUiCmdValidationActionBase& aAction );
+
+private:
+
+    /**
+     * C++ constructor
+     *
+     *  @param aCommandManager Reference to command manager.
+     */
+    CVtUiSoftkeyContext( MVtUiCommandManager& aCommandManager );
+
+    /**
+     * 2nd consttuctor, may leave.
+     */
+    void ConstructL();
+
+    };
+
+#endif // C_VTUISOFTKEYCONTEXT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/softkey/cvtuisoftkeys.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,127 @@
+/*
+* 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:  Softkey UI feature.
+*
+*/
+
+
+#ifndef C_VTUISOFTKEYS_H
+#define C_VTUISOFTKEYS_H
+
+#include "mvtuicommandui.h"
+#include "cvtuifeaturebase.h"
+
+class CEikButtonGroupContainer;
+class CVtUiSoftkeySetting;
+class CVtUiCommandModifyBase;
+class CVtUiSoftkeyValidationAction;
+class CVtUiSoftkeyContext;
+
+/**
+ *  CVtUiSoftkeys
+ *
+ *  Sofktey UI feature definition.
+ *
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CVtUiSoftkeys ) : public CVtUiFeatureBase,
+    public MVtUiCommandUi
+    {
+
+public:
+
+    /**
+     * Static constructor
+     * @param aFeatureManager Reference to feature manager.
+     * @param aButtonGroupContainer Reference to button group container.
+     */
+    static CVtUiSoftkeys* NewL( CVtUiFeatureManager& aFeatureManager,
+        CEikButtonGroupContainer& aButtonGroupContainer );
+
+    /**
+     * Destructor
+     */
+    ~CVtUiSoftkeys();
+
+public:
+
+    /**
+     * Returns reference to application button group container.
+     */
+    CEikButtonGroupContainer& ButtonGroup();
+
+public: // from CVtUiFeatureBase
+
+    /**
+    * @see CVtUiFeatureBase::StartL
+    */
+    void StartL();
+
+    /**
+    * @see CVtUiFeatureBase::Stop
+    */
+    void Stop();
+
+    /**
+    * @see CVtUiFeatureBase::InitFeatureL
+    */
+    void InitFeatureL();
+
+public: // from MVtUiCommandUi
+
+    /**
+     * @see MVtUiCommandUi::RefreshL
+     */
+    void RefreshL();
+
+    /**
+     * @see MVtUiCommandUi::AddCommandModifierL
+     */
+    TInt AddCommandModifier( CVtUiCommandModifyBase& aModifier );
+
+    /**
+     * @see MVtUiCommandUi::RemoveCommandModifierL
+     */
+    void RemoveCommandModifier( CVtUiCommandModifyBase& aModifier );
+
+private:
+
+    /**
+     * Constructor
+     */
+    CVtUiSoftkeys( CVtUiFeatureManager& aFeatureManager,
+        CEikButtonGroupContainer& aButtonGroupContainer );
+
+    /**
+     * 2nd constructor
+     */
+    void ConstructL();
+
+private:
+
+    // Softkey container
+    CEikButtonGroupContainer& iButtonGroupContainer;
+
+    // Softkey context instance
+    CVtUiSoftkeyContext* iSoftkeyCommandContext;
+
+    // Softkey setter
+    CVtUiSoftkeySetting* iSoftkeySetting;
+
+    // Softkey validation action instance
+    CVtUiSoftkeyValidationAction* iSoftkeyValidationAction;
+
+    };
+
+#endif // C_VTUISOFTKEYS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/softkey/cvtuisoftkeysetting.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,65 @@
+/*
+* 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:  Softkey settings class definition.
+*
+*/
+
+
+#ifndef C_VTUISOFTKEYSETTING_H
+#define C_VTUISOFTKEYSETTING_H
+
+#include "cvtuicommandsetting.h"
+
+class CVtUiSoftkeys;
+class CVtUiSoftkeyValidationAction;
+
+/**
+ *  CVtUiSoftkeySetting
+ *
+ *  Softkey setting class definition.
+ *
+ *  @since S60 v3.2
+ */
+class CVtUiSoftkeySetting :
+    public CVtUiCommandSetting< CVtUiSoftkeyValidationAction >
+    {
+
+public:
+
+    /**
+     * Constructor
+     * @param aSoftkeys Reference to softkeysr.
+     */
+    CVtUiSoftkeySetting( CVtUiSoftkeys& aSoftkeys );
+
+    /**
+     * Destructor
+     */
+    ~CVtUiSoftkeySetting();
+
+public: // from CVtUiCommandSetting
+
+    /**
+     * @see CVtUiCommandSetting::DoDefineCommandsL
+     */
+    void DoDefineCommandsL();
+
+private:
+
+    // Softkey container
+    CVtUiSoftkeys* iSoftkeys;
+
+    };
+
+#endif // C_VTUISOFTKEYSETTING_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/softkey/cvtuisoftkeyvalidationaction.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,77 @@
+/*
+* 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:  Softkey validation action class definition.
+*
+*/
+
+
+#ifndef C_CVTUISOFTKEYVALIDATIONACTION_H
+#define C_CVTUISOFTKEYVALIDATIONACTION_H
+
+#include <e32base.h>
+
+#include "cvtuicmdvalidationactionbase.h"
+
+/**
+ *  CVtUiSoftkeyValidationAction
+ *
+ *  Softkey validation action definition.
+ *
+ *  @since S60 v3.2
+ */
+class CVtUiSoftkeyValidationAction : public CVtUiCmdValidationActionBase
+    {
+
+public:
+
+    /**
+     * Static constructor
+     */
+    static CVtUiSoftkeyValidationAction* NewL();
+
+public: // from CVtUiCmdValidationActionBase
+
+    /**
+     * @see CVtUiCmdValidationActionBase::BeginProcess
+     */
+    void BeginProcess();
+
+    /**
+     * @see CVtUiCmdValidationActionBase::ProcessL
+     */
+    void ProcessL( const MVtUiCmdValidatorCallBack& aCallBack );
+
+public: // new methods
+
+    /**
+     * Returns resource id after validation process.
+     */
+    TInt ResourceId() const;
+
+private:
+
+    /**
+     * C++ constructor.
+     *
+     */
+    CVtUiSoftkeyValidationAction();
+
+private: // data
+
+    // Index to currently selected softkey
+    TInt iCurrentIdx;
+
+    };
+
+#endif // C_CVTUISOFTKEYVALIDATIONACTION_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/toolbar/cvtuifixedtoolbar.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,105 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Fixed toolbar UI feature class definition.
+*
+*/
+
+
+#ifndef C_VTUIFIXEDTOOLBAR_H
+#define C_VTUIFIXEDTOOLBAR_H
+
+#include "cvtuitoolbarbase.h"
+
+/**
+* CVtUiFixedToolbar
+*
+* Toolbar UI feature definition.
+*
+* @since S60 3.2
+*/
+class CVtUiFixedToolbar : public CVtUiToolbarBase
+    {
+    public: // public methods
+
+        /**
+        * Static constructor.
+        * @param aFeatureManager feature manager.
+        */
+        static CVtUiFixedToolbar* NewL(CVtUiFeatureManager& aFeatureManager );
+
+        /**
+        * C++ destructor.
+        */
+        ~CVtUiFixedToolbar();
+
+    public: // from CVtUiToolbarBase
+
+        /**
+        * @see CVtUiToolbarBase::DoActivateL
+        */
+        void DoActivateL();
+
+        /**
+        * @see CVtUiToolbarBase::DoDeactivateL
+        */
+        void DoDeactivateL();
+
+        /**
+        * @see CVtUiToolbarBase::CreateToolbarButtonsL
+        */
+        void CreateToolbarButtonsL();
+
+        /**
+        * @see CVtUiToolbarBase::PopulateCmdsIdsL
+        */
+        void PopulateCmdsIdsL();
+
+        /**
+        * @see CVtUiToolbarBase::SetToolbarVisibilityAfterLayoutChange
+        */
+        void SetToolbarVisibilityAfterLayoutChangeL( TBool aVisible );
+
+    private:
+
+        // Hides/shows toolbar
+        void MakeToolbarVisible( const TBool aVisible );
+
+        // Dimms/undimms all toolbar buttons
+        void DimToolbarbuttons( TBool aIsDimmed );
+
+        // Sets toolbar visible
+        static TInt DoShowToolbarL( TAny* aAny );
+
+        // Sets toolbar buttons dimmed
+        static TInt DoDimToolbarButtons( TAny* aAny );
+
+    private:
+
+        /**
+        * C++ constructor
+        */
+        CVtUiFixedToolbar( CVtUiFeatureManager& aFeatureManager );
+
+        /**
+        * 2nd phase constructor
+        */
+        void ConstructL();
+
+    private: // data
+
+        // for callback usage
+        CIdle* iIdle;
+    };
+
+#endif // C_VTUIFIXEDTOOLBAR_H
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/toolbar/cvtuifloatingtoolbar.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,117 @@
+/*
+* 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:  Floating toolbar UI feature class definition.
+*
+*/
+
+
+#ifndef C_VTUIFLOATINGTOOLBAR_H
+#define C_VTUIFLOATINGTOOLBAR_H
+
+#include "cvtuitoolbarbase.h"
+#include "mvtuiresourcechangeobserver.h"
+#include <aknlayoutscalable_avkon.cdl.h>
+
+/**
+* CVtUiFloatingToolbar  
+* 
+* Toolbar UI feature definition.
+*
+* @since S60 3.2
+*/
+class CVtUiFloatingToolbar : public CVtUiToolbarBase,
+    public MVtUiResourceChangeObserver
+    {
+    public: // public methods
+
+        /**
+        * Static constructor.
+        * @param aFeatureManager feature manager.
+        */
+        static CVtUiFloatingToolbar* NewL( CVtUiFeatureManager& 
+            aFeatureManager );
+
+        /**
+        * C++ destructor.
+        */
+        ~CVtUiFloatingToolbar();
+    
+       
+    public: // from CVtUiToolbarBase
+
+
+        /**
+        * @see CVtUiToolbarBase::DoActivateL
+        */
+        void DoActivateL();
+
+        /**
+        * @see CVtUiToolbarBase::DoDeactivateL
+        */
+        void DoDeactivateL();
+
+        /**
+        * @see CVtUiToolbarBase::CreateToolbarButtonsL
+        */
+        void CreateToolbarButtonsL();
+
+        /**
+        * @see CVtUiToolbarBase::PopulateCmdsIdsL
+        */
+        void PopulateCmdsIdsL();            
+
+    public: // from MVtUiResourceChangeObserver
+
+        /**
+        * @see MVtUiComponent::HandleResourceChangeL
+        */
+        void HandleResourceChangeL( TInt aType );         
+         
+    private:
+
+        /**
+        * C++ constructor
+        */
+        CVtUiFloatingToolbar( CVtUiFeatureManager& aFeatureManager );
+
+        /**
+        * 2nd phase constructor
+        */
+        void ConstructL();
+    
+        /**
+
+        /*
+        * Gets rect from layout data.
+        */
+        TRect RectFromLayout( const TAknWindowComponentLayout&
+            aComponentLayout ) const;
+
+        /*
+        * Sets toolbar layout.
+        */
+        void LayoutToolbarL();
+
+        /*
+        * Gets variety for layoutdata.
+        */
+        TInt GetVariety( TBool aIsLandscapeOrientation );
+    
+    private: // data
+
+    
+        
+    };
+
+#endif // C_VTUIFLOATINGTOOLBAR_H
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/toolbar/cvtuihidetoolbaritemaction.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,96 @@
+/*
+* 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:  Toolbar hide item action class definition.
+*
+*/
+
+
+#ifndef C_VTUIHIDETOLLBARITEMACTION_H
+#define C_VTUIHIDETOLLBARITEMACTION_H
+
+#include    <e32base.h>
+#include    "cvtuicmdvalidationactionbase.h"
+#include    "tvtuistates.h"
+
+class CVtUiToolbarBase;
+
+/**
+*  CVtUiHideToolbarItemAction
+*
+*  Toolbar hide item action definition.
+*
+*  @since S60 v3.2
+*/
+class CVtUiHideToolbarItemAction : public CVtUiCmdValidationActionBase
+    {
+    public:
+
+        /**
+        * Leave-safe constructor.
+        * @param aToolbar Pointer to toolbar.
+        * @param aUiStates Reference to uistates.
+        */
+        static CVtUiHideToolbarItemAction* NewL( CVtUiToolbarBase* aToolbar,
+               const TVtUiStates& aUiStates );
+         
+        /**
+        * Destructor
+        *
+        */
+        ~CVtUiHideToolbarItemAction();
+
+    public: // from CVtUiCmdValidationActionBase
+
+        /**
+        * @See CVtUiCmdValidationActionBase::ProcessL
+        */
+        void ProcessL( const MVtUiCmdValidatorCallBack& aCallBack );
+
+        
+         /**
+         * @See CVtUiCmdValidationActionBase::EndProcess
+         */
+         virtual void EndProcess();
+        
+    private:
+
+        /**
+        * C++ constructor.
+        *
+        */
+        CVtUiHideToolbarItemAction( CVtUiToolbarBase* aToolbar,
+            const TVtUiStates& aUiStates );
+
+        /**
+        * Sets given toolbar control hidden in toolbar.
+        *
+        */
+        void SetItemHiddenL( TInt aCommandId );
+        
+        /**
+        * Decides if toolbar control should be dimmed or shown.
+        *
+        */
+        void HideOrShowToolbarControlL( TInt aCommandId );
+
+    private: // data
+
+        // Toolbar instance this action is currently working on
+        CVtUiToolbarBase* iToolbar;
+        
+        // Reference to UI states instance
+        const TVtUiStates& iUiStates;
+        };
+
+#endif // C_VTUIHIDETOLLBARITEMACTION_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/toolbar/cvtuitoolbarbase.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,372 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Base class for toolbar.
+*
+*/
+
+
+#ifndef C_VTUITOOLBAR_H
+#define C_VTUITOOLBAR_H
+
+#include <e32base.h>
+#include <aknappui.h>
+#include <akntoolbarobserver.h>
+
+#include "mvtuifeature.h"
+#include "CVtUiAppUi.h"
+#include "cvtuifeaturebase.h"
+#include "mvtuicommandui.h"
+#include "mvtuicomponent.h"
+#include "mvtuiresourcechangeobserver.h"
+#include "tvtuicomponentstate.h"
+#include  "mvtuilayoutchangeobserver.h"
+#include <aknlayoutscalable_avkon.cdl.h>
+
+class MVtuiFeature;
+class CAknToolbar;
+class CVtUiToolbarItem;
+class TVtUiFeatureState;
+class TVtUiStates;
+class CVtUiToolbarContext;
+class CVtUiToolbarCmdPolicy;
+class CVtUiHideToolbarItemAction;
+class CVtUiFeatureManager;
+class CVtUiToolbarSKModifier;
+class CVtUiToolbarButton;
+
+/**
+*  TVtUiToolbarComponentState
+*
+* Toolbar componentstate definition.
+*
+*  @since S60 v3.2
+*/
+class TVtUiToolbarComponentState : public TVtUiComponentState
+    {
+
+public:
+
+    /**
+    * Constructor
+    * @param aComponent Reference to component.
+    */
+    TVtUiToolbarComponentState( MVtUiComponent& aComponent );
+    
+    };
+
+/**
+* CVtUiToolbar  
+* 
+* Toolbar UI feature definition.
+*
+* @since S60 3.2
+*/
+class CVtUiToolbarBase : public CVtUiFeatureBase, public MAknToolbarObserver,
+    public MVtUiCommandUi, public MVtUiComponent,
+    public MVtUiLayoutChangeObserver
+    {
+    public: // public methods
+
+        /**
+        * C++ destructor.
+        */
+        ~CVtUiToolbarBase();
+    
+    public: // from MAknToolbarObserver 
+    
+        /**
+        * @see MAknToolbarObserver::DynInitToolbarL
+        */
+        void DynInitToolbarL( 
+            TInt aResourceId,
+            CAknToolbar* aToolbar );
+        
+        /**
+        * @see MAknToolbarObserver::DynInitToolbarL
+        */
+        void OfferToolbarEventL( TInt aCommand );
+    
+    public: // from MVtUiFeature
+        /**
+        * @see MVtUiFeature::StartL
+        */
+        void StartL();
+
+        /**
+        * @see MVtUiFeature::Stop
+        */
+        void Stop();
+        
+        /*
+        * @see MVtUiFeature::InitFeatureL
+        */
+        void InitFeatureL();
+        
+    public: // from MVtUiCommandUi
+    
+        /**
+        * @see MVtUiCommandUi::RefreshL
+        */
+        void RefreshL();
+
+        /**
+        *  @see MVtUiCommandUi::AddCommandModifier
+        */
+         TInt AddCommandModifier( CVtUiCommandModifyBase& aModifier );
+
+        /**
+        * @see MVtUiCommandUi::RemoveCommandModifier
+        */
+         void RemoveCommandModifier( CVtUiCommandModifyBase& aModifier );
+        
+    public: // from MVtUiComponent
+
+        /**
+        * @see MVtUiComponent::ComponentId
+        */
+        TComponentId ComponentId() const;
+
+        /**
+        * @see MVtUiComponent::ComponentAsControl
+        */
+        CCoeControl* ComponentAsControl();
+
+        /**
+        * @see MVtUiComponent::DoActivateL
+        */
+        virtual void DoActivateL();
+
+        /**
+        * @see MVtUiComponent::DoDeactivateL
+        */
+        virtual void DoDeactivateL();
+    
+    public: // from MVtUiComponentManager
+
+        /**
+        * @see MVtUiComponentManager::HandleLayoutChangeL
+        */
+        void HandleLayoutChangeL();
+
+    public:
+
+        /**
+        * Return number of commands in toolbar.
+        * @return Number of commands.
+        */
+        TInt NumberOfToolbarControls() const;
+        
+        /**
+        * Maps command id array index to command id.
+        * @param aIndex Command id array index.
+        * @return Command id associated with index.
+        */
+        TInt CommandIdByCmdIdsArrayIndex( TInt aIndex ) const;
+   
+        /**
+        * Updates toolbar's buttons states and
+        * redraws the toolbar.
+        */
+        void UpdateToolbarL();
+     
+        /**
+        * EHidden
+        *  command is hidden
+        * EDimmed
+        *  command is dimmed
+        * EShown
+        * command is visible
+        */
+        enum TCmdStateFlags
+            {
+            ENotInitialized = -1,
+            EHidden,
+            EDimmed,
+            EShown
+            }; 
+
+         /**
+        * Sets visibility of toolbar commands.
+        * @param aCmdId command id.
+        * @param aNewState command's new state.
+        * @return ETrue if command is available, otherwise EFalse.
+        */
+        void SetCmdIdVisibilityStateL( TInt aCmdId, TCmdStateFlags aNewState);
+        
+        /**
+        * Cheks if command is available in toolbar.
+        * @param aCmdId command id.
+        * @return ETrue if command is available, otherwise EFalse.
+        */
+        TBool IsCommandInToolbar( TInt aCmdId ) const;
+         
+    protected:
+
+        /**
+        * C++ constructor
+        */
+        CVtUiToolbarBase( CVtUiFeatureManager& aFeatureManager );
+
+        /**
+        * 2nd phase constructor
+        */
+        void BaseConstructL();
+
+    protected:    
+  
+        /**
+        * Creates toolbar buttons
+        */
+        virtual void CreateToolbarButtonsL();
+
+        /*
+        * Appends all the commnands used by toolbar to an array.
+        */
+        virtual void PopulateCmdsIdsL();    
+            
+        /*
+        * Sets toolbar visibility after layoutchange
+        */    
+        virtual void SetToolbarVisibilityAfterLayoutChangeL( TBool aVisible );
+    
+        /**
+        * Creates all toolbar items()
+        */
+        void CreateToolbarItemL( TInt aResourceId,
+            TInt aCommandId, CVtUiAppUi& appUi );
+   
+        /**
+        * Finds command from array by command id.
+        */
+        CVtUiToolbarButton* FindToolbarItemByCommandId( const TInt aCommandId );
+         
+        /*
+        * Starts or stops to block pointer events
+        * @param aIsBlocking ETrue if events are blocked
+        * otherwise EFalse
+        */
+        void BlockPointerEvents( TBool aIsBlocking );
+           
+        /*
+        * Starts or stops to block key events
+        * @param aIsBlocking ETrue if events are blocked
+        * otherwise EFalse
+        */
+        void BlockKeyEvents( TBool aIsBlocking );
+         
+        /*
+        * Cheks if dialer component is active
+        * @return ETrue if dialer is aactive, otherwise EFalse. 
+        */
+        TBool IsDialerActive() const;
+        
+        /**
+        * Dims toolbar.
+        * @param aDimmed ETrue ETrue to dim the toolbar, 
+        *      EFalse to set the toolbar as not dimmed
+        */
+        void DimToolbar( const TBool aDimmed, const TBool aDrawNow );
+    private:
+    
+        /**
+        * Hides command from toolbar.
+        */
+        void HideToolbarButton( const TInt aCommandId, const TBool aHide,
+            const TBool aDrawNow );
+        
+        /**
+        * Dims command from toolbar.
+        */
+        void DimToolbarButton( const TInt aCommandId, const TBool aDimmed,
+            const TBool aDrawNow ); 
+       
+        /**
+        * Maps toggle button id to single command id.
+        */
+        TInt MapCmdIdToChilId( TInt aCmdId );
+        
+        /**
+        * Maps single command id to toggle button id.
+        */
+        TInt MapCmdIdToParentId( TInt aCmdId );
+        
+        /*
+        * Checks if command id associated with toggle button is visible.
+        * Togglle button has two states and two command ids which has their
+        * own state values. See from .rss file.
+        */
+        TBool IsCmdIdVisibleInToggleButton( TInt aCmdId );
+        
+        /*
+        * Checks if both command ids in togglebutton are dimmed.
+        */
+        TBool IsToggleButtonHidden( TInt aFirstCmdId, TInt aSecondCmdId );
+        
+        /*
+        * Removes registrations.
+        */
+        void Clean();
+        
+    protected: // data
+        
+        // array of supported commmand ids
+        RArray<TInt> iCmdIds;    
+        
+        // current focus id
+        TInt iCmdFocus;
+        
+         // owned toolbar control
+        CAknToolbar* iToolbar;
+        
+        // Number of supported toolbar buttons
+        TInt iNumberOfToolbarButtons;
+     
+    private: // data
+         
+        // struct used by iCmdStates array
+        class TCommandState 
+            {
+            public:
+                TInt iCmdId;
+                TCmdStateFlags iOldState;
+                TCmdStateFlags iNewState;
+            };     
+        
+         // owned toolbar item array
+        RPointerArray<CVtUiToolbarButton> iToolBarControls;
+
+        // toolbar context instance
+        CVtUiToolbarContext* iToolbarCtx; 
+       
+        // owned hide toolbar item action
+        CVtUiHideToolbarItemAction* iHideToolbarItemAction;
+        
+        // Toolbar command policy instance
+        CVtUiToolbarCmdPolicy* iToolbarCmdPolicy;
+        
+        // owned softkey modifier
+        CVtUiToolbarSKModifier* iToolbarSKModifier;
+        
+        // array which hold state information of the commands
+        RArray<TCommandState> iCmdStates;
+        
+        // Component state
+        TVtUiToolbarComponentState iComponentState;
+        
+        // ETrue if capture mode was on in previous update
+        TBool iWasCaptureModePreviousState;
+    
+    };
+
+#endif // C_VTUITOOLBAR_H
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/toolbar/cvtuitoolbarbutton.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,131 @@
+/*
+* 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:  CVtUiToolbarButton class definition.
+*
+*/
+
+
+#ifndef C_VTUITOOLBARBUTTON_H
+#define C_VTUITOOLBARBUTTON_H
+
+#include <aknbutton.h> 
+
+class CVtUiAppUi;
+
+/**
+*  CVtUiToolbarButton
+*
+*  Toolbar button class definition.
+*
+*  @since S60 3.2
+*/
+class CVtUiToolbarButton : public CAknButton
+    {
+    public:
+    
+        /**
+        * Static constructor.
+        * @param aResourceId Resource id.
+        * @param aAppUi Reference to appui.
+        * @param aCmdId Reference to command id.
+        */
+    	static CVtUiToolbarButton* NewL( TInt aResourceId, 
+		    CVtUiAppUi& aAppUi, TInt aCmdId );
+		
+		 /**
+        * Static constructor.
+        * @param aResourceId Resource id.
+        * @param aAppUi Reference to appui.
+        * @param aCmdId Reference to command id.
+        */
+    	static CVtUiToolbarButton* NewLC( TInt aResourceId, 
+		    CVtUiAppUi& aAppUi, TInt aCmdId );
+		
+        /**
+        * C++ destructor.
+        */
+		~CVtUiToolbarButton();
+		
+        /*  
+        * Shows help text for a certain period of time.              	
+        */
+        void ShowHelpL(); 
+          
+        /*  
+        * Return commmand id
+        */           
+        TInt CmdId() const;   
+        
+        /*
+        * Starts or stops to block pointer events
+        * @param aIsBlocking ETrue if events are blocked
+        * otherwise EFalse
+        */
+        void BlockPointerEvents( TBool aIsBlocking );
+           
+        /*
+        * Starts or stops to block key events
+        * @param aIsBlocking ETrue if events are blocked
+        * otherwise EFalse
+        */
+        void BlockKeyEvents( TBool aIsBlocking );      
+        
+        
+        /* @see CAknButton::OfferKeyEventL */
+        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,
+            TEventCode aType );
+        
+        /* @see CAknButton::HandlePointerEventL */
+        void HandlePointerEventL( const TPointerEvent&
+            aPointerEvent );                                  	
+
+        /* @see CAknButton::StatesCount */
+        TInt StatesCount() const;
+
+    private:
+    
+        /**
+        * Constructor
+        */
+        CVtUiToolbarButton( CVtUiAppUi& aAppUi, TInt aCmdId );
+        	 
+    private:
+        
+        /**
+        * Checks whether key events should be blocked.
+        */
+        TBool IsCommandActive() const;  
+        
+    private: 
+         
+         // reference to appui
+         CVtUiAppUi& iAppUi;
+         
+         // command id
+         TInt iCmdId;
+         
+         // Flag to indicate is key event  blocking on
+         TBool iIsBlockingKeyEvents;
+         
+         // Flag to indicate is pointer event blocking on
+         TBool iIsBlockingPointerEvents;
+         
+         // time stamp to limit pointerevents
+         TTime iTimeStamp;
+         
+         TBool isLimitingPointers;
+         
+    };
+
+#endif // C_VTUITOOLBARBUTTON_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/toolbar/cvtuitoolbarcmdpolicy.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,100 @@
+/*
+* 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:  Toolbar command policy implementation.
+*
+*/
+
+
+#ifndef C_VTUITOOLBARCMDPOLICY_H
+#define C_VTUITOOLBARCMDPOLICY_H
+
+#include <e32base.h>
+
+#include "tvtuicmdpolicypriority.h"
+#include "cvtuicmdvalidatorbase.h"
+
+class CVtUiCmdValidationActionBase;
+class CVtUiToolbarBase;
+
+/**
+*  CVtUiToolbarCmdPolicy
+*
+*  Toolbar command policy implementation.
+*
+*  @since S60 v3.2
+*/
+class CVtUiToolbarCmdPolicy : public CVtUiCmdValidatorBase
+    {
+    public: // public methods
+
+        /**
+        * Static constructor.
+        * @param aToolbar Reference to toolbar.
+        */
+        static CVtUiToolbarCmdPolicy* NewL( CVtUiToolbarBase& aToolbar );
+
+    public: // from CVtUiCmdValidatorBase
+
+        /**
+        * @see CVtUiCmdValidatorBase::ValidateMenuItemsL
+        */
+        void ValidateMenuItemsL( CVtUiCmdValidationActionBase& aAction,
+            TInt aReferencePriority );
+
+        /**
+        * @see CVtUiCmdValidatorBase::ValidateSoftkeyItemsL
+        */
+        void ValidateSoftkeyItemsL( CVtUiCmdValidationActionBase& aAction,
+            TInt aReferencePriority );
+
+        /**
+        * @see CVtUiCmdValidatorBase::ValidateToolbarItemsL
+        */
+        void ValidateToolbarItemsL( CVtUiCmdValidationActionBase& aAction,
+            TInt aReferencePriority );
+
+        /**
+        * @see CVtUiCmdValidatorBase::CustomValidationL
+        */
+        void CustomValidationL( CVtUiCmdCustomValidationActionBase& aAction,
+            TInt aReferencePriority );
+
+        /**
+        * @see CVtUiCmdValidatorBase::ValidatesContext
+        */
+        TBool ValidatesContext( const TVtUiCmdContextType& aCtxType )
+            const;
+            
+    private:
+
+        /**
+        * C++ constructor
+        *
+        */
+        CVtUiToolbarCmdPolicy( CVtUiToolbarBase& aToolbar );
+
+        /**
+        * Callback for menu validation.
+        *
+        */
+        TBool ValidateMenuCommand( TInt aCommandId ) const;
+
+    private: // data
+
+        // Reference to cvtuitoolbar
+        CVtUiToolbarBase& iToolbar;
+        
+    };
+
+#endif // C_VTUITOOLBARCMDPOLICY_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/toolbar/cvtuitoolbarcontext.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,78 @@
+/*
+* 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:  Toolbar context class definition.
+*
+*/
+
+
+#ifndef C_VTUITOOLBARCONTEXT_H
+#define C_VTUITOOLBARCONTEXT_H
+
+#include <e32base.h>
+
+#include "cvtuicmdcontext.h"
+
+class CVtUiCmdValidatorBase;
+
+/** Toolbar context reference priority */
+const TInt KVtUiToolbarContextPriority = 50;
+
+/**
+*  CVtUiToolbarContext
+*
+*  Toolbar context class definition.
+*
+*  @since S60 v3.2
+*/
+class  CVtUiToolbarContext : public CVtUiCmdContext
+    {
+    public: // public methods
+
+        /**
+         * C++ destructor.
+         *
+         */
+        ~CVtUiToolbarContext();
+
+        /**
+        * Leave safe destructor.
+        * @param aCommandManager Reference to command manager.
+        */
+        static CVtUiToolbarContext* NewL(
+            MVtUiCommandManager& aCommandManager );
+
+    public: // from CVtUiCmdContext
+
+        /**
+        *  @see CVtUiCmdContext::ValidateL
+        */
+        void ValidateL( CVtUiCmdValidationActionBase& aAction );
+
+    private:
+
+        /**
+        * C++ constructor
+        *
+        * @param aCommandManager Reference to command manager.
+        */
+        CVtUiToolbarContext( MVtUiCommandManager& aCommandManager );
+
+        /**
+         * 2nd consttuctor, may leave.
+         */
+        void ConstructL();
+        
+    };
+
+#endif // C_VTUITOOLBARCONTEXT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/toolbar/cvtuitoolbarskmodifier.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,86 @@
+/*
+* 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:  Toolbar softkey modifier class definition.
+*
+*/
+
+
+#ifndef C_VTUITOOLBARSKMODIFIER_H
+#define C_VTUITOOLBARSKMODIFIER_H
+
+#include <e32base.h>
+#include "cvtuicommandmodifybase.h"
+
+class   CVtUiAppUi;
+class   TVtUiStates;
+
+/**
+*  CVtUiToolbarSKModifier
+*
+* Toolbar softkey modifier class definition.
+*
+*  @since S60 v3.2
+*/
+class CVtUiToolbarSKModifier : public CVtUiCommandModifyBase
+    {
+    public: // static methods
+        /**
+        * Static constructor.
+        * @param aAppUi Reference to command appui.
+        * @param aUiStates Reference to uistates.
+        */
+        static CVtUiToolbarSKModifier* NewL( CVtUiAppUi& aAppUi,
+                const TVtUiStates& aUiStates );
+
+        /**
+        * Destructor
+        */
+        ~CVtUiToolbarSKModifier();
+
+    public: // from base class
+
+        /**
+        * @See CVtUiCommandModifyBase::ModifyCommandsL
+        */
+        virtual void ModifyCommandsL( MVtUiCommandSetting& aCommandSettings );
+
+       /**
+        * @See CVtUiCommandModifyBase::Supports
+        */
+        virtual TBool Supports( MVtUiCommandSetting::Type aType ) const;
+
+    private:
+        /**
+         * C++ constructor
+         *
+         */
+        CVtUiToolbarSKModifier( CVtUiAppUi& aAppUi,
+                const TVtUiStates& aUiStates );
+
+        /**
+         * 2nd constructor
+         */
+        void ConstructL();
+
+    private: // data
+
+        // refrence to appui
+        CVtUiAppUi& iAppUi;
+
+        // UI states
+        const TVtUiStates& iUiStates;
+
+    };
+
+#endif // C_VTUITOOLBARSKMODIFIER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/toolbar/tvtuitoolbarcommanditerator.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,66 @@
+/*
+* 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:  Toolbar command iterator class definition.
+*
+*/
+
+
+#ifndef T_VTUITOOLBARCOMMANDITERATOR_H
+#define T_VTUITOOLBARCOMMANDITERATOR_H
+
+#include "mvtuicommanditerator.h"
+
+class CVtUiToolbarBase;
+
+/**
+*  TVtUiToolbarCommandIterator
+*
+*  Toolbar command iterator class definition.
+*
+*  @since S60 v3.2
+*/
+class TVtUiToolbarCommandIterator : public MVtUiCommandIterator
+    {
+
+public: // public methods
+
+    /**
+    * C++ constructor
+    * @param aToolbar Reference to toolbar.
+    */
+    TVtUiToolbarCommandIterator( CVtUiToolbarBase& aToolbar );
+
+public: // from MVtUiCommandIterator
+
+    /**
+     * @see MVtUiCommandIterator::HasNext
+     */
+    TBool HasNext() const;
+
+    /**
+     * @see MVtUiCommandIterator::Next
+     */
+    TInt Next();
+
+private:
+
+    // Pointer to Toolbar
+    CVtUiToolbarBase* iToolbar;
+
+    // Current iteration point
+    TInt iCurrent;
+    
+    };
+
+#endif // T_VTUITOOLBARCOMMANDITERATOR_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/tvtuifeatureids.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,69 @@
+/*
+* 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:  Feature ids.
+*
+*/
+
+
+#ifndef T_VTUIFEATUREIDS_H
+#define T_VTUIFEATUREIDS_H
+
+/**
+ *
+ * Feature IDs.
+ *
+ */
+enum TVtUiFeatureId
+    {
+    /** Toolbar feature id */
+    EVtUiFeatureIdToolbar = 1,
+
+    /** Softkey feature id */
+    EVtUiFeatureIdSoftkey,
+
+    /** Menu feature id */
+    EVtUiFeatureIdMenu,
+
+    /** Mini Dialer feature id */
+    EVtUiFeatureIdMiniDialer,
+
+    /** Number entry feature id */
+    EVtUiFeatureIdNumberEntry,
+    
+    /** Video quality feature id */
+    EVtUiFeatureIdVideoQuality,
+    
+    /** White balance feature id */
+    EVtUiFeatureIdWhiteBalance,
+
+    /** Color tone feature id */
+    EVtUiFeatureIdColourTone,
+
+    /** Brightness feature id */
+    EVtUiFeatureIdBrightness,
+
+    /** Contrast feature id */
+    EVtUiFeatureIdContrast,
+
+    /** Dialer feature id */
+    EVtUiFeatureIdDialer,
+
+    /** Volume feature id */
+    EVtUiFeatureIdVolume,
+
+    /** Zoom feature id */
+    EVtUiFeatureIdZoom
+    };
+
+#endif // T_VTUIFEATUREIDS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/volume/cvtuivolume.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,83 @@
+/*
+* 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:  Volume ui feature
+*
+*/
+
+
+#ifndef C_VTUIVOLUME_H
+#define C_VTUIVOLUME_H
+
+#include "cvtuisliderbase.h"
+
+/**
+*  CVtUiVolume
+*
+*  Volume ui feature
+*
+*  @since S60 v3.2
+*/
+class CVtUiVolume : public CVtUiSliderBase
+    {
+
+public:
+
+    /**
+    * Static constructor
+    * @param aFeatureManager Reference to feature manager.
+    */
+    static CVtUiVolume* NewL( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+    * Destructor
+    */
+    ~CVtUiVolume();
+
+    /**
+    * Refresh volume popup status.
+    */
+    void RefreshL();
+
+public: // from CVtUiSliderBase
+
+    /**
+    * @see CVtUiSliderBase::StartL
+    */
+    void StartL();
+    
+    /**
+    * @see CVtUiSliderBase::Stop
+    */
+    void Stop();
+    
+    /*
+    * Return current slider's volume value 
+    */
+    TInt GetVolumeValue();
+
+protected:
+
+    /*
+    * Constructor
+    */
+    CVtUiVolume( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+    * 2nd constructor
+    */
+    void ConstructL();
+
+    };
+
+#endif // C_VTUIVOLUME_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/volume/cvtuivolumecontrol.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,118 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Volume control adjusts engine side volume values.
+*
+*/
+
+
+
+#ifndef CVTUIVOLUMECONTROL_H
+#define CVTUIVOLUMECONTROL_H
+
+
+#include    <e32base.h>
+#include    <mvtengcommandobserver.h>
+#include    <mvtengaudio.h>
+
+class MVtEngCommandHandler;
+class MVtUiEngineCommandManager;
+class CVtUiFeatureManager;
+
+
+/**
+*  Volume control adjusts engine side volume values.
+*
+*  @since Series 60 v5.0
+*/
+class CVtUiVolumeControl
+    : public CBase,
+      private MVtEngCommandObserver
+    {
+    public: // Constructors and destructor
+
+    // Type for volume settings.
+    typedef MVtEngAudio::TVtEngOutputVolume TVolume;
+
+    /**
+    * Constructor.
+    *
+    * @param aSelfPtr optional pointer to itself.
+    * @param aCommandHandler command handler.
+    * @param aAudio audio interface.
+    * @param aCommandManager command manager.
+    * @param aFeatureManager Reference to feature manager.
+    */
+    CVtUiVolumeControl(
+        MVtEngCommandHandler& aCommandHandler,
+        MVtEngAudio& aAudio,
+        MVtUiEngineCommandManager& aCommandManager,
+        CVtUiFeatureManager& aFeatureManager );
+
+    /*
+    * 2nd phase constructor
+    */
+    void ConstructL();
+
+    /**
+    * Destructor.
+    */
+    ~CVtUiVolumeControl();
+
+public: // New functions
+
+    // Adjust volume to new value
+    void AdjustVolumeL( TVolume aVolume );
+        
+private:
+
+    /**
+    * @see MVtEngCommandObserver::HandleVTCommandPerformedL.
+    */
+    virtual void HandleVTCommandPerformedL(
+        TVtEngCommandId aCommand,
+        const TInt aError );
+    
+    // Checks if volume is changed in slider
+    TBool IsVolumeChangedL();
+
+private:
+
+    // Reference to command handler.
+    MVtEngCommandHandler& iCommandHandler;
+
+    // Reference to audio interface.
+    MVtEngAudio& iAudio;
+
+    // Reference to command manager.
+    MVtUiEngineCommandManager& iCommandManager;
+
+    // ETrue if command is performed.
+    TBool iCommandPerformed;
+
+    // Volume being updated to engine.
+    TVolume iVolume;
+
+    // Volume pointer descriptor.
+    TPtrC8 iVolumePtr;
+    
+    // Reference to featuremanager
+    CVtUiFeatureManager& iFeatureManager;
+    
+    // Is control adjusting volume
+    TBool iIsActive;
+    };
+
+#endif      // CVtUiVolumeControl_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/volume/cvtuivolumepopup.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,118 @@
+/*
+* 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:  Volume popup definition
+*
+*/
+
+
+#ifndef C_VTUIVOLUMEPOPUP_H
+#define C_VTUIVOLUMEPOPUP_H
+
+#include "tvtuicomponentstate.h"
+#include "cvtuipopupbase.h"
+#include "mvtengaudio.h"
+
+class CVtUiFeatureManager;
+class CVtEngModel;
+
+/**
+*  CVtUiVolumePopup
+*
+*  Volume popup definition.
+*
+*  @since S60 v3.2
+*/
+class CVtUiVolumePopup : public CVtUiPopupBase
+    {
+
+public:
+
+    /**
+    * Static constructor
+    * @param aFeatureManager Reference to feature manager.
+    */
+    static CVtUiVolumePopup* NewL( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+    * Destructor
+    */
+    ~CVtUiVolumePopup();
+
+    /**
+    * Refresh volume popup status.
+    */
+    void RefreshL();
+
+    /**
+    * Update volume popup and audio routing
+    */
+    void UpdateVolumeAndRoutingL();
+
+private: // from base class
+
+    /**
+    * @see CVtUiPopupBase::DoActivateL
+    */
+    void DoActivateL();
+
+    /**
+    * @see CVtUiPopupBase::OfferKeyEventL
+    */
+    TKeyResponse OfferKeyEventL( const TKeyEvent& aEvent,
+        TEventCode aCode );
+
+    /**
+    * @see CVtUiPopupBase::HandleControlEventL
+    */
+    void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType );
+
+private:
+
+    /**
+     * Constructor
+     */
+    CVtUiVolumePopup( CVtUiFeatureManager& aFeatureManager );
+
+    /*
+    * 2nd constructor
+    */
+    void ConstructL();
+
+    /**
+    * Returns current output volume for given routing.
+    */
+    TInt OutputVolume( MVtEngAudio::TAudioRoutingState aRouting ) const;
+        
+    /**
+    * Updates volume 
+    */   
+    void UpdateVolumeL();        
+
+private:
+
+    // Engine model
+    CVtEngModel& iModel;
+
+    // Stored audio routing state.
+    MVtEngAudio::TAudioRoutingState iAudioRouting;
+
+    // Stored volume
+    TInt iVolume;
+    
+    // Reference to feature manager
+    CVtUiFeatureManager& iFeatureManager;
+
+    };
+
+#endif // C_VTUIVOLUMEPOPUP_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/zoom/cvtuizoom.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,83 @@
+/*
+* 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:  Zoom ui feature
+*
+*/
+
+
+#ifndef C_VTUIZOOM_H
+#define C_VTUIZOOM_H
+
+#include "cvtuisliderbase.h"
+
+/**
+*  CVtUiZoom
+*
+*  Zoom ui feature
+*
+*  @since S60 v3.2
+*/
+class CVtUiZoom : public CVtUiSliderBase
+    {
+
+public:
+
+    /**
+    * Static constructor
+    * @param aFeatureManager Reference to feature manager.
+    */
+    static CVtUiZoom* NewL( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+    * Destructor
+    */
+    ~CVtUiZoom();
+
+    /**
+    * Refresh zoom popup status.
+    */
+    void RefreshL();
+
+public: // from CVtUiSliderBase
+
+    /**
+    * @see CVtUiSliderBase::StartL
+    */
+    void StartL();
+
+    /**
+    * @see CVtUiSliderBase::Stop
+    */
+    void Stop();
+    
+    /**
+    * @see CVtUiSliderBase::ComponenStateChangedL
+    */
+    void ComponenStateChangedL();
+    
+protected:
+
+    /*
+    * Constructor
+    */
+    CVtUiZoom( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+    * 2nd constructor
+    */
+    void ConstructL();
+
+    };
+
+#endif // C_VTUIZOOM_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/zoom/cvtuizoompopup.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,121 @@
+/*
+* 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:  Zoom popup definition
+*
+*/
+
+
+#ifndef C_VTUIZOOMPOPUP_H
+#define C_VTUIZOOMPOPUP_H
+
+#include "tvtuicomponentstate.h"
+#include "cvtuipopupbase.h"
+
+class CVtUiFeatureManager;
+class MVtEngMedia;
+
+/**
+*  CVtUiZoomPopup
+*
+*  Zoom popup definition.
+*
+*  @since S60 v3.2
+*/
+class CVtUiZoomPopup : public CVtUiPopupBase
+    {
+
+public:
+
+    /**
+    * Static constructor
+    * @param aFeatureManager Reference to feature manager.
+    */
+    static CVtUiZoomPopup* NewL( CVtUiFeatureManager& aFeatureManager );
+
+    /**
+    * Destructor
+    */
+    ~CVtUiZoomPopup();
+
+    /**
+    * Refresh zoom popup status.
+    */
+    void RefreshL();
+
+private: // from CVtUiPopupBase
+
+    /**
+    * @see CVtUiPopupBase::DoActivateL
+    */
+    void DoActivateL();
+
+private: // from base class
+
+    /**
+    * @see CVtUiPopupBase::OfferKeyEventL
+    */
+    TKeyResponse OfferKeyEventL( const TKeyEvent& aEvent,
+        TEventCode aCode );
+
+    /**
+    * @see CVtUiPopupBase::HandleControlEventL
+    */
+    void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType );
+
+private:
+
+    /**
+     * Constructor
+     */
+    CVtUiZoomPopup( CVtUiFeatureManager& aFeatureManager );
+
+    /*
+    * 2nd constructor
+    */
+    void ConstructL();
+
+    /*
+    * Updates zoom adjust range according to current active provider.
+    */
+    void UpdateAdjustRangeL();
+
+    /**
+    * Returns current zoom step or KErrNotFound if an error happens.
+    */
+    TInt CurrentZoomStep() const;
+
+    /**
+    * Returns maximum zoom step or KErrNotFound if an error happens.
+    */
+    TInt MaxZoomStep() const;
+    
+    void ScaleAndSetZoomFactorL( TInt aValue );
+
+private:
+
+    // Reference to feature manager
+    CVtUiFeatureManager& iFeatureManager;
+
+    // Engine media
+    MVtEngMedia& iMedia;
+
+    // Current zoom
+    TInt iCurrent;
+
+    // Maximum zoom value
+    TInt iMax;
+
+    };
+
+#endif // C_VTUIZOOMPOPUP_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/mvtuinumbersource.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,42 @@
+/*
+* 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:  Number Source API
+*
+*/
+
+
+#ifndef M_VTUINUMBERSOURCE_H
+#define M_VTUINUMBERSOURCE_H
+
+#include <e32base.h>
+
+/**
+ *  MVtUiNumberSource
+ *
+ *  @since S60 v3.2
+ */
+class MVtUiNumberSource
+    {
+
+public:
+
+    /**
+     * Gets number typed by the user.
+     *
+     */
+    virtual void GetContents( TDes& aContents ) const = 0;
+
+    };
+
+#endif // M_VTUINUMBERSOURCE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/mvtuishutterobserver.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,38 @@
+/*
+* 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:  Interface for reporting application shutdown readiness.
+*
+*/
+
+
+#ifndef M_MVTUISHUTTEROBSERVER_H
+#define M_MVTUISHUTTEROBSERVER_H
+
+
+/**
+* Observer interface for reporting shutdown readiness.
+*
+* @since S60 v3.2
+*/
+class MVtUiShutterObserver
+    {
+public:
+
+    /**
+    * Called when application can exit.
+    */
+    virtual void HandleShutdownReady() = 0;
+    };
+    
+#endif // M_MVTUISHUTTEROBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/mvtuistatecontext.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,158 @@
+/*
+* 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:  Interface for state objects to request application services.
+*
+*/
+
+
+#ifndef M_MVTUISTATECONTEXT_H
+#define M_MVTUISTATECONTEXT_H
+
+#include <e32def.h> 
+#include <vtengcommands.h>
+#include "mvtuishutterobserver.h"
+
+class TVtUiAppStateBase;
+class CVtEngModel;
+class MVtUiNumberSource;
+class TVtUiVideoTelephonyVariation;
+
+/**
+* Provides service interface for application state objects.
+*
+* @since S60 v3.2
+*/
+class MVtUiStateContext : public MVtUiShutterObserver
+    {
+    public:
+                
+        /**
+        * Starts first phase of startup when prepare is received.
+        */
+        virtual void StartupPhase1L() = 0;
+        
+        /**
+        * Starts application shutdown.
+        */
+        virtual void ShutdownL() = 0;
+        
+        /**
+        * Starts second phase of startup.
+        */
+        virtual void StartupPhase2L() = 0;
+        
+        /**
+        * Sets application to foreground and background.            
+        * @param aForeground ETrue => foreground, EFalse => background
+        */
+        virtual void ChangeApplicationFocus( const TBool aForeground ) = 0;
+        
+        /**
+        * Changes current application state.
+        * @param aState new state
+        */
+        virtual void ChangeState( TVtUiAppStateBase* aState ) = 0;
+        
+        /**
+        * Starts DTMF tone.
+        * @param aTone DTMF tone.
+        */
+        virtual void StartDtmfTone( const TChar& aTone ) = 0;
+        
+        /**
+        * Stops tarts DTMF tone.
+        */
+        virtual void StopDtmfTone() = 0;
+        
+        /**
+        * Returns model.
+        * @return model
+        */
+        virtual CVtEngModel& Model() = 0;
+                        
+        /**
+        * Returns video telephony variation.
+        * @return variation
+        */
+        virtual const TVtUiVideoTelephonyVariation& 
+            VideoTelephonyVariation() const = 0;
+        /**
+        * Returns source containing numbers typed by the user.
+        * @return number soure
+        */
+        virtual MVtUiNumberSource* NumberSource() const = 0;
+        
+        /**
+        * Executes engine command.
+        * @param aCommand command id
+        * @param aParams command params
+        */
+        virtual void DoExecuteCmdL( const TVtEngCommandId aCommand,
+                TDesC8* aParams ) = 0;
+        
+        /**
+        * Refreshes application UI.
+        * @param aRefreshFlags identifies what to refresh
+        */
+        virtual void RefreshL( const TInt aRefreshFlags ) = 0;          
+        
+        /**
+        * Updates engine states.
+        */
+        virtual void  RefreshStatesL() = 0;
+
+        /**
+        * Handles layout change.
+        */
+        virtual void DoHandleLayoutChangedL() = 0;
+
+        /**
+        * Sets call id.
+        */
+        virtual void SetCallIdL( const TInt aCallId ) = 0;
+        
+        /**
+        * Sets display text of remote end.
+        */
+        virtual TBool SetCallNameL( const TDesC& aName ) = 0;
+        
+        /**
+
+        
+        /**
+        * Refresh flags
+        */        
+        enum TRefreshFlags
+            {
+            /** Navipane is refreshed */
+            ENaviPane       = 0x01,
+            /** Softkeys are refreshed */
+            ESoftkeys       = 0x02,
+            /** Refreshes blind (video availability) status */
+            EBlind          = 0x04,
+            /** Refreshes state sync with call handling */
+            ESynchronise    = 0x08,
+            /** Refreshes internal states (media etc) */
+            EUiStates       = 0x10,
+            /** Refreshes everything */
+            EAll            = ENaviPane | 
+                              ESoftkeys | 
+                              EBlind | 
+                              ESynchronise | 
+                              EUiStates
+            };
+    };
+
+    
+#endif // M_MVTUISTATECONTEXT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/sliders/cvtuipopupbase.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,275 @@
+/*
+* 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:  Base class for video telephone popups
+*
+*/
+
+
+#ifndef     C_VTUIPOPUPBASE_H
+#define     C_VTUIPOPUPBASE_H
+
+#include    <coecobs.h>
+
+#include    "mvtuicomponent.h"
+#include    "tvtuicomponentstate.h"
+#include    "tvtuifeatureids.h"
+#include    "mvtuiresourcechangeobserver.h"
+#include    "mvtuikeyeventobserver.h"
+
+class CAknVolumePopup;
+class MVtUiComponentManager;
+class MVtUiComponentStateObserver;
+class CFbsBitmap;
+
+/**
+*  TVtUiBaseComponentState
+*
+*  Base componentstate definition.
+*
+*  @since S60 v3.2
+*/
+class TVtUiBaseComponentState : public TVtUiComponentState
+    {
+
+public:
+    /**
+    * Constructor
+    * @param aComponent Reference to component.
+    */
+    TVtUiBaseComponentState( MVtUiComponent& aComponent,
+        TVtUiBlockListBitField aBitField  );
+    };
+
+/**
+*  CVtUiPopupBase
+*
+*  Base class for vide telephone  popups
+*
+*  @since S60 v3.2
+*/
+class CVtUiPopupBase : public CBase, public MVtUiComponent,
+    public MVtUiResourceChangeObserver, public MCoeControlObserver,
+    public MVtUiKeyEventObserver
+    {
+
+public:
+
+    /**
+    * Destructor
+    */
+    ~CVtUiPopupBase();
+
+public: // from MVtUiComponent
+
+    /**
+    * @see MVtUiComponent::ComponentId
+    */
+    TComponentId ComponentId() const;
+
+    /**
+    * @see MVtUiComponent::ComponentAsControl
+    */
+    CCoeControl* ComponentAsControl();
+
+    /**
+    * @see MVtUiComponent::DoActivateL
+    */
+    virtual void DoActivateL();
+
+    /**
+    * @see MVtUiComponent::DoDeactivateL
+    */
+    virtual void DoDeactivateL();
+
+public: // from MVtUiComponentManager
+
+    /**
+    * @see MVtUiComponentManager::HandleResourceChangeL
+    */
+    void HandleResourceChangeL( TInt aType );
+
+public: // from MCoeControlObserver
+
+   /**
+   * @see MCoeControlObserver::HandleControlEventL
+   */
+   virtual void HandleControlEventL(
+        CCoeControl* aControl,TCoeEvent aEventType ) = 0;
+
+public: // from MVtUiKeyEventObserver
+
+    /**
+    * @see CCoeControl::MVtUiKeyEventObserver
+    */
+   TKeyResponse OfferKeyEventL( const TKeyEvent& aEvent, TEventCode aCode );
+
+public: // new functions
+   
+    /**
+    * Set popup to be pemanently visible i.e. tapping outside
+    * the control doesn't close the control.
+    * @param aPermanent If Etrue popup will be visible all the time,
+    * otherwise popup is closed and next time will obey timeout.
+    */
+    void SetPermanenVisibility( TBool aPermanent );
+    
+    /**
+    * Set new component observer
+    * @param iCompStateObserver New observer
+    */
+    void SetObserver( MVtUiComponentStateObserver& aCompStateObserver );
+    
+    /**
+    * Gets slider control value.
+    * @return value within slider control's value range
+    */
+    TInt Value() const;
+
+    /**
+    * update popup itself
+    */
+    virtual void UpdatePopupL();
+    
+protected: // new functions
+   
+    /**
+    * Set new value to slider control.
+    * @param aValue value within slider control's value range.
+    */
+    void SetValue( TInt aValue );
+    
+    /**
+    * Scales the given value to slider control's value range
+    * and sets it to the slider control
+    * @param aValue value within popup control's value range.
+    */
+    void ScaleAndSetValue( TInt aValue );
+    
+    /**
+    * Gets value from the slider control and scales it
+    * @return value within popup control's value range
+    */ 
+    TInt ScaledValue() const;
+    
+    /**
+    * Gets value from the slider control and scales it
+    * @param aValue value in popup control's value range.
+    * @return value within slider control's value range
+    */ 
+    TInt SliderValueWithScaling( TInt aValue ) const;
+    
+    /**
+    * Set new end point values popup control
+    * These values are not same as slider's range
+    */
+    void SetMinAndMaxValues( TInt aMax, TInt aMin );
+   
+    /*
+    * Set adjust range of the slider
+    */
+    void SetAdjustRange( TInt aMinimumValue, TInt aMaximumValue,
+        TInt aStepCount );
+
+    /**
+    * Set value type for vertical slider control
+    */
+    void SetValueType( TInt aValueType );
+    
+    /**
+    * Shows popup.
+    */
+    void ShowPopupL();
+
+    /**
+    * Opens popup.
+    */
+    void OpenPopupL();
+
+    /**
+    * Closes popup
+    */
+    void ClosePopup();
+    
+    /**
+    * Set time out time in seconds
+    */
+    void SetTimeOut( TInt aTime );
+    
+    /**
+    * Checks whether popup is visible
+    */
+    TBool IsPopUpVisible();
+    
+protected:    
+    
+    /**
+    * Constructor
+    */
+    CVtUiPopupBase( MVtUiComponentManager& aComponentManager,
+        TVtUiBlockListBitField aBitField, TComponentId aComponentId );
+
+     /**
+     * 2nd constructor
+     */
+    void BaseConstructL();
+
+private:
+
+    /**
+    * Position of the popup
+    */
+    TPoint PopupPosition() const;
+    
+    /**
+    * Sets popup controls's value
+    */
+    void SetPopupValue( TInt aValue );
+
+protected: // Set in child constructor
+
+    // Reference to component manager
+    MVtUiComponentManager& iComponentManager;
+
+    // Component state
+    TVtUiBaseComponentState iComponentState;
+
+    // Component id
+    TComponentId iComponentId;
+
+private:
+
+    // class for slider handling
+    CAknVolumePopup* iPopup;
+
+    // Interface for component state observing
+    MVtUiComponentStateObserver* iCompStateObserver;
+
+    // Maximum value
+    TInt iMax;
+
+    // Minimum value
+    TInt iMin;
+
+    // Number of steps
+    TInt iStepCount;
+    
+    // Time out for showing popup
+    TInt iTimeOutTime;
+    
+    // Scaling constant
+    TInt iScalingConstant;
+    
+    };
+
+#endif // CVTUIPEFSLIDERBASE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/sliders/cvtuisliderbase.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,114 @@
+/*
+* 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:  Base class for video telephone sliders
+*
+*/
+
+
+#ifndef     C_VTUISLIDERBASE_H
+#define     C_VTUISLIDERBASE_H
+
+#include    "cvtuifeaturebase.h"
+#include    "mvtuicomponent.h"
+#include    "mvtuicomponentstateobserver.h"
+
+class CVtUiPopupBase;
+
+/**
+*  CVtUiSliderBase
+*
+*  Base class for vide telephone sliders
+*
+*  @since S60 v3.2
+*/
+class CVtUiSliderBase : public CVtUiFeatureBase, public MVtUiComponentStateObserver
+    {
+
+public:
+
+    /**
+    * Destructor
+    */
+    ~CVtUiSliderBase();
+    
+    /**
+    * update slider itself
+    */
+    void UpdateSlider();
+    
+public: // from MVtUiFeature
+
+    /**
+    * @see MVtUiFeature::StartL
+    */
+    void StartL();
+
+     /**
+    * @see MVtUiFeature::Stop
+    */
+    void Stop();
+
+     /**
+    * @see MVtUiFeature::InitFeatureL
+    */
+    void InitFeatureL();
+
+public: // from MVtUiComponentStateObserver
+
+    /**
+    * @see MVtUiComponentStateObserver::ComponenStateChangedL
+    */
+    virtual void ComponenStateChangedL();
+    
+    /**
+    * @see CVtUiPopupBase::SetPermanenVisibility
+    */
+    void SetPermanenVisibility( TBool aPermanent );
+
+protected:
+
+    /*
+    * Constructor
+    */
+    CVtUiSliderBase( CVtUiFeatureManager& aFeatureManager,
+        TVtUiFeatureId aFeatureId );
+
+    /**
+    * 2nd constructor
+    */
+    void ConstructL();
+
+    /**
+    * Sets popup pointer.
+    */
+    void SetPopup( CVtUiPopupBase* aPopup );
+
+    /**
+    * Gets popup reference.
+    */
+    CVtUiPopupBase& Popup();
+
+    /**
+    * Gets popup const reference.
+    */
+    const CVtUiPopupBase& Popup() const;
+
+private:
+
+    // pop up base
+    CVtUiPopupBase* iPopup;
+
+    };
+
+#endif // CVTUIPEFSLIDERBASE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/sliders/mvtuicomponentstateobserver.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,41 @@
+/*
+* 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:  Observer API for popup based controls
+*
+*/
+
+
+#ifndef M_VTUICOMPONENTSTATEOBSERVER_H
+#define M_VTUICOMPONENTSTATEOBSERVER_H
+
+/**
+* MVtUiComponentStateObserver
+*
+* Observer API for popup based controls
+*
+* @since S60 v3.2
+*/
+class MVtUiComponentStateObserver
+    {
+
+public:
+
+    /**
+    * Called when component state changes
+    */
+    virtual void ComponenStateChangedL() = 0;
+
+    };
+
+#endif // M_VTUICOMPONENTSTATEOBSERVER_H
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/tvtuiappstatebase.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,256 @@
+/*
+* Copyright (c) 2007 - 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:  Base class for application states.
+*
+*/
+
+
+#ifndef T_VTUIAPPSTATEBASE_H
+#define T_VTUIAPPSTATEBASE_H
+
+#include <e32base.h>
+#include <mvtengsessioninfo.h>
+#include "mvtuistatecontext.h"
+#include "mvtuishutterobserver.h"
+#include "tvtuistates.h"
+
+/**
+* Base class for application states related to application startup, normal
+* operation and shutdown. AppUi delegates decision making by forwarding
+* events/commands it receives to current state.
+* Not all event handlers declared by the base class are applicable in
+* all concrete states. All methods returning TEventResponse imply that it may
+* consume the event completely and caller should not process it further.
+*
+* It should be kept in mind that as new functionality is added to application,
+* state classes may need changes if e.g. handling of specific event should be
+* allowed in appUi. By default event handler in specific state may consume all
+* events. Note that in this context e.g. HandleCommandL is considered as an
+* event handler.
+*
+* @since S60 v3.2
+*/
+class TVtUiAppStateBase : public MVtUiShutterObserver
+    {
+public: // new functions
+
+    /**
+    * Return value from state's event handlers.
+    */
+    enum TEventResponse
+        {
+        /** Event was handled by a state and should
+         *  not be further processed by caller.
+         */
+        EEventHandled,
+        /** Event can be handled by caller. */
+        EEventNotHandled
+    };
+
+    /**
+    * Performs state dependent actions when phase 1 of
+    * startup is completed.
+    */
+    virtual void AppUiStartupPhase1DoneL();
+
+    /**
+    * Performs state dependent actions when startup fails.
+    */
+    virtual void AppUiStartupFailedL();
+
+    /**
+    * Performs state dependent actions when phase 2 of
+    * startup is completed.
+    */
+    virtual void AppUiStartupPhase2DoneL();
+
+    /**
+    * Handles completion of shutdown.
+    */
+    virtual void ShutdownDoneL();
+
+    /**
+    * Handles completion of an VT engine command.
+    * @param aCommand completed command
+    * @param aError error
+    * @return event response, is caller allowed to handle event
+    */
+    virtual TEventResponse HandleVTCommandPerformedL(
+        const TVtEngCommandId aCommand,
+        const TInt aError );
+
+    /**
+    * Handles event from the engine.
+    * @param aEvent
+    * @return event response, is caller allowed to handle event
+    */
+    virtual TEventResponse HandleVtEventL( const TInt aEvent );
+
+    /**
+    * Handles command from the user (or application framework).
+    * @param aCommand
+    * @return event response, is caller allowed to handle event
+    */
+    virtual TEventResponse HandleCommandL( const TInt aCommand );
+
+    /**
+    * Performs state dependent actions for foreground change event.
+    * @param aIsForeground foreground status passed from UI framework
+    * @return ETrue if application should behave as in foreground
+    */
+    virtual TBool HandleForegroundChangedL( const TBool aIsForeground );
+
+    /**
+    * Performs state dependent previous actions for foreground change event.
+    * @param aIsForeground foreground status passed from UI framework
+    * @return ETrue if application should behave as in foreground
+    */
+    virtual TBool PreHandleForegroundChangedL( const TBool aIsForeground );
+    /**
+    * Performs state dependent actions for layout change.
+    */
+    virtual void HandleLayoutChangedL();
+    
+    /**
+    * Sends DTMF tone if allowed by current state.
+    * @param aTone DTMF tone to send
+    */
+    virtual void StartDtmfTone( const TChar& aTone );
+
+    /**
+    * Stops DTMF tone if allowed by current state.
+    */
+    virtual void StopDtmfTone();
+
+    /**
+    * Sets initial application state.
+    * @param aCtx state context providing services to states
+    * @param aUiStates ui states
+    */
+    static void SetInitialStateL(
+        MVtUiStateContext& aCtx,
+        TVtUiStates& aUiStates);
+    
+    /**
+    * Get whether the shutdown requested
+    * @return ETrue if shutdown requested
+    */
+    static TBool ShutdownRequested();
+
+protected: // for concrete state classes
+
+    /**
+    * Destructor, for cleanup.
+    */
+    virtual ~TVtUiAppStateBase();
+
+    /**
+    * Performs entry action for a state.
+    */
+    virtual void OpenL();
+
+    /**
+    * Performs exit action for a state and deletes that state.
+    */
+    virtual void Close();
+
+    /**
+    * Sets current state.
+    */
+    void ChangeStateL( TVtUiAppStateBase& aNewState );
+
+    /**
+    * Sets transition to resetting state as cleanup item.
+    */
+    void CleanupResetPushL();
+
+    /**
+    * Starts shutdown when leave occurred.
+    */
+    static void TransitionToReset( TAny* aAny );
+
+
+    /**
+    * Ends the call if necessary and starts shutdown.
+    * @return ETrue if shutdown started.
+    */
+    TBool CheckEndActiveCallL();
+
+    /**
+    * Returns engine session state.
+    * @param aUpdate is state forced to update
+    * @return session state
+    */
+    MVtEngSessionInfo::TSessionState SessionState(
+        const TBool aUpdate ) const;
+
+    /**
+    * Sets forced lights state in the system.
+    */
+    void SetLightsState( const TBool aOn );
+
+    /**
+    * Delegates engine command execution to the state context.
+    */
+    template < typename T >
+    inline void ExecuteEngineCommand(
+        TInt aCommand, T& aParam );
+
+    /**
+    * Sets execution state.
+    */
+    void SetExecState( const TVtUiStates::TVtUiExecState aState );
+
+protected: // constructor
+
+    // c++ constructor
+    TVtUiAppStateBase( MVtUiStateContext& aCtx, TVtUiStates& aUiStates );
+
+private: // from MVtUiShutterObserver
+
+    /**
+    * Handles 'shutdown ready' event.
+    */
+    virtual void HandleShutdownReady();
+
+private: // new functions
+
+    /**
+    * Updates applications lock state and sends to background if
+    * the device is locked.
+    */
+    void HandleDeviceLockEventL( const TBool aDeviceIsLocked );
+
+protected: // data members
+
+    // Context providing services to states
+    MVtUiStateContext&  iCtx;
+
+    // Various application specific state information
+    TVtUiStates&        iUiStates;
+
+    /** Prevents sending end call command to call handling if ETrue.
+     *  It is not allowed when call clearing is network originated.
+     */
+    
+    /**
+     * shutdown request received
+     */
+    static TBool iShutdownRequested;
+    
+    };
+
+#include "tvtuiappstatebase.inl"
+
+#endif // T_VTUIAPPSTATEBASE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/tvtuiappstatebase.inl	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,26 @@
+/*
+* 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:  Base class for application states.
+*
+*/
+
+
+template < typename T >
+inline void TVtUiAppStateBase::ExecuteEngineCommand( 
+    TInt aCommand, T& aParam )
+    {
+    TPtrC8 params( reinterpret_cast< TUint8* >( &aParam ), 
+        sizeof( T ) );    
+    TRAP_IGNORE( iCtx.DoExecuteCmdL( aCommand, &params ) );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/tvtuiappstates.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,274 @@
+/*
+* 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:  Concrete application state classes
+*
+*/
+
+
+#ifndef T_VTUIAPPSTATES_H
+#define T_VTUIAPPSTATES_H
+
+#include "tvtuiappstatebase.h"
+#include <babitflags.h>
+#include <vtengcommands.h>
+
+class CAknQueryDialog;
+
+/**
+*  Initial application state. Responsible for startup phase 1 and
+*  startup phase 2 (see EVtUiAppUiStartup in CVtUiAppUi.cpp).
+*  Certain other state changes are required for phase 2 and history
+*  of their reception is handled with precondition flags.
+*
+*  @since S60 v3.2
+*/
+class TVtUiStateStarting : public TVtUiAppStateBase
+    {
+public:
+    /**
+    * returns singleton instance of TVtUiStateStarting
+    * @param aCtx state context
+    * @param aUiStates UI states
+    * @return singleton
+    */
+    static TVtUiStateStarting* InstanceL(
+        MVtUiStateContext& aCtx,
+        TVtUiStates& aUiStates );
+
+public: // from TVtUiAppStateBase
+
+    /** @see TVtUiAppStateBase */
+    virtual void AppUiStartupPhase1DoneL();
+
+    /** @see TVtUiAppStateBase */
+    virtual void AppUiStartupPhase2DoneL();
+
+    /** @see TVtUiAppStateBase */
+    virtual TEventResponse HandleVtEventL( TInt aEvent );
+
+    /** @see TVtUiAppStateBase */
+    virtual TEventResponse HandleCommandL( const TInt aCommand );
+
+    /** @see TVtUiAppStateBase */
+    virtual TBool HandleForegroundChangedL( TBool aIsForeground );
+
+private: // from TVtUiAppStateBase
+
+    /** @see TVtUiAppStateBase */
+    virtual void OpenL();
+
+    /** @see TVtUiAppStateBase */
+    virtual void Close();
+
+private: // new methods
+
+    void CheckSessionStateL();
+    static TInt AsynchOpen( TAny* aAny );
+    
+    void DoOpenL();
+    
+    /** Preconditions that must be passed in order to proceed
+     * to Phase 2 in startup.
+     */
+    enum TPreconditions
+        {
+        /** waiting for CLI from engine*/
+        EWaitingCLI,
+        /** waiting for phase1 to complete */
+        EWaitingPhase1ToComplete,
+        /** waiting for engine to get proper state */
+        EWaitingSessionState
+    };
+
+    /**
+    * Clears precondition passed as argument and checks if any
+    * preconditions hold and if not proceeds to phase 2 of startup.
+    */
+    void CheckPhase2StartupL( const TPreconditions aClearCondition );
+    
+    void HandleCLIReceivedL();
+
+private: // constructors and destructors
+
+    // c++ constructor
+    TVtUiStateStarting(
+        MVtUiStateContext& aCtx,
+        TVtUiStates& aUiStates );
+
+    // Destructor
+    virtual ~TVtUiStateStarting();
+
+private: // data members
+
+    // Precondition for state change to running
+    TBitFlags8 iPreconditions;
+
+    // Singleton
+    static TVtUiStateStarting* iInstance;
+    
+    // Starts phase1 startup in state state context. Needed because
+    // initial state is opened from within state context construction.
+    CAsyncCallBack*     iStartCallback;
+    };
+
+/**
+*  Application state that is active in normal operation.
+*
+*  @since S60 v3.2
+*/
+class TVtUiStateRunning : public TVtUiAppStateBase
+    {
+public:
+    /**
+    * returns singleton instance of TVtUiStateRunning
+    * @param aCtx state context
+    * @param aUiStates UI states
+    * @return singleton
+    */
+    static TVtUiStateRunning* InstanceL(
+        MVtUiStateContext& aCtx,
+        TVtUiStates& aUiStates );
+
+public: // from TVtUiAppStateBase
+
+    /** @see TVtUiAppStateBase */
+    virtual TEventResponse HandleVtEventL( TInt aEvent );
+
+    /** @see TVtUiAppStateBase */
+    virtual TEventResponse HandleCommandL( const TInt aCommand );
+
+    /** @see TVtUiAppStateBase */
+    virtual TBool HandleForegroundChangedL( TBool aIsForeground );
+
+    /** @see TVtUiAppStateBase */
+    virtual TBool PreHandleForegroundChangedL( TBool aIsForeground );
+    /** @see TVtUiAppStateBase */
+    virtual void HandleLayoutChangedL();
+
+    /** @see TVtUiAppStateBase */
+    virtual void StartDtmfTone( const TChar& aTone );
+
+    /** @see TVtUiAppStateBase */
+    virtual void StopDtmfTone();
+
+    /** @see TVtUiAppStateBase */
+    virtual void OpenL();
+
+private: // from TVtUiAppStateBase
+    /** @see TVtUiAppStateBase */
+    virtual void Close();
+
+private: // constructors and destructors
+
+    // c++ constructor
+    TVtUiStateRunning(
+        MVtUiStateContext& aCtx,
+        TVtUiStates& aUiStates );
+
+    // Destructor
+    virtual ~TVtUiStateRunning();
+
+private: // new functions
+
+    /** Requests call handling subsystem to initiate a voice call.
+     * Starts shutdown of the application.
+     */
+    void CreateVoiceCallL();
+
+    /** Dials emergency call and starts shutdown */
+    void DialEmergencyCallL();
+    
+    void ShutdownWithEngineCommandL( const TInt aCommand );
+
+private: // data members
+    // singleton
+    static TVtUiStateRunning* iInstance;
+    // Create voice call query instance
+    CAknQueryDialog* iCreateVoiceCallDlg;
+    };
+
+/**
+*  Application state that is active during shutdown.
+*
+*  @since S60 v3.2
+*/
+class TVtUiStateResetting : public TVtUiAppStateBase
+    {
+public:
+    /**
+    * returns singleton instance of TVtUiStateResetting
+    * @param aCtx state context
+    * @param aUiStates UI states
+    * @param aCommand engine command to send when resetting state activates
+    * @return singleton
+    */
+    static TVtUiStateResetting* InstanceL(
+        MVtUiStateContext& aCtx,
+        TVtUiStates& aUiStates,
+        const TVtEngCommandId aCommand = KVtEngCommandNone );
+
+public: // from TVtUiAppStateBase
+
+    /** @see TVtUiAppStateBase */
+    virtual void AppUiStartupFailedL();
+
+    /** @see TVtUiAppStateBase */
+    virtual void ShutdownDoneL();
+
+    /** @see TVtUiAppStateBase */
+    virtual TEventResponse HandleVTCommandPerformedL(
+        TVtEngCommandId aCommand,
+        const TInt aError );
+
+    /** @see TVtUiAppStateBase */
+    virtual TEventResponse HandleVtEventL( TInt aEvent );
+
+    /** @see TVtUiAppStateBase */
+    virtual TEventResponse HandleCommandL( const TInt aCommand );
+
+    /** @see TVtUiAppStateBase */
+    virtual TBool HandleForegroundChangedL( TBool aIsForeground );
+
+    /** @see TVtUiAppStateBase */
+    virtual void HandleLayoutChangedL();
+
+private: // from TVtUiAppStateBase
+
+    /** @see TVtUiAppStateBase */
+    virtual void OpenL();
+
+    /** @see TVtUiAppStateBase */
+    virtual void Close();
+
+private: // constructors and destructors
+
+    // c++ constructor
+    TVtUiStateResetting(
+        MVtUiStateContext& aCtx,
+        TVtUiStates& aUiStates,
+        const TVtEngCommandId aCommand = KVtEngCommandNone );
+
+    // Destructor
+    virtual ~TVtUiStateResetting();
+
+private: // data members
+
+    // Singleton
+    static TVtUiStateResetting* iInstance;
+    
+    // Used in user originated shutdown (end active call/switch to voice)
+    TVtEngCommandId iCommand;
+    };
+
+#endif // T_VTUIAPPSTATES_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/tvtuiwsevent.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,71 @@
+/*
+* 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:  VT UI window server event definition.
+*
+*/
+
+
+#ifndef T_VTUIWSEVENT_H
+#define T_VTUIWSEVENT_H
+
+#include <w32std.h>
+
+/**
+ * TVtUiWsEvent
+ *
+ * VT UI WS event code enumerations. Name 'code' used instead of 'type' to keep
+ * naming consistent with with window server.
+ */
+enum TVtUiWsEventCodes
+    {
+    // New number source activated
+    EVtUiWsEventNumberSourceActivate = EEventUser + 6000,
+    // Number source deactivated
+    EVtUiWsEventNumberSourceDeactivate,
+    // Enter rendering mode
+    EVtUiWsEventBeginRenderingMode,
+    // Leave rendering mode
+    EVtUiWsEventEndRenderingMode
+    };
+
+/**
+ *  TVtUiWsEvent
+ *
+ *  Base class for VT UI ws events
+ *
+ *  @since S60 v3.2
+ */
+template < class T >
+class TVtUiWsEvent : public TWsEvent
+    {
+
+public:
+
+    /**
+     * Constructor
+     *
+     * @param aType Event type @see TVtUiWsEventCodes.
+     */
+    inline TVtUiWsEvent( TInt aType, T* aData );
+
+    /**
+     * Return data contained in this event.
+     */
+    inline T* Data() const;
+
+    };
+
+#include "tvtuiwsevent.inl"
+
+#endif // T_VTUIWSEVENT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/tvtuiwsevent.inl	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,38 @@
+/*
+* 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:  VT UI window server event inline methods.
+*
+*/
+
+
+// -----------------------------------------------------------------------------
+// TVtUiWsEvent::TVtUiWsEvent
+// -----------------------------------------------------------------------------
+//
+template < class T >
+TVtUiWsEvent< T >::TVtUiWsEvent( TInt aType, T* aData )
+    {
+    SetType( aType );
+    Int()[ 0 ] = ( TInt ) aData;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiWsEvent::Data
+// -----------------------------------------------------------------------------
+//
+template < class T >
+T* TVtUiWsEvent< T >::Data() const
+    {
+    return ( T* )Int()[ 0 ];
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/videotelui.hrh	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,165 @@
+/*
+* Copyright (c) 2004-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:  Header for constants.
+*
+*/
+
+
+#ifndef VIDEOTELUI_HRH
+#define VIDEOTELUI_HRH
+
+// CONSTANTS
+
+// Video Telephone application UID.
+#define KVtUiAppUidValue 0x101F8681
+
+// Enumerates commands
+enum
+    {
+    // Enable submenu
+    EVtUiCmdEnableMain = 5000,
+    // Enable video
+    EVtUiCmdEnableVideo, //5001
+    // Enable audio
+    EVtUiCmdEnableAudio, //5002
+    // Enable both video and audio
+    EVtUiCmdEnableBoth, //5003
+    // Disable submenu
+    EVtUiCmdDisableMain, //5004
+    // Disable video
+    EVtUiCmdDisableVideo, //5005
+    // Disable audio
+    EVtUiCmdDisableAudio, //5006
+    // Disable both video and audio
+    EVtUiCmdDisableBoth, //5007
+    // Deactivate BT handsfree
+    EVtUiCmdDeactivateBT, //5008
+    // Deactivet BT and activate HF (used in toolbar)
+    EVtUiCmdSwitchFromBTToIHF, //5009
+    // Activate BT handsfree
+    EVtUiCmdActivateBT, //5010
+    // Activate loudspeaker
+    EVtUiCmdActivateLoudspeaker, //5011
+    // Deactivate loudspeaker
+    EVtUiCmdDeactivateLoudspeaker, //5012
+    // End active call
+    EVtUiCmdEndActiveCall, //5013
+    // Use primary camera
+    EVtUiCmdUsePrimaryCamera, //5014
+    // Use secondary camera
+    EVtUiCmdUseSecondaryCamera, //5015
+    // Swap images' places
+    EVtUiCmdSwapImagesPlaces, //5016
+    // Zoom
+    EVtUiCmdZoom, //5017
+    // Send DTMF
+    EVtUiCmdSendDTMF, //5018
+    // Switch to voice call
+    EVtUiCmdCreateVoice, //5019
+    // Enable capture mode
+    EVtUiCmdSnapshot, //5020
+    // Freeze outgoing video
+    EVtUiCmdCapture, //5021
+    // Disable capture mode
+    EVtUiCmdCancelCapture, //5022
+    // Go to Idle.
+    EVtUiCmdGoToIdle, //5023
+    // Other items
+    EVtUiCmdOkOptions = 6000,
+    // Dial emergency
+    EVtUiCmdDialEmergency,
+    // Share object image
+    EVtUiCmdShareObjectImage = 6100,
+    // Share object video clip
+    EVtUiCmdShareObjectVideoClip, //6101
+    // Stop sharing image object
+    EVtUiCmdStopSharingObjectImage, //6102
+    // Stop sharing video clip object
+    EVtUiCmdStopSharingObjectVideoClip, //6103
+    // Activates zoom mode
+    EVtUiCmdToolbarActivateZoomMode, //6104
+    // Toggles disable video/ enable video
+    EVtUiCmdToolbarToggleVideo,             //6105
+    // Toggles mute audio/ unmute audi
+    EVtUiCmdToolbarToggleMicrophone,  //6106
+    // Changes audio routing
+    EVtUiCmdToolbarAudioRouting,  //6107
+    // Toggles primary/secondary camera
+    EVtUiCmdToolbarToggleCamera, //6108
+    // Adjust video submenu
+    EVtUiCmdAdjustVideo, //6109
+    // Adjust video preferences
+    EVtUiCmdAdjustVideoVideoQuality, //6110
+    // Adjust video white balance
+    EVtUiCmdAdjustVideoWhiteBalance, //6111
+    // Adjust video brightness
+    EVtUiCmdAdjustVideoBrightness, //6112
+    // Adjust video contrast
+    EVtUiCmdAdjustVideoContrast, //6113
+    // Adjust video colour tone
+    EVtUiCmdAdjustVideoColourTone, //6114
+    // Dialer close
+    EVtUiDialerExit, //6115
+    // Dialer emergency call
+    EVtUiCmdDialerEmergencyCall //6116
+    };
+
+// Enumerates bitmap identifiers
+enum TVtUiBitmapId
+    {
+    // Reserved to indicate no bitmap.
+    EVtUiBitmapNone,
+    // Viewfinder background.
+    EVtUiBitmap_qgn_graf_call_video_out_bg,
+    // Viewfinder background mask.
+    EVtUiBitmap_qgn_graf_call_video_out_bg_mask,
+    // Blind in icon.
+    EVtUiBitmap_qgn_indi_call_video_blind_in,
+    // Blind out icon.
+    EVtUiBitmap_qgn_indi_call_video_blind_out,
+    // End call button icon
+    EVtUiBitmap_qgn_indi_button_end_active_call,
+    // End call button icon mask
+    EVtUiBitmap_qgn_indi_button_end_active_call_mask,
+    // Earpiece icon.
+    EVtUiBitmap_qgn_indi_earpiece,
+    // Earpiece icon mask.
+    EVtUiBitmap_qgn_indi_earpiece_mask,
+    // Loudspeaker icon.
+    EVtUiBitmap_qgn_indi_speaker,
+    // Loudspeaker icon mask.
+    EVtUiBitmap_qgn_indi_speaker_mask,
+    // Zoom area mask.
+    EVtUiBitmap_qgn_graf_zoom_area,
+    // Zoom direction bitmap.
+    EVtUiBitmap_qgn_indi_zoom_dir,
+    // Zoom direction bitmap mask.
+    EVtUiBitmap_qgn_indi_zoom_dir_mask,
+    // Zoom area minimum icon.
+    EVtUiBitmap_qgn_indi_zoom_min,
+    // Zoom area maximum icon.
+    EVtUiBitmap_qgn_indi_zoom_max,
+    // Scalable blind in icon soft mask,
+    EVtUiBitmap_qgn_indi_call_video_blind_in_mask_icon,
+    // Scalable blind out icon soft mask,
+    EVtUiBitmap_qgn_indi_call_video_blind_out_mask_icon,
+    // Current active list item indicator
+    EVtUiBitmap_qgn_prop_sub_current,
+    // Current active list item indicator mask
+    EVtUiBitmap_qgn_prop_sub_current_mask
+    };
+
+#endif    // VIDEOTELUI_HRH
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/loc/videotelui.loc	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,407 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Localisation texts for Video Telephone application.
+*
+*/
+
+
+// LOCALISATION STRINGS
+
+// d: Text shown in fast swap window while there is active video call.
+// l: cell_app_pane_t1
+// r: 2.6
+//
+#define qtn_apps_videophone_grid "Video tel"
+
+// d: It is text for menu option. If it is selected,
+// d: then submenu is opened containing Video / Audio / Both
+// d: items.
+// l: list_single_pane_t1_cp2/opt3
+// r: 2.6
+//
+#define qtn_incal_enable_main_option "Enable"
+
+// d: It is text for submenu option. It enables / disables
+// d: video.
+// l: list_single_popup_submenu_pane_t1
+// r: 2.6
+//
+#define qtn_incal_change_video_option "Video"
+
+// d: It is text for submenu option. It enables / disables
+// d: audio.
+// l: list_single_popup_submenu_pane_t1
+// r: 2.6
+//
+#define qtn_incal_change_audio_option "Audio"
+
+// d: It is text for submenu option. It enables / disables
+// d: both audio and video.
+// l: list_single_popup_submenu_pane_t1
+// r: 2.6
+//
+#define qtn_incal_change_both_option "Both"
+
+// d: It is text for menu option. If it is selected,
+// d: then submenu is opened containing Video / Audio / Both
+// d: items.
+// l: list_single_pane_t1_cp2/opt3
+// r: 2.6
+//
+#define qtn_incal_disable_main_option "Disable"
+
+// d: It is text for menu option. If it is selected,
+// d: then zoom mode is activated.
+// l: list_single_pane_t1_cp2
+// r: 2.6
+//
+#define qtn_incal_zoom_own_video "Zoom"
+
+// d: It is the prompt in confirmation query shown when
+// d: incoming video call is answered.
+// l: popup_note_window
+// r: 3.2
+//
+#define qtn_incal_send_video_image "Allow video image?"
+
+// d: It is text for options menu list item.
+// d: It opens touch input window for sending DTMF tones
+// l: list_single_pane_t1_cp2
+// r: 5.0
+#define qtn_incal_send_dtmf_tone_option "Activate keypad"
+
+// d: It it text shown in title pane during active
+// d: video call. %N is replaced with call index.
+// l: title_pane_t2/opt9
+// r: 2.6
+//
+#define qtn_call_number_video "Call %N"
+
+// d: It is text shown in main pane until the first image
+// d: is received.
+// l: main_list_empty_pane
+// r: 2.6
+//
+#define qtn_incal_waiting_image "Waiting image..."
+
+// d: It is text shown in a note when video call is
+// d: answered and camera activation fails, because
+// d: camera is in use in other application.
+// l: popup_note_window
+// r: 2.6
+//
+#define qtn_incal_close_camcorder "Camera already in use an other application."
+
+// d: It is text in softkey to enable audio (unmute microphone).
+// l: control_pane_t1/opt7
+// r: 2.6
+//
+#define qtn_incal_softk_enable_audio "Enable audio"
+
+// d: It is text for menu option. If it is selected,
+// d: then swaps locations of uplink and downlink
+// d: video streams.
+// l: list_single_pane_t1_cp2
+// r: 2.8
+//
+#define qtn_incal_swap_vt_images "Swap images' places"
+
+// d: It is text shown in a note when "use primary
+// d: camera" or "use secondary camera" operations fails.
+// l: popup_note_window
+// r: 2.6
+//
+#define qtn_err_cam_swap "Other camera wasn't usable"
+
+// d: It is text for menu option. If it is selected,
+// d: then new softkeys are now Capture and Cancel.
+// l: list_single_pane_t1_cp2
+// r: 3.1
+//
+#define qtn_incal_snapshot_option "Snapshot"
+
+// d: It is text for right softkey in freeze mode.
+// l: control_pane_t1/opt7
+// r: 3.1
+//
+#define qtn_softk_capture "Capture"
+
+// d: It is text for switch
+// d: to voice query dialog.
+// l: popup_note_window
+// r: 3.1
+#define qtn_query_create_voice_call "End active call and create voice call to the same contact?"
+
+// d: It is text for menu option.
+// d: It switches video to voice call.
+// l: list_single_pane_t1_cp2
+// r: 3.1
+#define qtn_incal_video_to_voice "Switch to voice call"
+
+// d: It is text for menu option.
+// d: It opens dialog for selecting image to be shared with peer.
+// l: list_single_pane_t1_cp2
+// r: 3.1
+#define qtn_incal_video_call_share_file "Share file"
+
+// d: It is text for softkey option.
+// d: It stops sending selected image to peer.
+// l: control_pane_t1/opt7
+// r: 3.1
+#define qtn_softk_disable_share "Disable share"
+
+//d: Error note text when user selects image that cannot be opened.
+//d: Corrupted or unsupported image selected.
+//l: popup_note_window
+//r:3.1
+//
+#define qtn_tel_info_unable_open_image "Unable to open image"
+
+//d: Error note text when user selects multiframe image that is corrupted.
+//d: Corrupted image selected.
+//l: popup_note_window
+//r: 5.0
+//
+#define qtn_incal_note_decoding_failed "Unable to animate image"
+
+//d: Error note text when user selects a DRM protected image.
+//d: DRM protected media gallery object selected.
+//l: popup_note_window
+//r:3.1
+//
+#define qtn_drm_not_allowed "Unable to select protected objects"
+
+//d: Text for image initializing wait note
+//d: Shown when image to be shared is being initialized.
+//l: popup_note_wait_window
+//r:3.1
+//
+#define qtn_vt_progress_decoding_image "Decoding image"
+
+//d: Toolbar tooltip for disable video.
+//l: popup_preview_text_window_t1
+//r:3.2
+//
+#define qtn_vt_tooltip_disable_video "Disable video sending"
+
+//d: Toolbar tooltip for enable video.
+//l: popup_preview_text_window_t1
+//r:3.2
+//
+#define qtn_vt_tooltip_enable_video "Enable video sending"
+
+
+//d: Toolbar tooltip for mute microphone.
+//l: popup_preview_text_window_t1
+//r:3.2
+//
+#define qtn_vt_tooltip_mute_microphone "Mute microphone"
+
+//d: Toolbar tooltip for unmute microphone.
+//l: popup_preview_text_window_t1
+//r:3.2
+//
+#define qtn_vt_tooltip_unmute_microphone "Unmute microphone"
+
+//d: Toolbar tooltip for swap images.
+//l: popup_preview_text_window_t1
+//r:3.2
+//
+#define qtn_vt_tooltip_swap_images "Change image order"
+
+//d: Toolbar tooltip for secondary camera.
+//l: popup_preview_text_window_t1
+//r:3.2
+//
+#define qtn_vt_tooltip_secondary_cam "Use secondary camera"
+
+//d: Toolbar tooltip for primary camera.
+//l: popup_preview_text_window_t1
+//r:3.2
+//
+#define qtn_vt_tooltip_primary_cam "Use primary camera"
+
+//d: Toolbar tooltip for zoom.
+//l: popup_preview_text_window_t1
+//r:3.2
+//
+#define qtn_vt_tooltip_zoom "Activate zoom mode"
+
+//d: Toolbar tooltip for share.
+//l: popup_preview_text_window_t1
+//r:3.2
+//
+#define qtn_vt_tooltip_share "Share file"
+
+//d: Toolbar tooltip for send snapshot.
+//l: popup_preview_text_window_t1
+//r:3.2
+//
+#define qtn_vt_tooltip_send_snapshot "Send snapshot"
+
+// d: It is text for menu option.
+// d: It opens submenu with Received video quality / White balance /
+// d: Brightness / Contrast / Colour tone
+// l: list_single_pane_t1_cp2/opt3
+// r: 5.0
+#define qtn_incal_video_adjust_option "Adjust video"
+
+// d: It is text for submenu option.
+// d: It opens list query dialog with options Normal / Details / Motion.
+// l: list_single_popup_submenu_pane_t1
+// r: 5.0
+#define qtn_incal_video_prefer_option "Received video quality"
+
+// d: It is text for list query option.
+// d: It adjusts incoming video frame rate to 10 frames per second.
+// l: list_single_pane_t1_cp2
+// r: 5.0
+#define qtn_incal_normal_list_option "Normal"
+
+// d: It is text for list query option.
+// d: It adjusts incoming video frame rate to 5 frames per second.
+// l: list_single_pane_t1_cp2
+// r: 5.0
+#define qtn_incal_details_list_option "Details"
+
+// d: It is text for list query option.
+// d: It adjusts incoming video frame rate to 15 frames per second.
+// l: list_single_pane_t1_cp2
+// r: 5.0
+#define qtn_incal_motion_list_option "Motion"
+
+// d: It is text for submenu option.
+// d: It opens list query dialog with options Automatic / Sunny / Cloudy /
+// d: Incandescent / Fluorescent
+// l: list_single_popup_submenu_pane_t1
+// r: 5.0
+#define qtn_incal_video_white_balance_option "White balance"
+
+// d: It is text for list query option.
+// d: It adjusts incoming video frame rate to 15 frames per second.
+// l: list_single_pane_t1_cp2
+// r: 5.0
+#define qtn_incal_automatic_option "Automatic"
+
+// d: It is text for list query option.
+// d: It adjusts white balance of outgoing video.
+// d: It sets white balance to Sunny.
+// l: list_single_pane_t1_cp2
+// r: 5.0
+#define qtn_incal_sunny_option "Sunny"
+
+// d: It is text for list query option.
+// d: It adjusts white balance of outgoing video.
+// d: It sets white balance to Cloudy.
+// l: list_single_pane_t1_cp2
+// r: 5.0
+#define qtn_incal_cloudy_option "Cloudy"
+
+// d: It is text for list query option.
+// d: It adjusts white balance of outgoing video.
+// d: It sets white balance to Incandescent.
+// l: list_single_pane_t1_cp2
+// r: 5.0
+#define qtn_incal_incandescent_option "Incandescent"
+
+// d: It is text for list query option.
+// d: It adjusts white balance of outgoing video.
+// d: It sets white balance to Fluorescent.
+// l: list_single_pane_t1_cp2
+// r: 5.0
+#define qtn_incal_fluorescent_option "Fluorescent"
+
+// d: It is text for submenu option.
+// d: It shows control for adjusting outgoing video Brightness.
+// l: list_single_popup_submenu_pane_t1
+// r: 5.0
+#define qtn_incal_video_brightness_option "Brightness"
+
+// d: It is text for submenu option.
+// d: It shows control for adjusting outgoing video Contrast.
+// l: list_single_popup_submenu_pane_t1
+// r: 5.0
+#define qtn_incal_video_contrast_option "Contrast"
+
+// d: It is text for submenu option.
+// d: It opens list query dialog with options Normal / Sepia /
+// d: Black and white / Negative
+// l: list_single_popup_submenu_pane_t1
+// r: 5.0
+#define qtn_incal_video_colour_tone_option "Colour tone"
+
+// d: It is text for list query option.
+// d: It adjusts colour tone of outgoing video.
+// d: It sets colour tone to Normal.
+// l: list_single_pane_t1_cp2
+// r: 5.0
+#define qtn_incal_ct_normal_option "Normal"
+
+// d: It is text for list query option.
+// d: It adjusts colour tone of outgoing video.
+// d: It sets colour tone to Sepia.
+// l: list_single_pane_t1_cp2
+// r: 5.0
+#define qtn_incal_sepia_option "Sepia"
+
+// d: It is text for list query option.
+// d: It adjusts colour tone of outgoing video.
+// d: It sets colour tone to Black and white.
+// l: list_single_pane_t1_cp2
+// r: 5.0
+#define qtn_incal_b_and_w_option "Black and white"
+
+// d: It is text for list query option.
+// d: It adjusts colour tone of outgoing video.
+// d: It sets colour tone to Negative.
+// l: list_single_pane_t1_cp2
+// r: 5.0
+#define qtn_incal_negative_option "Negative"
+
+// d: Toolbar tooltip for changing audio routing to handset.
+// l: popup_preview_text_window_t1
+// r: 5.0
+//
+#define qtn_vt_tooltip_audio_handset "Audio to handset"
+
+// d: Toolbar tooltip for changing audio routing to loudspeaker.
+// l: popup_preview_text_window_t1
+// r: 5.0
+//
+#define qtn_vt_tooltip_audio_loudspeaker "Audio to loudspeaker"
+
+// d: Toolbar tooltip for changing audio routing to bluetooth handsfree.
+// l: popup_preview_text_window_t1
+// r: 5.0
+//
+#define qtn_vt_tooltip_audio_bthf "Audio to Bluetooth handsfree"
+
+// d: It is text in softkey to open dialer (for dtmf sending).
+// l: control_pane_t1/opt7
+// r: 5.0
+//
+#define qtn_incal_softk_dialer "Dialer"
+
+// d: End call button's text
+// l: vidtel_button_pane_t1
+// r: 5.0
+//
+#define qtn_vt_button_end_call "End Call"
+
+// d: It is text in softkey to make emergency call.
+// l: control_pane_t1/opt7
+// r: 5.0
+//
+#define qtn_incal_softk_emergency_call "Emerg. Call"
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/rom/videotelui.iby	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,41 @@
+/*
+* Copyright (c) 2004-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  IBY file
+ *
+*/
+
+
+#ifndef __VIDEOTELUI_IBY__
+#define __VIDEOTELUI_IBY__
+
+REM Video Telephone application
+
+#ifdef __CS_VIDEO_TELEPHONY
+
+S60_APP_EXE(videotelui)
+S60_APP_AIF_ICONS(videotelui)
+S60_APP_BITMAP(videotelui)
+
+// Enabler for eclipsing ROM binaries
+data=ZSYSTEM\install\videotelui_stub.sis           system\install\videotelui_stub.sis
+data=ZPRIVATE\10003a3f\apps\videotelui_reg.rsc     private\10003a3f\import\apps\videotelui_reg.rsc
+
+#if defined ( RD_VT_RTF )
+
+data=ABI_DIR\BUILD_DIR\z\system\sounds\digital\VtStartRecord.wav       System\sounds\digital\VtStartRecord.wav
+data=ABI_DIR\BUILD_DIR\z\system\sounds\digital\VtStopRecord.wav        System\sounds\digital\VtStopRecord.wav
+
+#endif //RD_VT_RTF
+#endif // __CS_VIDEO_TELEPHONY
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/rom/videoteluiResources.iby	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,26 @@
+/*
+* Copyright (c) 2004-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:  IBY file
+ *
+*/
+
+
+#ifndef __VIDEOTELUI_RESOURCES_IBY__
+#define __VIDEOTELUI_RESOURCES_IBY__
+
+#ifdef __CS_VIDEO_TELEPHONY
+data=DATAZ_\APP_RESOURCE_DIR\videotelui.rsc                             APP_RESOURCE_DIR\videotelui.rsc
+#endif // __CS_VIDEO_TELEPHONY
+
+#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiActivateBtHfDialog.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,110 @@
+/*
+* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CVtUiActivateBtHfDialog class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "CVtUiActivateBtHfDialog.h"
+#include    "MVtUiEngineCommandManager.h"
+#include    <mvtengcommandhandler.h>
+#include    <videotelui.rsg>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CVtUiActivateBtHfDialog::CVtUiActivateBtHfDialog
+// -----------------------------------------------------------------------------
+//
+CVtUiActivateBtHfDialog::CVtUiActivateBtHfDialog(
+        CEikDialog** aSelfPtr,
+        TInt* aError, 
+        MVtEngCommandHandler& aCommandHandler,
+        MVtUiEngineCommandManager& aCommandManager )
+    : CAknWaitDialog( aSelfPtr ),
+      iCommandHandler( aCommandHandler ),
+      iCommandManager( aCommandManager ),
+      iError( aError ),
+      iAudioRouting( MVtEngAudio::EActivateBT )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiActivateBtHfDialog::~CVtUiActivateBtHfDialog
+// -----------------------------------------------------------------------------
+//
+CVtUiActivateBtHfDialog::~CVtUiActivateBtHfDialog()
+    {
+    if ( iError )
+        {
+        *iError = KErrCancel;
+        iError = NULL;
+        }
+
+    if ( iCommandPerformed )
+        {
+        iCommandHandler.CancelCommand( KVtEngSetAudioRouting ); // ignore error
+        }
+    iCommandManager.RemoveObserver( *this );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiActivateBtHfDialog::ExecuteDialogLD
+// -----------------------------------------------------------------------------
+//
+void CVtUiActivateBtHfDialog::ExecuteDialogLD()
+    {
+    CleanupStack::PushL( this );
+    iCommandManager.AddObserverL( *this );
+    SetTone( CAknNoteDialog::ENoTone );
+    CleanupStack::Pop( this );
+
+    ExecuteLD( R_VIDEOTELUI_BTHF_CONNECT_WAIT_NOTE );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiActivateBtHfDialog::PostLayoutDynInitL
+// -----------------------------------------------------------------------------
+//
+void CVtUiActivateBtHfDialog::PostLayoutDynInitL()
+    {
+    iCommandHandler.ExecuteL( KVtEngSetAudioRouting, &iAudioRouting );
+    iCommandPerformed = ETrue;
+
+    CAknWaitDialog::PostLayoutDynInitL();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiActivateBtHfDialog::HandleVTCommandPerformedL
+// -----------------------------------------------------------------------------
+//
+void CVtUiActivateBtHfDialog::HandleVTCommandPerformedL( 
+        TVtEngCommandId aCommand,
+        const TInt aError )
+    {
+    if ( aCommand == KVtEngSetAudioRouting )
+        {
+        if ( iError )
+            {
+            *iError = aError;
+            iError = NULL;
+            }
+
+        ProcessFinishedL();
+        }
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiActiveExec.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,164 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CVtUiActiveExec class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "CVtUiActiveExec.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CVtUiActiveExec::CVtUiActiveExec
+// -----------------------------------------------------------------------------
+//
+CVtUiActiveExec::CVtUiActiveExec(
+        const TInt aPriority )
+    : CActive( aPriority )
+    {
+    CActiveScheduler::Add( this );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiActiveExec::~CVtUiActiveExec
+// -----------------------------------------------------------------------------
+//
+CVtUiActiveExec::~CVtUiActiveExec()
+    {
+    Cancel();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiActiveExec::Start
+// -----------------------------------------------------------------------------
+//
+void CVtUiActiveExec::Start( 
+        TInt aStartState, 
+        MVtUiActiveExec& aExec )
+    {
+    Cancel();
+
+    iInitialState = aStartState;
+    iCurrentState = aStartState;
+    iNextState = aStartState;
+
+    iActiveExec = &aExec;
+
+    TRequestStatus* status = &iStatus;
+    User::RequestComplete( status, KErrNone );
+    SetActive();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiActiveExec::InitialState
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiActiveExec::InitialState() const
+    {
+    return iInitialState;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiActiveExec::RequestStatus
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiActiveExec::RequestStatus() const
+    {
+    return iStatus.Int();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiActiveExec::RunL
+// -----------------------------------------------------------------------------
+//
+void CVtUiActiveExec::RunL()
+    {
+    User::LeaveIfError( iStatus.Int() );
+    TBool synch = ETrue;
+
+    // Execute to the next asynchronous operation.
+    while ( synch )
+        {
+        iCurrentState = iNextState;
+        if ( iCurrentState )
+            {
+            synch = iActiveExec->ActiveExecExecuteL( 
+                *this,
+                iCurrentState, 
+                iNextState, 
+                iStatus );
+
+            if ( !synch )
+                {
+                SetActive();
+                }
+            }
+        else
+            {   
+            iActiveExec->ActiveExecDone( *this, iInitialState );
+            if ( !IsActive() )
+                {
+                iInitialState = 0;
+                }
+
+            synch = EFalse;
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiActiveExec::DoCancel
+// -----------------------------------------------------------------------------
+//
+void CVtUiActiveExec::DoCancel()
+    {
+    if ( iActiveExec )
+        {
+        iActiveExec->ActiveExecCancel( *this, iCurrentState );
+        
+        iCurrentState = 0;
+        iActiveExec = NULL;
+        iInitialState = 0;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiActiveExec::RunError
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiActiveExec::RunError( TInt aError )
+    {
+    if ( iActiveExec->ActiveExecContinue( *this, iCurrentState, aError ) )
+        {
+        iNextState = iCurrentState;
+
+        TRequestStatus* status = &iStatus;
+        User::RequestComplete( status, KErrNone );
+        SetActive();
+        }
+    else
+        {
+        if ( !IsActive() )
+            {
+            iInitialState = 0;
+            }
+        }
+    
+    return KErrNone;
+    }
+
+//  End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiAllowVideoDialog.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,159 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CVtUiAllowVideoDialog class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "CVtUiAllowVideoDialog.h"
+#include    <StringLoader.h>
+#include    <videotelui.rsg>
+
+// CONSTANTS
+
+// Timeout for allow video query.
+const TInt KVtUiAllowVideoDialogTimeout = 5000000;
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CVtUiAllowVideoDialog::CVtUiAllowVideoDialog
+// -----------------------------------------------------------------------------
+//
+CVtUiAllowVideoDialog::CVtUiAllowVideoDialog(
+        CEikDialog** aSelfPtr,
+        const TTone& aTone )
+    : CAknQueryDialog( aTone ),
+      iSelfPtr( aSelfPtr )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAllowVideoDialog::~CVtUiAllowVideoDialog
+// -----------------------------------------------------------------------------
+//
+CVtUiAllowVideoDialog::~CVtUiAllowVideoDialog()
+    {
+    if ( iSelfPtr )
+        {
+        *iSelfPtr = NULL;
+        iSelfPtr = NULL;
+        }
+
+    if ( iRequestStatus )
+        {
+        User::RequestComplete( iRequestStatus, KErrNone );
+        iRequestStatus = NULL;
+        }
+
+    delete iQueryTimer;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAllowVideoDialog::ExecuteDialogLD
+// -----------------------------------------------------------------------------
+//
+void CVtUiAllowVideoDialog::ExecuteDialogLD(
+        TRequestStatus& aStatus )
+    {
+    aStatus = KRequestPending;
+
+    HBufC* prompt = StringLoader::LoadLC( R_VIDEOTELUI_QTN_SEND_VIDEO_IMAGE );
+
+    PrepareLC( R_VIDEOTELUI_ALLOW_VIDEO_QUERY );
+    SetPromptL( *prompt );
+    RunLD();
+
+    CleanupStack::PopAndDestroy( prompt );
+    iRequestStatus = &aStatus;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAllowVideoDialog::PostLayoutDynInitL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAllowVideoDialog::PostLayoutDynInitL()
+    {
+    CAknQueryDialog::PostLayoutDynInitL();
+
+    iQueryTimer = CPeriodic::NewL( CActive::EPriorityStandard );
+    iQueryTimer->Start(
+        KVtUiAllowVideoDialogTimeout,
+        KVtUiAllowVideoDialogTimeout,
+        TCallBack( DoDismissDialogTimeoutL, this ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAllowVideoDialog::OkToExitL
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiAllowVideoDialog::OkToExitL( TInt aCommand )
+    {
+    const TBool exit = 
+        CAknQueryDialog::OkToExitL( aCommand );
+
+    if ( exit )
+        {
+        CVtUiAllowVideoDialog::TResult result =
+            CVtUiAllowVideoDialog::EQueryCanceled;
+
+        switch ( aCommand )
+            {
+            case EAknSoftkeyOk:
+            case EAknSoftkeyYes:
+                result = CVtUiAllowVideoDialog::EUserAllowed;
+                break;
+
+            case EAknSoftkeyNo:
+                result = CVtUiAllowVideoDialog::EUserDenied;
+                break;
+
+            default:
+                break;
+            }
+
+        if ( iRequestStatus )
+            {
+            User::RequestComplete( iRequestStatus, result );
+            iRequestStatus = NULL;
+            }
+        }
+
+    return exit;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAllowVideoDialog::DoDismissDialogTimeoutL
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiAllowVideoDialog::DoDismissDialogTimeoutL( TAny* aAny )
+    {
+    CVtUiAllowVideoDialog* self =
+        static_cast< CVtUiAllowVideoDialog* >( aAny );
+
+    TRequestStatus* status = self->iRequestStatus;
+    self->iRequestStatus = NULL;
+    
+    delete self;    
+
+    User::RequestComplete( 
+        status,
+        CVtUiAllowVideoDialog::EQueryDismissedTimeout );
+
+    return KErrNone;
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiApp.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,92 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CVtUiApp application class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "CVtUiApp.h"
+#include    "CVtUiDoc.h"
+#include    "videotelui.hrh"
+
+#include    <eikstart.h>
+
+// CONSTANTS
+
+// UID of Video Telephone application.
+const TUid KVtUiAppUid = { KVtUiAppUidValue };
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CVtUiApp::CVtUiApp
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CVtUiApp::CVtUiApp()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiApp::CreateDocumentL
+// Creates CVtUiDoc instance.
+// -----------------------------------------------------------------------------
+//
+CApaDocument* CVtUiApp::CreateDocumentL()
+    {
+    return new ( ELeave ) CVtUiDoc( *this );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiApp::AppDllUid
+// Returns application uid.
+// -----------------------------------------------------------------------------
+//
+TUid CVtUiApp::AppDllUid() const
+    {
+    return KVtUiAppUid;
+    }
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+// ---------------------------------------------------------
+// NewApplication implements
+// 
+// Creates an instance of application.
+//
+// Returns: an instance of CVtUiApp
+// ---------------------------------------------------------
+//
+LOCAL_C CApaApplication* NewApplication()
+    {
+    return new CVtUiApp;
+    }
+
+// ---------------------------------------------------------
+// E32Main implements
+// 
+// It is called when executable is started. 
+//
+// Returns: error code.
+// ---------------------------------------------------------
+//
+GLDEF_C TInt E32Main()
+    {
+    return EikStart::RunApplication( NewApplication );
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiAppUi.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,7649 @@
+/*
+* Copyright (c) 2004 - 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CVtUiAppUi application UI class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "videotelui.hrh"
+#include    "CVtUiAppUi.h"
+#include    "CVtUiMainControl.h"
+#include    "CVtUiContextControl.h"
+#include    "CVtUiNumberEntryActivationControl.h"
+#include    "CVtUiNaviPane.h"
+#include    "VtUiLayout.h"
+#include    "MVtUiEngineCommandManager.h"
+#include    "CVtUiExecuteCmdDialog.h"
+#include    "CVtUiAllowVideoDialog.h"
+#include    "CVtUiBlankControl.h"
+#include    "VtUiLayout.h"
+#include    "VtUiUtility.h"
+#include    "VtUiPanic.h"
+#include    "CVtUiActivateBtHfDialog.h"
+#include    "CVtUiRemoteVideoControl.h"
+#include    "CVtUiEndCallButtonPane.h"
+#include    <csxhelp/incl.hlp.hrh>
+
+
+#include    <AknIncallBubbleNotify.h>
+#include    <AknsLayeredBackgroundControlContext.h>
+#include    <AknUtils.h>
+#include    <aknnavi.h>
+#include    <akntitle.h>
+#include    <AknDlgShut.h>
+#include    <aknnotedialog.h>
+#include    <aknnotewrappers.h>
+#include    <akncontext.h>
+#include    <eikspane.h>
+#include    <eikmenup.h>
+#include    <eikmenub.h>
+#include    <apgcli.h>
+#include    <featmgr.h>
+#include    <videotelui.rsg>
+#include    <hlplch.h>
+#include    <apgwgnam.h>
+#include    <StringLoader.h>
+#include    <AknDef.h>
+#include    <aknconsts.h>
+#include    <akntoolbar.h>
+
+#include    <e32property.h>
+#include    <ecom/ecom.h>
+#include    <coreapplicationuisdomainpskeys.h>
+#include    <UikonInternalPSKeys.h>
+#include    <centralrepository.h>
+#include    <videotelephonyinternalcrkeys.h>
+#include    <settingsinternalcrkeys.h>
+#include    <e32property.h>
+#include    <telcommsinfopskeys.h>
+#include    <telinformationpskeys.h>
+#include    <activeidle2domainpskeys.h>
+#include     <ctsydomainpskeys.h>
+
+#include    <AknQueryDialog.h>
+#include     <AknGlobalNote.h>
+#include     <aknsoundsystem.h>
+
+
+#include    <cvtlogger.h>
+#include    <cvtengmodel.h>
+#include    <mvtengeventobserver.h>
+#include    <mvtengcommandobserver.h>
+#include    <mvtengcommandhandler.h>
+#include    <mvtengframeobserver.h>
+#include    <mvtengaudio.h>
+#include    <mvtengsessioninfo.h>
+#include    <vtengevents.h>
+#include    <mvtengmedia.h>
+
+#include    "CVtUiBitmapManager.h"
+
+#include    <MGFetch.h>
+#include    <MMGFetchVerifier.h>
+#include    <caf/manager.h>
+#include    <caf/virtualpathptr.h>
+
+#include    "cvtuifeaturemanager.h"
+#include    "cvtuicomponentmanager.h"
+#include    "cvtuicommandmanager.h"
+#include    "tvtuistates.h"
+#include    "cvtuimenus.h"
+#include    "cvtuisoftkeys.h"
+#include    "cvtuitoolbarbase.h"
+#include    "cvtuiwhitebalance.h"
+#include    "cvtuicolortone.h"
+#include    "cvtuibrightness.h"
+#include    "cvtuicontrast.h"
+#include    <remconinterfaceselector.h>
+#include    <remconcoreapitarget.h>
+#include    <remconcoreapitargetobserver.h>
+#include    "tvtuiwsevent.h"
+#include    "mvtuinumbersource.h"
+#include    "tVtuifeaturevariation.h"
+#include    "cvtuidialer.h"
+#include    "tvtuiappstates.h"
+#include    "cvtuivolume.h"
+#include    "cvtuizoom.h"
+#include    "cvtuivolumecontrol.h"
+
+using namespace ContentAccess;
+
+// CONSTANTS
+
+// Engine orientation to application orientation map
+const CVtUiAppUi::TAppUiOrientation engToAppOrientation[] = {
+    CVtUiAppUi::EAppUiOrientationLandscape,
+    CVtUiAppUi::EAppUiOrientationPortrait,
+    CVtUiAppUi::EAppUiOrientationUnspecified };
+
+// Amount of help contexts.
+const TInt KVtUiHelpContextAmount = 1;
+
+// UID of Video Telephone application.
+const TUid KVtUiAppUid = { KVtUiAppUidValue };
+
+// Granularity of command observer array.
+const TInt KVtUiCommandObserverArrayGranularity = 5;
+
+// Default call index.
+const TInt KVtUiDefaultCallId = 1;
+
+// Control priority for the blank control. Above all other controls.
+const TInt KVtUiBlankControlPriority =
+    ECoeStackPriorityEnvironmentFilter + 100;
+
+// Exit timeout.
+const TInt KVtUiExitTimeout = 10000000;
+
+// UID of the main telephone application
+const TUid KVtUiTelephoneUid = { 0x100058B3 };
+
+// Reset value for volume
+const TInt  KVolumeResetValue = -1;
+
+// Remote video control normal priority
+const TInt KVtUiRemoteVideoControlOrdinalPriNormal = 0;
+
+// Remote video control high priority
+const TInt KVtUiRemoteVideoControlOrdinalPriHigh = 1;
+
+// Name of the EIKON server window group.
+_LIT( KVtUiEikonServer, "EikonServer" );
+
+// Name of the AknCapServer window group.
+_LIT( KVtUiAknCapServer, "*akncapserver*" );
+
+// Name of the AknNotifierServer window group.
+_LIT( KVtUiAknNotifierServer, "*aknnfysrv*" );
+
+// Volume repeat delay.
+const TInt KVtUiVolumeRepeatDelay = KAknStandardKeyboardRepeatRate;
+
+// Volume repeat long delay.
+const TInt KVtUiVolumeRepeatLongDelay = KAknKeyboardRepeatInitialDelay;
+
+// Start time for toolbar timer
+const TTimeIntervalMicroSeconds32 KStartTime( 600000 );
+
+// period time for toolbar timer
+const TTimeIntervalMicroSeconds32 KPeriodTime( 300000 );
+
+// The maximum frequency that user can swap image places.
+const TInt64 KVtUiMaxSwapImagesFreq( 1000000 );
+
+// Enumerates methods used in event handling. This enumeration MUST
+// match with methodArray local array.
+enum TVtUiHandleEvents
+    {
+    // Refresh states
+    EVtUiRefreshStates =                    1 << 0,
+    // Handle remote problem.
+    EVtUiHandleVideoFrameRemoteProblem =    1 << 1,
+    // Handle local problem.
+    EVtUiHandleVideoFrameLocalProblem =     1 << 2,
+    // Refresh navipane.
+    EVtUiRefreshNaviPane =                  1 << 3,
+    // Refresh softkeys.
+    EVtUiRefreshSoftkeys =                  1 << 4,
+    // Refresh blind icon status.
+    EVtUiRefreshBlind =                     1 << 5,
+    // Stop showing waiting image text.
+    EVtUiStopWaitingImage =                 1 << 6,    
+    // Rx resolution changed.
+    EVtUiChangeRemoteVideoLayout =          1 << 7,
+    // Show initializing image progress
+    EVtUiShowImageInitializingProgress =    1 << 8,
+    // Hide initializing image progress
+    EVtUiHideImageInitializingProgress =    1 << 9,
+    // Set camera orientation
+    EVtUiSetOrientation =                   1 << 10,
+    //Handle media status change
+    EVtUiMediaStateChanged =                1 << 11,
+    //Show decoding error note
+    EVtUiShowDecodingError =                1 << 12,
+    // Stop the white balance and color tone
+    EVtUiStopWBOrColortone =                1 << 13,
+    // refresh Menu
+    EVtUiRefreshMenu =                      1 << 14,
+    // Stop brightness and contrast slider
+    EVtUiStopBrightnessOrContrast =         1 << 15,
+    // refresh zoom popup
+    EVtUiRefreshZoomPopup =                 1 << 16,
+    // enable end call button
+    EVtUiEnableEndCallButton =              1 << 17
+    };
+
+// Enumerates states for CVtUiActiveExec.
+enum
+    {
+    // Operation finished. Must equal to zero.
+    EVtUiAppUiNone,
+
+    // Active execution states for iActiveExec:
+
+    // Startup (prepare engine):
+    EVtUiAppUiStartup = 100,                             // 100
+    //     Close dialogs.
+    EVtUiAppUiStartupCloseDialogs = EVtUiAppUiStartup,   // 100
+    //     Initialise engine.
+    EVtUiAppUiStartupInitEngine,                         // 101
+    //     Prepare viewfinder.
+    EVtUiAppUiStartupPrepareViewfinder,                  // 102
+    //     Prepare remote render.
+    EVtUiAppUiStartupPrepareRemoteRender,                // 103
+    //     Remove blank.
+    EVtUiAppUiStartupRemoveBlank,                        // 104
+
+    // Shutdown (reset engine):
+    EVtUiAppUiShutdown = 300,                            // 300
+    //     Close dialogs.
+    EVtUiAppUiShutdownCloseDialogs = EVtUiAppUiShutdown, // 300
+    //     Hide application.
+    EVtUiAppUiShutdownHideApplication,                   // 301
+    //     Reset engine.
+    EVtUiAppUiShutdownResetEngine,                       // 302
+    //     Remove blank.
+    EVtUiAppUiShutdownRemoveBlank,                       // 303
+
+    // Answered:
+    EVtUiAppUiAnswered = 500,                            // 500
+    //     Show blank dialog.
+    EVtUiAppUiAnsweredStart = EVtUiAppUiAnswered,        // 500
+    //     Refresh navipane.
+    EVtUiAppUiAnsweredRefreshNavi,                       // 501
+    //     Refresh softkeys.
+    EVtUiAppUiAnsweredRefreshSoftkeys,                   // 502
+    //     Start remote render.
+    EVtUiAppUiAnsweredStartRemoteRender,                 // 503
+
+    //     Prepares camera
+    EVtUiAppUiAnsweredCheckCamera,                       // 504
+    //     Choose if it's needed to show query or directly activate camera.
+    EVtUiAppUiAnsweredChoose,                            // 505
+    //     Set still image as source.
+    EVtUiAppUiAnsweredQuerySetupStill,                   // 506
+    //     Set none as source.
+    EVtUiAppUiAnsweredQuerySetupNone,                    // 507
+    //     Start viewfinder.
+    EVtUiAppUiAnsweredQuerySetupStart,                   // 508
+    //     Show "allow video image" query.
+    EVtUiAppUiAnsweredQueryShow,                         // 509
+    //     Check if user allowed video image.
+    EVtUiAppUiAnsweredQueryDecide,                       // 510
+    //     Select camera as source.
+    EVtUiAppUiAnsweredQuerySelectCamera,                 // 511
+    //     Select still image as source.
+    EVtUiAppUiAnsweredQuerySelectStill,                  // 512
+    //     Select none as source.
+    EVtUiAppUiAnsweredQuerySelectNone,                   // 513
+    //     Start viewfinder.
+    EVtUiAppUiAnsweredQueryStartViewfinder,              // 514
+    //     Finish.
+    EVtUiAppUiAnsweredQueryFinish,                       // 515
+    //     Select camera as source.
+    EVtUiAppUiAnsweredSelectCamera,                      // 516
+    //     Select still image as source.
+    EVtUiAppUiAnsweredSelectStill,                       // 517
+    //     Select none as source.
+    EVtUiAppUiAnsweredSelectNone,                        // 518
+    //     Start viewfinder.
+    EVtUiAppUiAnsweredStartViewfinder,                   // 519
+    //     Finish.
+    EVtUiAppUiAnsweredFinish,                            // 520
+
+    //     Prepares camera
+    EVtUiAppUiAnsweredDoPrepareCamera                   // 521
+    };
+
+/**
+* Enumerates background layers
+*/
+enum TVtUiBackgroundLayers
+    {
+    // Idle state background.
+    EVtUiLayerBackground = 0,
+    // Wallpaper layout.
+    EVtUiLayerWallpaper = 1,
+    // Amount of layers.
+    EVtUiLayerCount = 2
+    };
+
+// MODULE DATA STRUCTURES
+
+/**
+* Asynchronous command executor that does not use dialog for waiting the
+* execution completion.
+* @since Series 60 5.0
+*/
+class CVtEngCmdExec : public CBase, private MVtEngCommandObserver
+    {
+
+public:
+    /**
+    * Static constructor.
+    */
+    static CVtEngCmdExec* NewL( MVtEngCommandHandler& aCommandHandler,
+        MVtUiEngineCommandManager& aCommandManager,
+        CEikButtonGroupContainer& aCBA );
+
+    /**
+    * Executes given command asynchronously, waiting the command completion.
+    */
+    void ExecuteCmdLD( const TVtEngCommandId aCommandId );
+
+    /**
+    * Destructor.
+    */
+    ~CVtEngCmdExec();
+
+private: // from MVtEngCommandObserver
+
+    /**
+    * @see MVtEngCommandObserver::HandleVTCommandPerformedL
+    */
+    void HandleVTCommandPerformedL( TVtEngCommandId aCommand,
+        const TInt aError );
+
+private:
+
+    /**
+    * Constructor.
+    */
+    CVtEngCmdExec( MVtEngCommandHandler& aCommandHandler,
+        MVtUiEngineCommandManager& aCommandManager,
+        CEikButtonGroupContainer& aCBA );
+
+private:
+
+    CActiveSchedulerWait iWait;
+
+    MVtEngCommandHandler& iCommandHandler;
+
+    MVtUiEngineCommandManager& iCommandManager;
+
+    TVtEngCommandId iCommandId;
+
+    CEikButtonGroupContainer& iCBA;
+
+    };
+
+// -----------------------------------------------------------------------------
+// CVtEngCmdExec::NewL
+// -----------------------------------------------------------------------------
+//
+CVtEngCmdExec* CVtEngCmdExec::NewL( MVtEngCommandHandler& aCommandHandler,
+    MVtUiEngineCommandManager& aCommandManager, CEikButtonGroupContainer& aCBA )
+    {
+    CVtEngCmdExec* self = new ( ELeave ) CVtEngCmdExec( aCommandHandler,
+        aCommandManager, aCBA );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtEngCmdExec::ExecuteCmdLD
+// -----------------------------------------------------------------------------
+//
+void CVtEngCmdExec::ExecuteCmdLD( const TVtEngCommandId aCommandId )
+    {
+    __VTPRINTENTER("CVtEngCmdExec::ExecuteCmdLD")
+    CleanupStack::PushL( this );
+    iCommandId = aCommandId;
+    iCommandManager.AddObserverL( *this );
+    iCommandHandler.ExecuteL( aCommandId, NULL );
+    iCBA.SetCommandSetL( R_VIDEOTELUI_SOFTKEYS_EMPTY );
+    iCBA.DrawNow();
+    iWait.Start();
+    CleanupStack::PopAndDestroy(); // this
+    __VTPRINTEXIT("CVtEngCmdExec::ExecuteCmdLD")
+    }
+
+// -----------------------------------------------------------------------------
+// CVtEngCmdExec::~CVtEngCmdExec
+// -----------------------------------------------------------------------------
+//
+CVtEngCmdExec::~CVtEngCmdExec()
+    {
+    __VTPRINTENTER("CVtEngCmdExec::~CVtEngCmdExec")
+    if ( iWait.IsStarted())
+        {
+        __VTPRINT(DEBUG_GEN, "CVtEngCmdExec::~CVtEngCmdExec AsyncStop")
+        iWait.AsyncStop();
+        }
+    iCommandManager.RemoveObserver( *this );
+    __VTPRINTEXIT("CVtEngCmdExec::~CVtEngCmdExec")
+    }
+
+// -----------------------------------------------------------------------------
+// CVtEngCmdExec::HandleVTCommandPerformedL
+// -----------------------------------------------------------------------------
+//
+void CVtEngCmdExec::HandleVTCommandPerformedL( TVtEngCommandId aCommand,
+        const TInt aError )
+    {
+    __VTPRINTENTER("CVtEngCmdExec::HandleVTCommandPerformedL")
+    if ( iCommandId == aCommand )
+        {
+         if ( iWait.IsStarted())
+            {
+            __VTPRINT(DEBUG_GEN, "CVtEngCmdExec::HandleVTCommandPerformedL AsyncStop")
+            iWait.AsyncStop();
+            }
+        else
+            {
+            // request already completed
+            }
+        }
+    else
+        {
+        // wrong command ID
+        }
+    __VTPRINTEXIT("CVtEngCmdExec::HandleVTCommandPerformedL")
+    }
+
+// -----------------------------------------------------------------------------
+// CVtEngCmdExec::CVtEngCmdExec
+// -----------------------------------------------------------------------------
+//
+CVtEngCmdExec::CVtEngCmdExec( MVtEngCommandHandler& aCommandHandler,
+    MVtUiEngineCommandManager& aCommandManager, CEikButtonGroupContainer& aCBA )
+    : iCommandHandler( aCommandHandler ),
+      iCommandManager( aCommandManager ), iCBA( aCBA )
+    {
+    }
+    
+/**
+* Encapsulates all instances related to user interface.
+* @since Series 60 2.6
+*/
+class CVtUiAppUi::CInstance
+    : public CBase
+    {
+    public: // Constructors and destructors
+
+        /**
+        * Two-phased constructor.
+        * @param aAppUi reference to application UI.
+        */
+        static CInstance* NewL( CVtUiAppUi& aAppUi );
+
+        /**
+        * Destructor.
+        */
+        ~CInstance();
+
+        /**
+        * Called when side volume key is pressed.
+        */
+        void VolumeKeyPressedL();
+
+        /**
+        * Create remote video control.
+        */        
+        void CreateRemoteVideoControl();
+
+    private:
+
+        /**
+        * Constructor.
+        */
+        CInstance( CVtUiAppUi& aAppUi );
+
+        /**
+        * Symbian OS constructor.
+        */
+        void ConstructL();
+
+        /**
+        * Relayout controls.
+        */
+        void LayoutChanged();
+
+    private:
+
+        // Parent can access members.
+        friend class CVtUiAppUi;
+
+        // Ref to application UI.
+        CVtUiAppUi& iAppUi;
+
+        // Owned bitmap manager.
+        CVtUiBitmapManager* iBitmapManager;
+
+        // ETrue if iMainControl has been added to stack.
+        TBool iMainControlInStack;
+
+        // Owned main pane control.
+        CVtUiMainControl* iMainControl;
+
+        // ETrue if iContextControl has been added to stack.
+        TBool iContextControlInStack;
+
+        // Owned context pane control.
+        CVtUiContextControl* iContextControl;
+
+        // Owned remote video control.
+        CVtUiRemoteVideoControl* iRemoteVideoControl;
+        
+        //ETrue if iRemoteVideoControl has been added to stack.
+        TBool iRemoteVideoControlInStack;
+
+        // Owned navi pane controller.
+        CVtUiNaviPane* iNaviPane;
+
+        // ETrue if number entry has been added to stack.
+        TBool iNumberEntryInStack;
+
+        // Owned number entry activation control.
+        CVtUiNumberEntryActivationControl* iNumberEntryActivation;
+        
+        // Owned button pane control
+        CVtUiEndCallButtonPane* iEndCallButtonPane;
+        
+        // ETrue if iButtonPane has been added to stack.
+        TBool iButtonPaneInStack;
+
+    };
+
+/**
+* Encapsulates event handling.
+* @since Series 60 2.6
+*/
+class CVtUiAppUi::CEventObserver
+    : public CBase,
+      public MVtUiEngineCommandManager,
+      public MVtEngEventObserver,
+      public MVtEngCommandObserver,
+      public MVtEngFrameObserver,
+      private MBeating,
+      private MRemConCoreApiTargetObserver
+    {
+    public: // Constructors and destructors
+
+        /**
+        * Two-phased constructor.
+        * @param aAppUi application UI.
+        */
+        static CEventObserver* NewL( CVtUiAppUi& aAppUi );
+
+        /**
+        * Destructor.
+        */
+        ~CEventObserver();
+
+    public: // New functions
+
+        /**
+        * Returns engine model.
+        * @return model instance.
+        */
+        inline CVtEngModel& Model();
+        
+        /**
+        * Creates remote control framework session.
+        */
+        void CreateRemConSessionL();
+
+        /**
+        * Deletes remote control framework session.
+        */
+        void DeleteRemConSession();
+
+        /**
+        * Checks if command is supported by engine.
+        * @param aCommandId command.
+        * @return ETrue if supported, EFalse otherwise.
+        */
+        TBool CommandSupported( const TInt aCommandId ) const;
+
+        /**
+        * Checks if command is supported and synchronous.
+        * @param aCommandId command.
+        * @return ETrue if synchronous & supported, EFalse otherwise.
+        */
+        TBool CommandSupportedAndSynchronous(
+            const TInt aCommandId ) const;
+
+        /**
+        * Starts heartbeat timer.
+        */
+        void StartBeatL();
+
+        /**
+        * Stops heartbeat timer.
+        */
+        void StopBeat();
+
+        /**
+        * Stops volume repeat handling timer.
+        */
+        void StopVolumeRepeatTimer();
+        
+        /**
+        * Sends response to prepare.
+        * @param aResult result code.
+        */
+        void SendPrepareResponse( const TInt aResult );
+
+    public: // Functions from base classes
+
+        /**
+        * @see MVtUiCommandManager::AddObserverL.
+        */
+        virtual void AddObserverL( MVtEngCommandObserver& aObserver );
+
+        /**
+        * @see MVtUiCommandManager::RemoveObserver.
+        */
+        virtual void RemoveObserver( MVtEngCommandObserver& aObserver );
+
+        /**
+        * @see MVtEngEventObserver::HandleVtEventL.
+        */
+        virtual void HandleVtEventL( TInt aEvent );
+
+        /**
+        * @see MVtEngCommandObserver::HandleVTCommandPerformedL.
+        */
+        virtual void HandleVTCommandPerformedL(
+            TVtEngCommandId aCommand,
+            const TInt aError );
+
+        /**
+        * @see MVtEngFrameObserver::vtHandleFrameL.
+        */
+        virtual void vtHandleFrameL( TFrameType aType, CFbsBitmap* aBitmap );
+
+        /**
+        * @see MVtEngFrameObserver::vtSetFrame
+        */
+        virtual void vtSetFrame( TFrameType aType, CFbsBitmap* aBitmap );
+
+        /**
+        * @see MBeating::Beat.
+        */
+        virtual void Beat();
+
+        /**
+        * @see MBeating::Synchronize.
+        */
+        virtual void Synchronize();
+
+
+    private:
+
+        /**
+        * Constructor.
+        * @param aAppUi application UI.
+        */
+        CEventObserver( CVtUiAppUi& aAppUi );
+
+        /**
+        * Symbian OS constructor.
+        */
+        void ConstructL();
+
+        /**
+        * Executes CVtUiAppUi methods.
+        * @param aBits sum of subset of TVtUiHandleEvents.
+        */
+        void DoExecuteL( TInt aBits );
+        /**
+        * Handles volume change.
+        * @param aButtonAct button action.
+        */
+        void HandleVolumeChange(
+            TRemConCoreApiButtonAction aButtonAct );
+        /**
+        * Handles mute change.
+        * @param aButtonAct button action.
+        */
+        void HandleRemMuteChange(
+            TRemConCoreApiButtonAction aButtonAct );
+        /**
+        * @see MRemConCoreApiTargetObserver::MrccatoCommand.
+        */
+        virtual void MrccatoCommand(
+            TRemConCoreApiOperationId aOperationId,
+            TRemConCoreApiButtonAction aButtonAct );
+
+        /**
+        * Callback function to handle volume repeat.
+        * @param aAny pointer to an instance of this class.
+        * @return KErrNone.
+        */
+        static TInt DoHandleVolumeRepeat( TAny* aAny );
+
+    private:
+
+        // Type definition for CVtUiAppUi member functions.
+        typedef void (CVtUiAppUi::*TMethodL)();
+
+        // Ref to application ui.
+        CVtUiAppUi& iAppUi;
+
+        // Engine model.
+        CVtEngModel* iModel;
+
+        // ETrue when command events are being sent.
+        TBool iInCommandPerformed;
+
+        // Owned array of observers.
+        RPointerArray< MVtEngCommandObserver > iCommandObservers;
+
+        // Owned heart beat timer to update call duration.
+        CHeartbeat* iBeat;
+        
+
+        // Owned interface selector instance.
+        CRemConInterfaceSelector* iRemConInterfaceSelector;
+
+        // Pointer to target instance. Owned by iRemConInterfaceSelector.
+        CRemConCoreApiTarget* iRemConCoreApiTarget;
+
+        // Owned timer for volume repeat handling.
+        CPeriodic* iRemConVolumeRepeatTimer;
+
+        // Rencon operation id
+        TRemConCoreApiOperationId iRCCAOperationId;
+
+    };
+
+/**
+* Verifies objects fetched using media gallery. Only non DRM protected
+* objects are allowed.
+* @since Series 60 3.1
+*/
+class CVtUiAppUi::CVtUiAppUiMGVerifier :
+    public CBase,
+    public MMGFetchVerifier
+    {
+    public:
+
+            /**
+            * Static constructor, pushes created instance into cleanup stack.
+            */
+        static CVtUiAppUiMGVerifier* NewLC(
+            CVtUiAppUi& aAppUi, CCoeEnv& aCoeEnv );
+
+            /**
+            * Destructor.
+            */
+        ~CVtUiAppUiMGVerifier();
+
+    public: // from MMGFetchVerifier
+
+        /**
+            * @see MMGFetchVerifier::VerifySelectionL
+            */
+        TBool VerifySelectionL( const MDesCArray* aSelectedFiles );
+
+    private:
+
+            /**
+            * 2nd constructor in two phase construction.
+            */
+        void ConstructL();
+
+        /**
+            * Constructor.
+            */
+        CVtUiAppUiMGVerifier( CVtUiAppUi& aAppUi, CCoeEnv& aCoeEnv );
+
+    private:
+
+        // Reference to Application UI
+        CVtUiAppUi& iAppUi;
+
+        // Pointer to COE
+        CCoeEnv* iCoeEnv;
+
+        // Pointer to CManager which manages files and content access agents
+        CManager* iManager;
+    };
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CVtUiAppUi
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CVtUiAppUi::CVtUiAppUi()
+    : iRenderingMode( ERenderingModeDefault ),
+      iLoudspeakerVolume( KVolumeResetValue ),
+      iHandsetVolume( KVolumeResetValue ),
+      iActiveCommands( 1 ),
+      iLayoutChg( EFalse ),
+      iDelayedCmd( 0 )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ConstructL
+// Symbian 2nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ConstructL()
+    {
+    VTLOGINIT
+    __VTPRINTENTER( "VtUi.ConstructL" )
+
+    FeatureManager::InitializeLibL();
+    BaseConstructL( EAknEnableSkin | EAknEnableMSK | EAknSingleClickCompatible );
+    
+    iCba = Cba();
+    // Must be done before creating features
+    iVTVariation.ReadL();
+
+    iEventObserver = CEventObserver::NewL( *this );
+    iUiStates = new ( ELeave ) TVtUiStates( iEventObserver->Model() );
+    iUiStates->Update();
+        iUiStates->SetViewFindersInitialPlaceContextPane( ETrue );
+        
+    TVtUiAppStateBase::SetInitialStateL( *this, *iUiStates );
+
+    iCommandManager = CVtUiCommandManager::NewL( *iUiStates, *this );
+
+    iComponentManager = CVtUiComponentManager::NewL();
+
+    iFeatureManager = CVtUiFeatureManager::NewL( *this, *iUiStates,
+         *iCommandManager, *iComponentManager );
+
+    iInstance = CInstance::NewL( *this );
+
+    CEikMenuBar* menu = iEikonEnv->AppUiFactory()->MenuBar();
+    menu->SetContextMenuTitleResourceId( R_VIDEOTELUI_OK_MENUBAR );
+
+
+
+    CEikonEnv& eikEnv = *( iEikonEnv );
+    eikEnv.SetSystem( ETrue );
+    eikEnv.WsSession().ComputeMode( RWsSession::EPriorityControlDisabled );
+
+    iThisApplicationWgId = eikEnv.RootWin().Identifier();
+    iEikonServerWgId =
+        eikEnv.WsSession().FindWindowGroupIdentifier( 0, KVtUiEikonServer );
+    iAknCapServerWgId =
+        eikEnv.WsSession().FindWindowGroupIdentifier( 0, KVtUiAknCapServer );
+    iAknNfyServerWgId =
+        eikEnv.WsSession().FindWindowGroupIdentifier( 0,
+            KVtUiAknNotifierServer );
+
+    __ASSERT_ALWAYS(
+        iEikonServerWgId != KErrNotFound,
+        VtUiPanic::Panic( EVtUiPanicEikonServerNotFound ) );
+    (void)eikEnv.RootWin().EnableFocusChangeEvents();
+
+
+    iUplinkWindow = iInstance->iContextControl;
+    iDownlinkWindow = iInstance->iMainControl;
+
+
+    if ( iCba )
+        {
+        CCoeControl* control = iCba->ButtonGroup()->AsControl();
+        static_cast< CEikCba* >( control )->
+            SetSkinBackgroundId( KAknsIIDQsnBgAreaControlIdle );
+        }
+
+    iBlankControl = new ( ELeave ) CVtUiBlankControl;
+    iBlankControl->ConstructL( ClientRect() );
+    AddToStackL(
+        iBlankControl,
+        KVtUiBlankControlPriority,
+        ECoeStackFlagRefusesFocus );
+
+    iUiStates->SetBlankControlAdded( ETrue );
+
+    iActiveExec =
+        new ( ELeave ) CVtUiActiveExec( CActive::EPriorityHigh );
+    SetCallIdL( KVtUiDefaultCallId );
+
+    iExitTimer = CPeriodic::NewL( CActive::EPriorityHigh );
+    CheckEngineFunctionality();
+
+    iAsyncCallback =
+        new ( ELeave ) CAsyncCallBack (
+            TCallBack( &AsyncViewFinderToMainPaneAndShare, this ),
+            CActive::EPriorityStandard );
+
+    iLayoutChangeCallback =
+        new ( ELeave ) CAsyncCallBack(
+            TCallBack( &DelayedHandleLayoutChanged, this ),
+            CActive::EPriorityStandard );
+
+    iCurrentCameraOrientation = MVtEngMedia::EOrientationObeyLayoutSwitch;
+
+    GetCameraOrientations();
+
+    SetInitialCameraOrientationL();
+
+    iVolCtrl= new ( ELeave )CVtUiVolumeControl(
+        Model().CommandHandler(),
+        Model().Audio(),
+        *iEventObserver,
+        *iFeatureManager);
+    iVolCtrl->ConstructL();
+
+    iIncallBubble = CAknIncallBubble::NewL();
+
+    iIsWaitingCallState = EFalse;
+    
+    __VTPRINTEXIT( "VtUi.ConstructL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::~CVtUiAppUi
+// -----------------------------------------------------------------------------
+//
+CVtUiAppUi::~CVtUiAppUi()
+    {
+    __VTPRINTENTER( "VtUi.~" )
+
+    iActiveCommands.Close();
+
+    delete iLayoutChangeCallback;
+    delete iAsyncCallback;
+
+    if ( iUiStates && iUiStates->IsBlankControlAdded() )
+        {
+        RemoveFromStack( iBlankControl );
+        }
+    TInt lightsValue = 0;
+    if ( RProperty::Get( KPSUidCoreApplicationUIs,
+            KLightsVTForcedLightsOn, lightsValue ) == KErrNone )
+        {
+        if ( lightsValue == EForcedLightsOn )
+            {
+            __VTPRINT( DEBUG_GEN, "VtUi.~ Good night!" )
+            (void) RProperty::Set(
+                KPSUidCoreApplicationUIs,
+                KLightsVTForcedLightsOn,
+                EForcedLightsOff );
+            }
+        }
+    delete iActiveExec;
+    delete iInstance;
+    delete iBlankControl;
+    // Delete volume control before its dependencies are deleted.
+    delete iVolCtrl;
+    delete iEventObserver;
+    delete iExitTimer;
+    // Featuremanager must be destructed
+    // before componentmanager and commandmanager
+    delete iFeatureManager;
+    delete iComponentManager;
+    delete iCommandManager;
+    delete iUiStates;
+
+    if ( iTbPeriodic )
+        {
+        iTbPeriodic->Cancel();
+        }
+    delete iTbPeriodic;
+
+    if ( iIncallBubble )
+        {
+        TRAP_IGNORE( iIncallBubble->SetIncallBubbleAllowedInUsualL( ETrue ) )    
+        }
+    delete iIncallBubble;
+
+    // Close all RComm sessions to prevent memory leaks.
+    REComSession::FinalClose();
+
+    FeatureManager::UnInitializeLib();
+    __VTPRINTEXIT( "VtUi.~" )
+    VTLOGUNINIT
+    }
+
+// -----------------------------------------------------------
+// CVtUiAppUi::SwitchLayoutToFlatStatusPaneL
+// -----------------------------------------------------------
+//
+void CVtUiAppUi::SwitchLayoutToFlatStatusPaneL( TBool aSwitch )
+    {
+    __VTPRINTENTER( "VtUi.SwitchLayoutToFlatStatusPaneL" )
+    CEikStatusPane* statusPane = StatusPane();
+
+    const TInt idleResId(
+        VtUiLayout::IsLandscapeOrientation() ?
+            R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL :
+                R_AVKON_STATUS_PANE_LAYOUT_USUAL );
+
+    const TBool isStatusPaneFlat(
+        ( statusPane->CurrentLayoutResId() ==
+            R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT ) ||
+        ( statusPane->CurrentLayoutResId() ==
+            R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT ) );
+
+    if ( aSwitch )
+        {
+        if ( isStatusPaneFlat && VtUiLayout::IsLandscapeOrientation() )
+            {
+            __VTPRINT( DEBUG_GEN,
+                "VtUi.SwitchLayoutToFlatStatusPaneL LAYOUT USUAL" );
+            statusPane->SwitchLayoutL( idleResId );
+            }
+        else if ( !isStatusPaneFlat && !VtUiLayout::IsLandscapeOrientation() )
+            {
+            __VTPRINT( DEBUG_GEN,
+                "VtUi.SwitchLayoutToFlatStatusPaneL USUAL FLAT" );
+            statusPane->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT );
+            }
+        }
+    else
+        {
+        if ( isStatusPaneFlat )
+            {
+            __VTPRINT( DEBUG_GEN,
+                "VtUi.SwitchLayoutToFlatStatusPaneL LAYOUT IDLE" );
+            statusPane->SwitchLayoutL( idleResId );
+            }
+        }
+    // ApplyCurrentSettingsL is called whenever statuspane
+    // visibility status or pane layout changes.
+    statusPane->ApplyCurrentSettingsL();
+    statusPane->DrawNow();
+    // Make sure whole control is fully updated
+    iInstance->iMainControl->DrawNow();
+    __VTPRINTEXIT( "VtUi.SwitchLayoutToFlatStatusPaneL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::RefreshL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::RefreshL()
+    {
+    __VTPRINTENTER( "VtUi.Refresh" )
+    RefreshBlind();
+    RefreshNaviPaneL();    
+    __VTPRINTEXIT( "VtUi.Refresh" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::RefreshNaviPaneL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::RefreshNaviPaneL()
+    {
+    // Update only if navi pane exists
+    if ( iInstance )
+        {
+        __VTPRINT( DEBUG_GEN, "VtUi.RefreshNavi" )
+        CVtUiNaviPane* navi = iInstance->iNaviPane;
+
+        // Refresh muted state
+        MVtEngMedia& media = Model().Media();
+        TInt mediaAvail;
+        VtUiUtility::GetOutgoingMediaState( media, mediaAvail );
+        mediaAvail = ~mediaAvail;
+        navi->SetMuted( mediaAvail & MVtEngMedia::EMediaAudio );
+
+        // Refresh call duration
+        MVtEngSessionInfo& session = Model().Session();
+        MVtEngSessionInfo::TDuration duration;
+        TBool enabled;
+        if ( session.GetDuration( duration, enabled ) != KErrNone )
+            {
+            enabled = EFalse;
+            }
+        navi->SetCallDuration( duration, enabled );
+
+        // Update all changes
+        navi->CommitL();
+
+        CheckBeatL( enabled );
+        }
+    }
+
+void CVtUiAppUi::StopBrightnessOrContrast()
+    {
+    
+    MVtUiFeature* br = iFeatureManager->GetFeatureById( EVtUiFeatureIdBrightness );
+    if ( br )
+        {
+        __VTPRINT( DEBUG_GEN, "VtUi.StopBrightness" )
+        if ( br->State() ==  MVtUiFeature::EActive )
+            {
+            __VTPRINT( DEBUG_GEN, "VtUi.StopBrightnessOrContrast br->STOP" )
+            br->Stop();
+            }
+        }
+    
+    MVtUiFeature* cr = iFeatureManager->GetFeatureById( EVtUiFeatureIdContrast );
+    if ( cr )
+        {
+        __VTPRINT( DEBUG_GEN, "VtUi.StopContrast" )
+        if ( cr->State() ==  MVtUiFeature::EActive )
+           {
+           __VTPRINT( DEBUG_GEN, "VtUi.StopBrightnessOrContrast cr->STOP" )
+           cr->Stop();
+           }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::RefreshZoomPopupL()
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::RefreshZoomPopupL()
+    {
+    CVtUiZoom* zm = static_cast< CVtUiZoom* >(
+            iFeatureManager->GetFeatureById( EVtUiFeatureIdZoom ) );
+    if( zm && iUiStates->IsZoomModeOn())
+        zm->RefreshL();
+    }
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::RefreshMenuL()
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::RefreshMenuL()
+    {
+    
+    CVtUiMenus* menus = static_cast< CVtUiMenus* >(
+            iFeatureManager->GetFeatureById( EVtUiFeatureIdMenu ) );
+    if ( menus )
+    {
+        iUiStates->Update();
+        __VTPRINT( DEBUG_GEN, "VtUi.RefreshMenuL" )
+        menus->RefreshL();
+        CAknAppUi::ProcessCommandL( EEikCmdCanceled ); // does not leave
+        }
+    }
+              
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::RefreshSoftkeysL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::RefreshSoftkeysL()
+    {
+    if ( iUiStates->IsThisApplicationForeground() )
+        {
+        CVtUiSoftkeys* sk = static_cast< CVtUiSoftkeys* >(
+            iFeatureManager->GetFeatureById( EVtUiFeatureIdSoftkey ) );
+        if ( sk )
+            {
+            sk->RefreshL();
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::RefreshBlind
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::RefreshBlind()
+    {
+    if ( iInstance && !iUiStates->IsDisableBlindSetting() )
+        {
+        __VTPRINTENTER( "VtUi.RefreshBlind" )
+        TInt avail;
+        MVtEngMedia& media = Model().Media();
+
+        // Update blind flags.for outgoing media:
+        VtUiUtility::GetOutgoingMediaState( media, avail );
+        avail = ~avail;
+        TBool noVideo( avail & MVtEngMedia::EMediaVideo );
+        const TBool isFrozen( VtUiUtility::GetFreezeState ( media ) );
+        MVtEngMedia::TMediaSource source( MVtEngMedia::EMediaNone );
+        media.GetSource( source );
+        if ( noVideo && !isFrozen &&
+            ( source != MVtEngMedia::EMediaStillImage ) )
+            {
+            iUplinkWindow->SetStreamBitmap( NULL );
+            }
+
+        iUplinkWindow->SetBlind( noVideo );
+        iUplinkWindow->SetWaiting( EFalse );
+
+        if ( iUiStates->IsThisApplicationForeground() )
+            {
+            // Update blind flags for incoming media:
+            VtUiUtility::GetIncomingMediaState( media, avail );
+            avail = ~avail;
+            noVideo = ( avail & MVtEngMedia::EMediaVideo );
+            if ( noVideo )
+                {
+                iDownlinkWindow->SetStreamBitmap( NULL );
+                }
+            iDownlinkWindow->SetBlind( noVideo );
+            }
+        iDownlinkWindow->SetWaiting( iUiStates->IsWaitingForFirstFrame() );
+        __VTPRINTEXIT( "VtUi.RefreshBlind" )
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::EnableEndCallButton
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::EnableEndCallButton()
+    {
+    EndCallButtonPane().SetEnabled( ETrue );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::OpenNumberEntryL
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiAppUi::OpenNumberEntryL()
+    {
+    __VTPRINTENTER( "VtUi.OpenNumberEntryL" )
+
+    CEikMenuBar* menuBar = iEikonEnv->AppUiFactory()->MenuBar();
+    if ( IsDisplayingDialog() || ( menuBar && menuBar->IsDisplayed() ) )
+        {
+        __VTPRINTEXIT( "VtUi.OpenNumberEntryL" )
+        return EFalse;
+        }
+
+    TInt error( KErrNotFound );
+
+    MVtUiFeature* numberEntry =
+        iFeatureManager->GetFeatureById( EVtUiFeatureIdNumberEntry );
+
+    MVtUiFeature* dialer =
+        iFeatureManager->GetFeatureById( EVtUiFeatureIdDialer );
+
+    const TBool dialerActive( dialer &&
+        ( dialer->State() == MVtUiFeature::EActive ) );
+
+    if ( numberEntry && !dialerActive )
+        {
+        TRAP( error, numberEntry->StartL() );
+        }
+
+    const TBool result( !error );
+
+    if ( result )
+        {
+        __VTPRINT( DEBUG_GEN, "VtUi.NumberEntry.StopZ" )
+        RefreshSoftkeysL();
+        }
+
+    __VTPRINTEXITR( "VtUi.OpenNumberEntryL %d", result )
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HandlePhoneSendKeyL
+// Handles EKeyPhoneSend key events.
+// -----------------------------------------------------------------------------
+//
+TKeyResponse CVtUiAppUi::HandlePhoneSendKeyL( const TKeyEvent& /*aKeyEvent*/,
+    TEventCode aType )
+    {
+    __VTPRINTENTER( "VtUi.HandlePhoneSendKeyL" )
+    CEikMenuBar* menuBar = iEikonEnv->AppUiFactory()->MenuBar();
+    if ( !( IsDisplayingDialog() || ( menuBar && menuBar->IsDisplayed() ) ) )
+        {
+        const TBool isNumberSource( iUiStates->IsNumberEntryOpen() ||
+            iUiStates->IsDialerOpen() );
+        if ( ( aType == EEventKey ) && isNumberSource )
+            {
+            ProcessCommandL( EVtUiCmdDialEmergency );
+            }
+        }
+    __VTPRINTEXIT( "VtUi.HandlePhoneSendKeyL" )
+    return EKeyWasConsumed;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::StartDtmfTone
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::StartDtmfTone( const TChar& aTone )
+    {
+    // should be called only through current application state
+    iDtmfTone = aTone;
+    __VTPRINT2( DEBUG_GEN, "VtUi.DTMF.Start.%d", iDtmfTone() )
+    if ( Execute( KVtEngStartDtmfTone, &iDtmfTone ) != KErrNone )
+        {
+        iDtmfTone = 0;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::StopDtmfTone
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::StopDtmfTone()
+    {
+    // should be called only through current application state
+    if ( iDtmfTone() )
+        {
+        __VTPRINT( DEBUG_GEN, "VtUi.DTMF.STOP" )
+        (void) Execute( KVtEngStopDtmfTone, NULL );
+        iDtmfTone = 0;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HandleWsEventL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::HandleWsEventL(
+        const TWsEvent& aEvent,
+        CCoeControl* aDestination )
+    {
+    __VTPRINTENTER( "VtUi.HandleWsEventL" )
+    const TInt type = aEvent.Type();
+    __VTPRINT2( DEBUG_GEN, "VtUi.HandleWsEventL type = %d", type );
+
+    // Zoom-in and Zoom-out keys need specific handling because keyup and
+    // keydown events cannot be checked from iCode field of TKeyEvent
+    if ( PreHandleKeyEventL( aEvent ) )
+        {
+        __VTPRINTEXIT( "VtUi.HandleWsEventL (PreHandleKeyEventL)" )
+        return;
+        }
+
+    // Zoom mode is dismissed if some interrupting event happens prior timeout.
+    // Zoom mode can be interrupted with a  keypress i.e. any keypress, except
+    // keys that are reserved for adjusting zoom dismiss zoom mode. Also any
+    // system event e.g. note or waiting call dismiss zoom mode.
+    if ( iUiStates->IsZoomModeOn() )
+        {
+        if ( ProcessWsEventIfZoomModeIsActiveL( aEvent ) )
+            {
+            __VTPRINTEXIT( "VtUi.HandleWsEventL (IsZoomModeOn)" )
+            return;
+            }
+        }
+    // Zoom mode can be also activated with up and down arrow keys.
+    switch ( type )
+        {
+        case EEventKey:
+        case EEventKeyUp:
+        case EEventKeyDown:
+            {
+            const TKeyEvent* keyEvent = aEvent.Key();
+            const TBool isHwZoomKey(
+                keyEvent->iCode == EKeyZoomIn ||
+                keyEvent->iCode == EKeyZoomOut );
+            const TBool isZoomKey(
+                keyEvent->iScanCode == EStdKeyUpArrow ||
+                keyEvent->iScanCode == EStdKeyDownArrow ||
+                isHwZoomKey );
+
+            // Zoom mode can be also activated with up and down arrow keys.
+            if ( isZoomKey )
+                {
+                const TBool isZoomAllowed(
+                    !iEikonEnv->AppUiFactory()->MenuBar()->IsDisplayed() &&
+                    !iUiStates->MediaState().IsSharing() &&
+                    !iUiStates->MediaState().IsFrozen() &&
+                    !iUiStates->IsSelectingShare() &&
+                    VtUiUtility::IsZoomAllowed( Model().Media() ) &&
+                    !( iUiStates->IsNumberEntryOpen() && ShowNumberEntry() ) &&
+                    //there must not be the command which may switch provider to None
+                    !IsActiveCommand( EVtUiCmdDisableVideo )&&
+                    !IsActiveCommand( EVtUiCmdDisableBoth )&&
+                    !IsActiveCommand( EVtUiCmdUsePrimaryCamera )&&
+                    !IsActiveCommand( EVtUiCmdUseSecondaryCamera) );
+
+                if ( isZoomAllowed )
+                    {
+                     // If menu is open, toolbar is available, video is frozen,
+                     // sharing is on or user is selecting a file to be shared
+                     // do not set zoom mode on. If HW zoom key was pressed,
+                     // then zoom mode is activated even if toolbar is present.
+                    if ( isHwZoomKey || !iUiStates->IsToolbarAvailable() )
+                        {
+                        SetZoomModeL( ETrue );
+                        }
+                    }
+                }
+            }
+            break;
+        default:
+            break;
+        }
+
+    TBool partialForeGroundlost( EFalse );
+    switch ( type )
+        {
+        // Enter new rendering mode
+        case EVtUiWsEventBeginRenderingMode:
+            {
+            const TVtUiWsEvent< TRenderingMode >& event(
+               static_cast< const TVtUiWsEvent< TRenderingMode >& >
+                ( aEvent ) );
+            MVtUiDialer* dialer =  static_cast< CVtUiDialer* > (
+                iFeatureManager->GetFeatureById( EVtUiFeatureIdDialer ) );
+            __ASSERT_ALWAYS( dialer,
+                VtUiPanic::Panic( EVtUiPanicRendererNotFound ) );
+            iInstance->iContextControl->MakeVisible( EFalse );
+            SetRenderingModeL( *event.Data(), &dialer->VideoWindow() );
+            }
+            break;
+
+        // End rendering mode -> revert to previous
+        case EVtUiWsEventEndRenderingMode:
+            {
+            SetRenderingModeL( ERenderingModeDefault, iStoredDownlinkWindow );
+            iInstance->iContextControl->MakeVisible( ETrue );
+            iStoredDownlinkWindow = NULL;
+            }
+            break;
+
+        // New number source have been activated
+        case EVtUiWsEventNumberSourceActivate:
+            {
+            const TVtUiWsEvent< MVtUiNumberSource >& event(
+               static_cast< const TVtUiWsEvent< MVtUiNumberSource >& >
+                ( aEvent ) );
+            iNumberSource = event.Data();
+            }
+            break;
+
+        case EVtUiWsEventNumberSourceDeactivate:
+            {
+            const TVtUiWsEvent< MVtUiNumberSource >& event(
+               static_cast< const TVtUiWsEvent< MVtUiNumberSource >& >
+                ( aEvent ) );
+            if ( iNumberSource == event.Data() )
+                {
+                iNumberSource = NULL;
+                }
+            }
+            break;
+
+
+        // VT goes background e.g. selected application from fastswap
+        case KAknFullOrPartialForegroundLost:
+            {
+            // If capture mode is on stop it
+            if ( iUiStates->IsCaptureModeOn() )
+                {
+                CmdCancelCaptureL();
+                }
+            SetIncallBubbleAllowedInUsualL( ETrue );
+            const TInt windowGroupId =
+                iCoeEnv->WsSession().GetFocusWindowGroup();
+
+            // In S60 5.0 we get PartialFocusLost also for some notes and
+            // overally items that are somehow overlapping screen instead of
+            // FocusLost. In those cases we should not put app to background.
+            if( ( windowGroupId != iThisApplicationWgId ) &&
+                ( windowGroupId != iEikonServerWgId ) &&
+                ( windowGroupId != iAknCapServerWgId ) &&
+                ( windowGroupId != iAknNfyServerWgId ) )
+                {
+                partialForeGroundlost = ETrue;
+                }
+
+            // Fall through to EEventFocusLost event
+            }
+        case EEventFocusLost:
+            {
+            // If focus window group is not this application nor window server,
+            // then this application can not be in focus.
+            const TInt windowGroupId = GetFocusWindowGroupId();
+
+            if ( ( windowGroupId != iThisApplicationWgId ) &&
+                 ( windowGroupId != iEikonServerWgId ) &&
+                 ( windowGroupId != iAknCapServerWgId ) &&
+                 ( windowGroupId != iAknNfyServerWgId ) || partialForeGroundlost )
+                {
+                iCoeEnv->RootWin().DisableFocusChangeEvents();
+
+                TBool old = iUiStates->IsThisApplicationForeground();
+                if ( old )
+                    {
+                    TRAP_IGNORE( HandleForegroundChangedL( EFalse ) );
+                    }
+                }
+            }
+            break;
+
+        case EEventFocusGained:
+        case KAknFullOrPartialForegroundGained:
+            {
+            SetIncallBubbleAllowedInUsualL( EFalse );
+            // Now this application is focused.
+            (void)iCoeEnv->RootWin().EnableFocusChangeEvents();
+            TBool old = iUiStates->IsThisApplicationForeground();
+
+            if ( !old )
+                {
+                (void) HandleLayoutChanged();
+                TRAP_IGNORE( HandleForegroundChangedL( ETrue ) );
+                }
+            }
+            break;
+
+        case EEventKey:
+        case EEventKeyUp:
+        case EEventKeyDown:
+            {
+            // Key events with EModifierSpecial are received via FEP.
+            const TKeyEvent* keyEvent = aEvent.Key();
+            if ( keyEvent->iModifiers & EModifierSpecial )
+                {
+                TChar dtmfTone;
+                if ( VtUiUtility::IsDTMFEvent( *keyEvent, dtmfTone ) )
+                    {
+                    if ( type == EEventKey )
+                        {
+                        StartDtmfTone( dtmfTone );
+                        }
+                    else if ( type == EEventKeyUp )
+                        {
+                        StopDtmfTone();
+                        }
+                    }
+                }
+            }
+            break;
+
+        default:
+            break;
+        }
+    // Offer event to component manager
+    iComponentManager->HandleWsEventL( aEvent, aDestination );
+
+    // All events are sent to base class.
+    CAknAppUi::HandleWsEventL( aEvent, aDestination );
+    __VTPRINTEXIT( "VtUi.HandleWsEventL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::GetFocusWindowGroupId
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiAppUi::GetFocusWindowGroupId()
+    {
+    __VTPRINTENTER( "VtUi.GetFocusWindowGroupId" )
+    RWsSession& ws = iCoeEnv->WsSession();
+    RArray<RWsSession::TWindowGroupChainInfo>* allWgIds = 
+        new (ELeave) RArray<RWsSession::TWindowGroupChainInfo>( 4 );
+
+    CleanupDeletePushL( allWgIds );
+    CleanupClosePushL( *allWgIds );
+
+    User::LeaveIfError( ws.WindowGroupList( 0, allWgIds) );
+
+    const TInt chainCount = allWgIds->Count();
+    
+    RApaLsSession appArcSession;
+    User::LeaveIfError( appArcSession.Connect() );
+
+    appArcSession.GetAllApps();
+
+    CApaWindowGroupName* windowName;
+    TInt firstAppWgId = KErrNone;
+    for ( TInt index=0; index < chainCount; index++ )
+        {
+        RWsSession::TWindowGroupChainInfo& info = (*allWgIds)[index];
+        if ( info.iParentId <= 0 )
+            {
+            TInt wgId=info.iId;
+            windowName = CApaWindowGroupName::NewLC(ws, wgId);
+            TUid applicationUid = windowName->AppUid();                
+
+            // application screen (0 = main screen, 1 = cover ui )          
+            // the possible error value is omitted 
+            TInt appScreen = -1; 
+            TInt errId = appArcSession.GetDefaultScreenNumber( appScreen, applicationUid ); 
+            if (  errId != KErrNone )
+                {
+                CleanupStack::PopAndDestroy( windowName );  //windowName
+                continue;   
+                }
+            if ( firstAppWgId == KErrNone && ( appScreen == 0 || appScreen == -1 ) )
+                {
+                firstAppWgId = wgId; //   firstAppWgId should be the top windows group id.
+                }
+
+            CleanupStack::PopAndDestroy();  //windowName
+            }
+        }
+    CleanupStack::PopAndDestroy( 2 ); // allWgIds, *allWgIds
+    
+    __VTPRINTEXIT( "VtUi.GetFocusWindowGroupId" )
+    return firstAppWgId;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::PreHandleKeyEventL
+//
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiAppUi::PreHandleKeyEventL( const TWsEvent& aEvent )
+    {
+    __VTPRINTENTER( "VtUi.PreHandleKeyEventL" )
+    TBool consumed( EFalse );
+    switch( aEvent.Type() )
+        {
+
+    case EEventKey:
+        {
+        // when both these are set, then it's our simulated key press
+        const TInt
+            modifiers( EModifierKeypad | EModifierSpecial );
+
+        const TKeyEvent* ptrKeyEventC =
+            aEvent.Key();
+
+        const TBool isHwZoomKey(
+            ptrKeyEventC->iCode == EKeyZoomIn ||
+            ptrKeyEventC->iCode == EKeyZoomOut );
+
+        if ( isHwZoomKey &&
+             ( ptrKeyEventC->iModifiers & modifiers ) != modifiers )
+            {
+            __VTPRINT3( DEBUG_GEN, "VtUi.PreHandleKeyEventL keyc=%d scanc=%d",
+                ptrKeyEventC->iCode, ptrKeyEventC->iScanCode )
+            consumed = ETrue;
+
+            // Send EEventKeyDown only when iRepeats is 0
+            if ( !ptrKeyEventC->iRepeats )
+                {
+                TKeyEvent keyDownEvent( *ptrKeyEventC );
+                keyDownEvent.iRepeats = 0;
+                iCoeEnv->SimulateKeyEventL( keyDownEvent, EEventKeyDown );
+                }
+
+            // Send EEventKey always
+            TKeyEvent keyEvent( *ptrKeyEventC );
+            keyEvent.iModifiers |= modifiers;
+            iCoeEnv->SimulateKeyEventL( keyEvent, EEventKey );
+
+            // Que EEventKeyUp
+            TKeyEvent keyUpEvent( *ptrKeyEventC );
+            keyUpEvent.iRepeats = 0;
+            StoreKeyEventL( keyUpEvent );
+            }
+        else if ( ( ptrKeyEventC->iModifiers & modifiers ) == modifiers )
+            {
+            __VTPRINT( DEBUG_GEN,
+                "VtUi.PreHandleKeyEventL own event spotted, removing mods" )
+            // event is generated by us, remove modifiers
+            TKeyEvent* ptrKeyEvent = const_cast< TKeyEvent* >( ptrKeyEventC );
+            ptrKeyEvent->iModifiers &= ~modifiers;
+            }
+        }
+        break;
+
+    case EEventKeyUp:
+        if ( iIsStoredKeyEvent )
+            {
+            if ( iStoredKeyEvent.iScanCode == aEvent.Key()->iScanCode )
+                {
+                consumed = ETrue;
+                SimulateStoredKeyEventL( EEventKeyUp );
+                }
+            }
+        break;
+
+    default:
+        break;
+
+        }
+
+    __VTPRINTEXITR( "VtUi.PreHandleKeyEventL %d", consumed )
+    return consumed;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::SimulateStoredKeyEventL
+//
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::SimulateStoredKeyEventL( const TEventCode aEventCode )
+    {
+    __VTPRINTENTER( "VtUi.SimulateStoredKeyEventL" )
+    if ( iIsStoredKeyEvent )
+        {
+        // Reset flag first because SimulateKeyEventL() is synchronous
+        iIsStoredKeyEvent = EFalse;
+        iCoeEnv->SimulateKeyEventL( iStoredKeyEvent, aEventCode );
+        }
+    __VTPRINTEXITR( "VtUi.SimulateStoredKeyEventL %d", iIsStoredKeyEvent )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::StoreKeyEventL
+//
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::StoreKeyEventL( const TKeyEvent& aKeyEvent )
+    {
+    __VTPRINTENTER( "VtUi.StoreKeyEventL" )
+    if ( iIsStoredKeyEvent && ( iStoredKeyEvent.iCode != aKeyEvent.iCode ) )
+        {
+        SimulateStoredKeyEventL( EEventKeyUp );
+        }
+
+    if ( !iIsStoredKeyEvent )
+        {
+        iIsStoredKeyEvent = ETrue;
+        iStoredKeyEvent = aKeyEvent;
+        }
+    __VTPRINTEXITR( "VtUi.StoreKeyEventL %d", iIsStoredKeyEvent )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DoTryToStartTb
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiAppUi::DoTryToStartTbL( TAny* aAny )
+    {
+    CVtUiAppUi* self = static_cast< CVtUiAppUi* >( aAny );
+    self->TryToStartTbL();
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::UpdateVBSettingL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::UpdateVBSettingL()
+    {
+    // If white balance or color tone setting
+    // feauture exists update setting
+    CVtUiWhiteBalance* wb = static_cast< CVtUiWhiteBalance* >(
+    iFeatureManager->GetFeatureById( EVtUiFeatureIdWhiteBalance ) );
+
+    CVtUiColorTone* ct = static_cast< CVtUiColorTone* >(
+    iFeatureManager->GetFeatureById( EVtUiFeatureIdColourTone ) );
+
+    // If brightness or contrast slider
+    // feauture exists update them
+    CVtUiBrightness* br = static_cast< CVtUiBrightness* >(
+    iFeatureManager->GetFeatureById( EVtUiFeatureIdBrightness ) );
+    
+    CVtUiContrast* contr = static_cast< CVtUiContrast* >(
+    iFeatureManager->GetFeatureById( EVtUiFeatureIdContrast ) );
+    
+
+    
+    if ( wb && wb->State() == MVtUiFeature::EActive )
+        {
+        if ( iUiStates->IsWhiteBalanceSettingAvailable() )
+            {
+            __VTPRINT( DEBUG_GEN,"VtUi.UpdateVBSettingL WB update" )
+            wb->UpdateSettingL();
+            }
+        }
+
+    if ( ct && ct->State() == MVtUiFeature::EActive )
+        {
+        if ( iUiStates->IsColorToneSettingAvailable() )
+            {
+            __VTPRINT( DEBUG_GEN,"VtUi.UpdateVBSettingL CT update" )
+            ct->UpdateSettingL();
+            }
+        }
+    
+    if ( br && br->State() == MVtUiFeature::EActive )
+        {
+        if ( iUiStates->IsBrightnessSettingAvailable() )
+            {
+            __VTPRINT( DEBUG_GEN,"VtUi.UpdateVBSettingL br update" )
+            br->UpdateSlider();
+            }
+        }
+    
+    if ( contr && contr->State() == MVtUiFeature::EActive )
+        {
+        if ( iUiStates->IsContrastSettingAvailable() )
+            {
+            __VTPRINT( DEBUG_GEN,"VtUi.UpdateVBSettingL contract update" )
+            contr->UpdateSlider();
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::TryToStartTb
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::TryToStartTbL()
+    {
+    __VTPRINTENTER( "VtUi.TryToStartTbL" )
+    CVtUiToolbarBase* tb = static_cast< CVtUiToolbarBase* >(
+    iFeatureManager->GetFeatureById( EVtUiFeatureIdToolbar ) );
+    if ( tb )
+        {
+        // If menu, dialog or dialer is displayed do not start the toolbar,
+        // but let the timer run another round
+        CEikMenuBar* menuBar = iEikonEnv->AppUiFactory()->MenuBar();
+        if ( !( menuBar && menuBar->IsDisplayed() ) &&
+             !IsDisplayingDialog() &&
+             !(
+                iUiStates->IsDialerActivating() ||
+                iUiStates->IsDialerOpen() ||
+                iUiStates->IsWhiteBalanceModeOn() ||
+                iUiStates->IsColorToneModeOn()  ||
+                iUiStates->IsBrightnessModeOn()  ||
+                iUiStates->IsContrastModeOn()  ||
+                iUiStates->IsZoomModeOn() ||
+                iUiStates->IsVolumeModeOn() ||
+                iUiStates->IsCaptureModeOn() )
+                )
+            {
+            if ( iTbPeriodic )
+                {
+                iTbPeriodic->Cancel();
+                }
+            tb->StartL();
+            }
+        }
+    __VTPRINTEXIT( "VtUi.TryToStartTbL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ReTryToStartTbL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::RetryToStartTbL()
+    {
+    // only with fixed toolbar
+    if ( AknLayoutUtils::PenEnabled() )
+        {
+        if ( iUiStates->IsFixedToolbarVisible())
+            {
+            // When option menu is opened fixed toolbar should
+            // be set hidden
+            iUiStates->SetIsFixedToolbarVisible( EFalse );
+            // Stop toolbar
+            MVtUiFeature* tb =
+                iFeatureManager->GetFeatureById( EVtUiFeatureIdToolbar );
+            if ( tb )
+                {
+                // timer could be active
+                if ( iTbPeriodic )
+                    {
+                    iTbPeriodic->Cancel();
+                    }
+                tb->Stop();
+                }
+            if ( !iTbPeriodic )
+                {
+                iTbPeriodic = CPeriodic::NewL( CActive::EPriorityStandard );
+                }
+            // Toolbar doesn't come visible until options menu is closed.
+            iTbPeriodic->Start( KStartTime, KPeriodTime, TCallBack( DoTryToStartTbL, this ) );
+            }
+        }
+    else
+        {
+        StopSliders(); 
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::SetRenderingModeL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::SetRenderingModeL( const TRenderingMode aMode,
+    MVtUiVideoWindow* aNewDownlink )
+    {
+    __VTPRINTENTER( "VtUi.SetRenderingModeL" )
+    __VTPRINT2( DEBUG_GEN, "VtUi.SetRenderingModeL=%d", aMode );
+    iRenderingMode = aMode;
+    
+    TInt pos = 
+        iInstance->iRemoteVideoControl->DrawableWindow()->OrdinalPosition();
+    
+    if ( aNewDownlink )
+        {
+        if ( iDownlinkWindow != aNewDownlink )
+            {
+            iStoredDownlinkWindow = iDownlinkWindow;
+            iDownlinkWindow = aNewDownlink;
+            iStoredDownlinkWindow->SetRemoteVideoControl(NULL);
+            iDownlinkWindow->SetRemoteVideoControl(iInstance->iRemoteVideoControl);
+            iDownlinkWindow->LayoutRemoteVideo();
+            }
+        }
+    RefreshBlind();
+    UpdateRenderingParametersL();
+    
+    // Raise the menu priority, otherwise the remote video control may
+    // overlay the menu pane
+    CEikMenuBar* menuBar = iEikonEnv->AppUiFactory()->MenuBar();
+    if ( menuBar && menuBar->IsDisplayed() )
+        {
+        TInt mpPos = menuBar->MenuPane()->DrawableWindow()->OrdinalPosition();
+        menuBar->MenuPane()->DrawableWindow()->SetOrdinalPosition( mpPos, 
+                KVtUiRemoteVideoControlOrdinalPriHigh ); // Pri = 1
+        }
+    
+    if ( aMode == ERenderingModeDialer )
+        {
+        // Remote video control has the highest priority in dialer
+        iInstance->iRemoteVideoControl->DrawableWindow()->SetOrdinalPosition( 
+                pos, KVtUiRemoteVideoControlOrdinalPriHigh );
+        }
+    else 
+        {
+        // Set remote video control priority back to normal
+        iInstance->iRemoteVideoControl->DrawableWindow()->SetOrdinalPosition( 
+                pos, KVtUiRemoteVideoControlOrdinalPriNormal );
+        }
+    
+    __VTPRINTEXIT( "VtUi.SetRenderingModeL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::UpdateRenderingParametersL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::UpdateRenderingParametersL()
+    {
+    __VTPRINTENTER( "VtUi.UpdateRenderingParametersL" )
+ 
+    MVtEngMedia& media = Model().Media();
+    const TBool viewFinderStarted =
+        media.RenderingStarted( MVtEngMedia::EMediaOutgoing );
+    const TBool remoteRenderStarted =
+        media.RenderingStarted( MVtEngMedia::EMediaIncoming );
+
+    // Clear bitmaps
+    iInstance->iContextControl->SetStreamBitmap( NULL );
+    iInstance->iMainControl->SetStreamBitmap( NULL );
+
+    // Stop viewfinder & remote render.
+    if( viewFinderStarted )
+        {
+        ExecuteCmdL( KVtEngStopViewFinder );
+        }
+    ExecuteCmdL( KVtEngStopRenderRemote );
+
+    // Re-layout the remote video
+    iDownlinkWindow->LayoutRemoteVideo();
+    
+    const TBool uplinkWindowEqualsContextControl =
+        ( iUplinkWindow == iInstance->iContextControl );
+
+    // Prepare viewfinder.
+    TVtEngRenderingOptions configViewfinder(
+         uplinkWindowEqualsContextControl ?
+            DetermineContextControlOptions() :
+            DetermineMainControlOptions( EFalse ) );
+    ExecuteCmdL( KVtEngPrepareViewFinder, configViewfinder );
+
+    // Prepare remote render.
+    TRAPD ( err, {
+    TVtEngRenderingOptionsNGA configRemoteRenderNGA(
+            DetermineRemoteVideoControlOptionsNGA() );
+    ExecuteCmdL(
+            KVtEngPrepareRemoteRenderNGA,
+                configRemoteRenderNGA );
+    } );
+    if ( err != KErrNone )
+        {
+        if ( viewFinderStarted )
+            {
+            // Start viewfinder.
+            ExecuteCmdL( KVtEngStartViewFinder );
+            }
+        User::Leave ( err );
+        }
+        
+    // Start remote render.
+    TRAP_IGNORE( ExecuteCmdL( KVtEngStartRenderRemote ) );
+
+    if ( viewFinderStarted )
+        {
+        // Start viewfinder.
+        ExecuteCmdL( KVtEngStartViewFinder );
+        }
+
+    // Redraw remote video last frame to make sure that in layout change
+    // situation we still have something on screen.
+    iDownlinkWindow->Redraw();
+    __VTPRINTEXIT( "VtUi.UpdateRenderingParametersL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::MediaStateChangedL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::MediaStateChangedL()
+    {
+    CEikMenuBar* menuBar = iEikonEnv->AppUiFactory()->MenuBar();
+    // close menu if it is shown
+    if ( menuBar && menuBar->IsDisplayed() )
+        {
+        TKeyEvent keyEvent;
+        keyEvent.iCode =  EKeyEscape;
+        menuBar->OfferKeyEventL( keyEvent, EEventKey );
+        }
+    // Refresh toolbar
+    CVtUiToolbarBase* tb = static_cast< CVtUiToolbarBase* >(
+    iFeatureManager->GetFeatureById( EVtUiFeatureIdToolbar ) );
+    if ( tb )
+        {
+        tb->RefreshL();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ProcessCommandL
+// Processes commands.
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ProcessCommandL(
+        TInt aCommand )
+    {
+    __VTPRINTENTER( "VtUi.ProcessCommandL" )
+    
+    // delay mute cmd received during layout change
+    if ( aCommand == EAknSoftkeyOptions )
+        {
+        if ( iLayoutChg )
+            {
+            iDelayedCmd = EAknSoftkeyOptions;
+            __VTPRINTEXIT( "VtUi.ProcessCommandL mute delayed due to LayoutChange" )
+            return;
+            }
+        }
+    
+    MVtEngCommandHandler& command = Model().CommandHandler();
+    command.ExecuteL( KVtEngRequestLastRemoteFrame, NULL );
+    
+    RetryToStartTbL();
+
+    iInstance->iMainControl->SetSize( iInstance->iMainControl->Size() );
+    iInstance->iMainControl->DrawNow();
+        
+    // Handle OK options menu.
+    const TInt menuResource =
+        iUiStates->IsLaunchOkOptionsMenu() ?
+            R_VIDEOTELUI_OK_MENUBAR :
+            R_VIDEOTELUI_MENUBAR;
+
+    iUiStates->SetLaunchOkOptionsMenu( EFalse );
+
+    CEikMenuBar* menu = iEikonEnv->AppUiFactory()->MenuBar();
+    if ( menu )
+        {
+        menu->SetMenuTitleResourceId( menuResource );
+        //Here we again set back the type of menu to "Options" when pressed LSK
+        menu->SetMenuType( CEikMenuBar::EMenuOptions );
+        }
+    CAknAppUi::ProcessCommandL( aCommand );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::IsActiveCommand
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiAppUi::IsActiveCommand( TInt aCommand ) const
+    {
+    return ( iActiveCommands.FindInOrder( aCommand ) != KErrNotFound );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::State
+// -----------------------------------------------------------------------------
+//
+TVtUiAppStateBase& CVtUiAppUi::State()
+    {
+    return *iState;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::BitmapManager
+// -----------------------------------------------------------------------------
+//
+CVtUiBitmapManager& CVtUiAppUi::BitmapManager()
+    {
+    return *iInstance->iBitmapManager;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::TActiveCommand::TActiveCommand
+// -----------------------------------------------------------------------------
+//
+CVtUiAppUi::TActiveCommand::TActiveCommand(  RArray< TInt >& aActiveCommands,
+    TInt aCommandId )
+    : iActiveCommands( aActiveCommands ), iCommandId( aCommandId )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::TActiveCommand::~TActiveCommand
+// -----------------------------------------------------------------------------
+//
+CVtUiAppUi::TActiveCommand::~TActiveCommand()
+    {
+    Close();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::TActiveCommand::OpenL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::TActiveCommand::OpenL()
+    {
+    iActiveCommands.InsertInOrderL( iCommandId );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::TActiveCommand::Close
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::TActiveCommand::Close()
+    {
+    TInt index( iActiveCommands.FindInOrder( iCommandId ) );
+    if ( index != KErrNotFound )
+        {
+        iActiveCommands.Remove( index );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HandleCommandL
+// Handles commands.
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::HandleCommandL(
+        TInt aCommand )
+    {
+    __VTPRINTENTER( "VtUi.HandleCommand" )
+    __VTPRINT2( DEBUG_GEN, "VtUi.HandleCommand.Cmd=%d", aCommand );
+    // Check if same command is already being performed.
+    if ( IsActiveCommand( aCommand ) || ( iState &&
+         iState->HandleCommandL( aCommand ) ==
+         TVtUiAppStateBase::EEventHandled ) )
+        {
+        __VTPRINTEXIT( "VtUi.HandleCommand <silently ignoring> 0" )
+        return;
+        }
+
+    // Check if command is allowed to be performed.
+    if ( !IsCommandAllowedL( aCommand ) )
+        {
+        ShowNotAllowedNoteL();
+        __VTPRINTEXITR( "VtUi.HandleCommand %d", KErrAccessDenied )
+        return;
+        }
+
+    // delay mute cmd received during layout change (EGWG-7QQ3GZ)
+    if ( (aCommand == EVtUiCmdDisableAudio) || (aCommand == EVtUiCmdUsePrimaryCamera)
+            ||(aCommand == EVtUiCmdUseSecondaryCamera)
+            ||(aCommand == EVtUiCmdDisableVideo) )
+        {
+        if ( iLayoutChg )
+            {
+            iDelayedCmd = aCommand;
+            __VTPRINTEXIT( "VtUi.HandleCommand mute delayed due to LayoutChange" )
+            return;
+            }
+        }
+    
+    TActiveCommand activeCommand( iActiveCommands, aCommand );
+    // Close() will be called by the destructor, when instance goes out of
+    // scope
+    activeCommand.OpenL();
+
+    TBool refresh = EFalse;
+    CleanupPushRefreshL();
+
+    // Execute command
+    switch ( aCommand )
+        {
+        case EAknCmdHelp:
+            CmdHelpL();
+            break;
+
+        case EVtUiCmdOkOptions:
+            iUiStates->SetLaunchOkOptionsMenu( ETrue );
+            ProcessCommandL( EAknSoftkeyOptions );
+            break;
+
+        case EVtUiCmdEnableMain:
+        case EVtUiCmdDisableMain:
+            // Submenu is opened automatically.
+            break;
+
+        case EVtUiCmdEnableVideo:
+            {
+            MVtEngMedia::TShareObjectState shareObjectState;
+            VtUiUtility::GetObjectSharingState( Model().Media(),
+                                                shareObjectState );
+            if( shareObjectState != MVtEngMedia::ESharingImage )
+                {
+                refresh = ETrue;
+                EnableCommandActivatingAndCleanupPushL();
+                CmdEnableVideoL();
+                CleanupStack::PopAndDestroy();
+                }
+            else
+                {
+                CmdStopShareImageL( refresh );
+                EnableCommandActivatingAndCleanupPushL();
+                CmdEnableVideoL();
+                CleanupStack::PopAndDestroy();
+                }
+            }
+            break;
+
+        case EVtUiCmdEnableAudio:
+            refresh = ETrue;
+            CmdEnableAudioL();
+            break;
+
+        case EVtUiCmdEnableBoth:
+            EnableCommandActivatingAndCleanupPushL();
+            CmdEnableAudioL();
+            MVtEngMedia::TShareObjectState shareObjectState;
+            VtUiUtility::GetObjectSharingState( Model().Media(),
+                                                shareObjectState );
+            if( shareObjectState != MVtEngMedia::ESharingImage )
+                {
+                refresh = ETrue;
+                CmdEnableVideoL();
+                }
+            else
+                {
+                CmdStopShareImageL( refresh );
+                CmdEnableVideoL();
+                }
+            // EnableCommandActivatingAndCleanupPushL
+            CleanupStack::PopAndDestroy();
+            break;
+
+        case EVtUiCmdDisableVideo:
+            refresh = ETrue;
+            EnableCommandActivatingAndCleanupPushL();
+            CmdDisableVideoL();
+            CleanupStack::PopAndDestroy();
+            break;
+
+        case EVtUiCmdDisableAudio:
+            refresh = ETrue;
+            EnableCommandActivatingAndCleanupPushL();
+            CmdDisableAudioL();
+            CleanupStack::PopAndDestroy();
+            break;
+
+        case EVtUiCmdDisableBoth:
+            refresh = ETrue;
+            EnableCommandActivatingAndCleanupPushL();
+            CmdDisableVideoL();
+            CmdDisableAudioL();
+            CleanupStack::PopAndDestroy();
+            break;
+
+        case EVtUiCmdActivateBT:
+            refresh = ETrue;
+            EnableCommandActivatingAndCleanupPushL();
+            CmdActivateBtL();
+            CleanupStack::PopAndDestroy();
+            break;
+
+        case EVtUiCmdDeactivateBT:
+            refresh = ETrue;
+            EnableCommandActivatingAndCleanupPushL();
+            CmdDeactivateBtL();
+            CleanupStack::PopAndDestroy();
+            break;
+
+        case EVtUiCmdActivateLoudspeaker:
+        case EVtUiCmdSwitchFromBTToIHF:
+            refresh = ETrue;
+            EnableCommandActivatingAndCleanupPushL();
+            CmdActivateLoudspeakerL();
+            CleanupStack::PopAndDestroy();
+            break;
+
+        case EVtUiCmdDeactivateLoudspeaker:
+            refresh = ETrue;
+            EnableCommandActivatingAndCleanupPushL();
+            CmdDeactivateLoudspeakerL();
+            CleanupStack::PopAndDestroy();
+            break;
+
+        case EVtUiCmdUsePrimaryCamera:
+            refresh = ETrue;
+            CmdUseCameraL( ETrue );
+            break;
+
+        case EVtUiCmdUseSecondaryCamera:
+            refresh = ETrue;
+            CmdUseCameraL( EFalse );
+            break;
+
+        case EVtUiCmdSwapImagesPlaces:
+            {
+            refresh = ETrue;
+            CleanupPushEnableBlindL();
+            iUiStates->SetDisableBlindSetting( ETrue );
+            CmdSwapImagesPlacesL();
+                        
+            MVtEngMedia& media = Model().Media();
+            if ( VtUiUtility::GetFreezeState( media ) )
+                {
+                TBool isViewFinderInContextPane = IsViewFinderInContextPane();
+                iUiStates->SetViewFindersInitialPlaceContextPane( isViewFinderInContextPane );
+                }
+                
+            CleanupStack::PopAndDestroy(); // CleanupPushEnableBlindL
+            }
+            break;
+
+        case EVtUiCmdZoom:
+            refresh = ETrue;
+            // Toolbar uses this same command to set zoom on and off
+            // therefore this works as a toggle button
+            SetZoomModeL( !iUiStates->IsZoomModeOn() );
+
+            break;
+
+        case EAknSoftkeyBack:
+            {
+            refresh = ETrue;
+            MVtUiFeature* numberEntry =
+                iFeatureManager->GetFeatureById( EVtUiFeatureIdNumberEntry );
+            if ( numberEntry )
+                {
+                numberEntry->Stop();
+                }
+            }
+            break;
+
+        case EVtUiCmdSnapshot:
+            EnableCommandActivatingAndCleanupPushL();
+            CmdSnapshotL();
+            // EnableCommandActivatingAndCleanupPushL
+            CleanupStack::PopAndDestroy();
+            break;
+
+        case EVtUiCmdCapture:
+            CmdCaptureL();
+            break;
+
+        case EVtUiCmdCancelCapture:
+            CmdCancelCaptureL();
+            break;
+
+        case EVtUiCmdGoToIdle:
+            CmdGoToIdleL();
+            break;
+
+        // Dial emergency call
+        case EVtUiCmdDialerEmergencyCall:
+        __VTPRINT( DEBUG_GEN, "VtUiHandleCommand.CmdEmergencyCall" );
+            CmdSimulateKeyEvent( EStdKeyYes );
+            break;
+        // Object sharing related
+
+        case EVtUiCmdShareObjectImage:
+            CmdInitializeShareImageL( refresh );
+            break;
+
+        case EVtUiCmdStopSharingObjectImage:
+            EnableCommandActivatingAndCleanupPushL();
+            CmdStopShareImageL( refresh );
+            // EnableCommandActivatingAndCleanupPushL
+            CleanupStack::PopAndDestroy();
+            break;
+
+        case EVtUiCmdAdjustVideoVideoQuality:
+        case EVtUiCmdAdjustVideoWhiteBalance:
+        case EVtUiCmdAdjustVideoBrightness:
+        case EVtUiCmdAdjustVideoContrast:
+        case EVtUiCmdAdjustVideoColourTone:
+        __VTPRINT( DEBUG_GEN, "VtUiHandleCommand.CmdAdjustVideoL" );
+            CmdAdjustVideoL( aCommand );
+            break;
+
+        case EAknSoftkeyExit:
+        case EAknCmdExit:
+        case EEikCmdExit:
+            // handled by state
+            break;
+
+        default:
+            iCommandManager->HandleCommandL( aCommand );
+            break;
+        }
+
+    if ( refresh )
+        {
+        CleanupStack::PopAndDestroy(); // CleanupPushRefreshL
+        }
+    else
+        {
+        CleanupStack::Pop(); // CleanupPushRefreshL
+        }
+    __VTPRINTEXITR( "VtUi.HandleCommand %d", KErrNone )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DynInitMenuPaneL
+// Initialises menu pane dynamically.
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::DynInitMenuPaneL(
+        TInt,
+        CEikMenuPane* aMenuPane )
+    {
+    __VTPRINTENTER( "VtUi.DynInitMenuPaneL" )
+    
+    CVtUiMenus* menus = static_cast< CVtUiMenus* >(
+        iFeatureManager->GetFeatureById( EVtUiFeatureIdMenu ) );
+    if ( menus )
+        {
+        iUiStates->Update();
+        menus->SetMenuPane( aMenuPane );
+        menus->RefreshL();
+        }
+    __VTPRINTEXIT( "VtUi.DynInitMenuPaneL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HandleKeyEventL
+// Handles key events.
+// -----------------------------------------------------------------------------
+//
+TKeyResponse CVtUiAppUi::HandleKeyEventL(
+        const TKeyEvent& aKeyEvent,
+        TEventCode aType )
+    {
+    __VTPRINTENTER( "VtUi.HandleKeyEventL" )
+
+    TKeyResponse resp( EKeyWasNotConsumed );
+
+    if ( !iUiStates->IsNumberEntryOpen() ||
+         ( iUiStates->IsNumberEntryOpen() && !ShowNumberEntry() ) )
+        {
+        __VTPRINT( DEBUG_GEN, "VtUi.ToZoom" )
+
+        const TBool isHwZoomKey( aKeyEvent.iCode == EKeyZoomIn ||
+            aKeyEvent.iCode == EKeyZoomOut );
+
+        // if outgoing video is frozen disable zoom
+        MVtEngMedia& media = Model().Media();
+        if ( VtUiUtility::GetFreezeState ( media ) )
+            {
+             if ( aKeyEvent.iScanCode == EStdKeyUpArrow ||
+                 aKeyEvent.iScanCode == EStdKeyDownArrow ||
+                 isHwZoomKey )
+                {
+                __VTPRINTEXITR( "VtUi.HandleKeyEventL %d", EKeyWasConsumed )
+                return EKeyWasConsumed;
+                }
+            }
+
+        // Handle volume up & down
+
+        }
+
+    // If key event it not yet consumed, offer it to component manager
+    if ( resp == EKeyWasNotConsumed )
+        {
+        resp = iComponentManager->OfferKeyEventL( aKeyEvent, aType );
+        }
+
+    __VTPRINTEXITR( "VtUi.HandleKeyEventL %d", resp )
+    return resp;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HandleResourceChangeL
+// Handles change of a resource.
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::HandleResourceChangeL(
+        TInt aType )
+    {
+    __VTPRINTENTER( "VtUi.HandleResourceChangeL" )
+    const TBool layoutChange =
+        aType == KEikDynamicLayoutVariantSwitch ||
+        aType == KAknsMessageSkinChange;
+    if ( iInstance && layoutChange )
+        {
+        iInstance->iBitmapManager->InvalidateBitmaps();
+        }
+
+    CAknAppUi::HandleResourceChangeL( aType );
+
+    if ( iInstance )
+        {
+        if ( layoutChange )
+            {
+            if ( CurrentFixedToolbar() )
+                {
+                CurrentFixedToolbar()->HandleResourceChange( aType );
+                }
+            CVtUiToolbarBase* tb = static_cast< CVtUiToolbarBase* >(
+                iFeatureManager->GetFeatureById( EVtUiFeatureIdToolbar ) );
+            if( tb )
+                {
+                tb->HandleLayoutChangeL();
+                }
+            // Relayout controls
+            iBlankControl->SetRect( ClientRect() );
+            iInstance->LayoutChanged();
+            }
+        if ( iInstance->iNaviPane )
+            {
+            iInstance->iNaviPane->HandleResourceChange( aType );
+            }
+        }
+    iComponentManager->HandleResourceChangeL( aType );
+    
+    // Handle layout change only when type == DLVS
+    if ( iInstance && aType == KEikDynamicLayoutVariantSwitch )
+        {
+        (void) DelayedHandleLayoutChanged( this );
+        }
+    __VTPRINTEXIT( "VtUi.HandleResourceChangeL");
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HandleForegroundEventL
+// Handles foreground status change.
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::HandleForegroundEventL( TBool aForeground )
+    {
+    CAknAppUi::HandleForegroundEventL( aForeground );
+
+    if ( !aForeground )
+        {
+        StopDtmfTone();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::GetEikonEnv
+// -----------------------------------------------------------------------------
+//
+CEikonEnv* CVtUiAppUi::GetEikonEnv()
+    {
+    return iEikonEnv;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::GetCba
+// -----------------------------------------------------------------------------
+//
+CEikButtonGroupContainer* CVtUiAppUi::GetCba()
+    {
+    return iCba;
+    }
+
+//
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::SetZoomModeL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::SetZoomModeL( const TBool aEnableZoomMode,
+    const TBool aIsPermanent )
+    {
+    __VTPRINTENTER( "VtUi.SetZoomModeL" )
+    __VTPRINT2( DEBUG_GEN, "VtUi.SetZoomMo=%d", aEnableZoomMode  );
+    // If capture mode is on zoom mode cannot be changed
+    if ( iUiStates->IsCaptureModeOn() )
+        {
+        __VTPRINTEXIT( "VtUi.SetZoomModeL.CaptureOn" )
+        return;
+        }
+    CVtUiZoom* zoom = static_cast< CVtUiZoom* >(
+        iFeatureManager->GetFeatureById( EVtUiFeatureIdZoom ) );
+    if ( zoom )
+        {
+        if ( aEnableZoomMode )
+            {
+            if( aIsPermanent )
+                {
+                zoom->SetPermanenVisibility( aEnableZoomMode );
+                }
+            zoom->StartL();
+            }
+        else
+            {
+            if( aIsPermanent )
+                {
+                zoom->SetPermanenVisibility( aEnableZoomMode );
+                }
+            zoom->Stop();
+            }
+        }
+    iUiStates->SetZoomModeOn( aEnableZoomMode );
+    CVtUiToolbarBase* tb = static_cast< CVtUiToolbarBase* >(
+    iFeatureManager->GetFeatureById( EVtUiFeatureIdToolbar ) );
+      if ( tb )
+        {
+        tb->RefreshL();
+        }
+
+    __VTPRINTEXIT( "VtUi.SetZoomModeL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HelpContextL
+// Returns help context array.
+// -----------------------------------------------------------------------------
+//
+CArrayFix<TCoeHelpContext>* CVtUiAppUi::HelpContextL() const
+    {
+    CArrayFix<TCoeHelpContext>* array =
+        new ( ELeave ) CArrayFixFlat<TCoeHelpContext>( KVtUiHelpContextAmount );
+    CleanupStack::PushL( array );
+
+    array->AppendL(
+        TCoeHelpContext(
+            KVtUiTelephoneUid,
+            KINCAL_HLP_VIDEO_CALL ) );
+
+    CleanupStack::Pop( array );
+    return array;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ActiveExecExecuteL
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiAppUi::ActiveExecExecuteL(
+        CVtUiActiveExec& /*aActiveExec*/,
+        const TInt aState,
+        TInt& aNextState,
+        TRequestStatus& aRequest )
+    {
+    return ActiveExecInitExecuteL(
+            aState,
+            aNextState,
+            aRequest );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ActiveExecContinue
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiAppUi::ActiveExecContinue(
+        CVtUiActiveExec& /*aActiveExec*/,
+        TInt& aState,
+        const TInt aError )
+    {
+    return ActiveExecInitContinue( aState, aError );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ActiveExecCancel
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ActiveExecCancel(
+        CVtUiActiveExec& /*aActiveExec*/,
+        TInt aState )
+    {
+    ActiveExecInitCancel( aState );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ActiveExecDone
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ActiveExecDone(
+        CVtUiActiveExec& /*aActiveExec*/,
+        const TInt aInitialState )
+    {    
+    ActiveExecInitDone( aInitialState );
+    }
+
+// state object service handlers
+
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ShutdownL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ShutdownL()
+    {
+    __VTPRINTENTER( "VtUi.ShutdownL" )
+    
+    CVtUiWhiteBalance* wb = static_cast< CVtUiWhiteBalance* >(
+            iFeatureManager->GetFeatureById( EVtUiFeatureIdWhiteBalance ) );
+    CVtUiColorTone* ct = static_cast< CVtUiColorTone* >(
+            iFeatureManager->GetFeatureById( EVtUiFeatureIdColourTone ) );
+    
+    if ( wb && wb->State() == MVtUiFeature::EActive )
+        {
+        __VTPRINT( DEBUG_GEN, "CVtUiWhiteBalance::DoDeactivateL" );
+        wb->Stop();
+        }
+    if ( ct && ct->State() == MVtUiFeature::EActive )
+        {
+        __VTPRINT( DEBUG_GEN, "CVtUiColorTone::DoDeactivateL" );
+        ct->Stop( );            
+        }
+    
+    // close volume slider
+    CVtUiVolume* volume = static_cast< CVtUiVolume* >(
+    iFeatureManager->GetFeatureById( EVtUiFeatureIdVolume ) );
+    if ( volume )
+         {
+         volume->Stop();
+         }
+    // if capture mode is on stop the zoom
+    if ( iUiStates->IsCaptureModeOn() )
+        {
+        CVtUiZoom* zoom = static_cast< CVtUiZoom* >(
+        iFeatureManager->GetFeatureById( EVtUiFeatureIdZoom ) );
+        if ( zoom )
+            {
+            zoom->Stop();
+            }
+        }
+
+    iActiveExec->Start( EVtUiAppUiShutdown, *this );
+    __VTPRINTEXIT( "VtUi.ShutdownL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::StartupPhase1L
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::StartupPhase1L()
+    {
+    __VTPRINTENTER( "VtUi.StartupPhase1L" )
+    iActiveExec->Start( EVtUiAppUiStartup, *this );
+    __VTPRINTEXIT( "VtUi.StartupPhase1L" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::StartupPhase2L
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::StartupPhase2L()
+    {
+    __VTPRINTENTER( "VtUi.StartupPhase2L" )
+    iActiveExec->Start( EVtUiAppUiAnswered, *this );
+    __VTPRINTEXIT( "VtUi.StartupPhase2L" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ChangeState
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ChangeState( TVtUiAppStateBase* aState )
+    {
+    __VTPRINTENTER( "VtUi.ChangeState" )
+    iState = aState;
+    __VTPRINTEXIT( "VtUi.ChangeState" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::IsCommandAllowedL
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiAppUi::IsCommandAllowedL( const TInt aCommand )
+    {
+    return iCommandManager->IsCommandAllowedL( aCommand );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::RefreshDisabledFlagsL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::RefreshDisabledFlagsL()
+    {
+    // Refresh iDisabledFlags according to the current state.
+    TInt avail;
+    MVtEngMedia& media = Model().Media();
+    VtUiUtility::GetOutgoingMediaState( media, avail );
+    avail = ~avail;
+
+    iDisabledFlags = 0;
+    if ( avail & MVtEngMedia::EMediaAudio )
+        {
+        iDisabledFlags |= EDisabledAudio;
+        }
+    if ( avail & MVtEngMedia::EMediaVideo )
+        {
+        iDisabledFlags |= EDisabledVideo;
+        }
+
+    // If there are not cameras, then video options should be disabled.
+    if ( !VtUiUtility::HasCameras( media ) )
+        {
+        iDisabledFlags |= EVideoOptionsDisabled;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::RefreshCameraOptionAvailability
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::RefreshCameraOptionAvailability(
+        TBool& aUsePrimaryCameraNotAllowed,
+        TBool& aUseSecondaryCameraNotAllowed )
+    {
+    aUsePrimaryCameraNotAllowed = ETrue;
+    aUseSecondaryCameraNotAllowed = ETrue;
+
+    // Check sources caps and current camera to see which
+    // items should be included to the menu.
+
+    TInt sourcesCaps = 0;
+    MVtEngMedia& media = Model().Media();
+    (void) media.GetSourcesCaps( sourcesCaps );
+
+    MVtEngMedia::TCameraId cameraId;
+    const TBool hasCameraId =
+        ( media.GetCurrentCameraId( cameraId ) == KErrNone );
+
+    if ( hasCameraId )
+        {
+        // Camera is in use. Now selected camera is not included
+        // to the menu.
+        switch ( cameraId )
+            {
+            case MVtEngMedia::EPrimaryCamera:
+                sourcesCaps &=
+                    ~MVtEngMedia::ESourceCapsPrimaryCamera;
+                break;
+
+            case MVtEngMedia::ESecondaryCamera:
+                sourcesCaps &=
+                    ~MVtEngMedia::ESourceCapsSecondaryCamera;
+                break;
+
+            default:
+                sourcesCaps = 0;
+                break;
+            }
+        }
+    else
+        {
+        // If camera is not in use, then the "enable video" option
+        // will automatically use one of the existing cameras.
+        // However, if there are two cameras, then we need
+        // to include secondary to the menu.
+
+        const TInt bothCameras =
+            ( MVtEngMedia::ESourceCapsPrimaryCamera |
+            MVtEngMedia::ESourceCapsSecondaryCamera );
+        sourcesCaps &= ~bothCameras;
+        if ( sourcesCaps == bothCameras )
+            {
+            sourcesCaps &=
+                ~MVtEngMedia::ESourceCapsPrimaryCamera;
+            }
+        else
+            {
+            sourcesCaps = 0;
+            }
+        }
+
+    sourcesCaps = ~sourcesCaps;
+    aUsePrimaryCameraNotAllowed =
+        ( sourcesCaps & MVtEngMedia::ESourceCapsPrimaryCamera );
+    aUseSecondaryCameraNotAllowed =
+        ( sourcesCaps & MVtEngMedia::ESourceCapsSecondaryCamera );
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiAppUi::CmdCaptureL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdCaptureL()
+    {
+    //firstly need to know if underlying provider supports KVtEngFreeze
+    MVtEngCommandHandler& command = Model().CommandHandler();
+    const TInt caps = command.GetCommandCaps( KVtEngFreeze );
+    if ( (caps & MVtEngCommandHandler::EAttribEnabled) == 0)
+        {
+        return;
+        }
+    // end capture mode, image captured
+    iUiStates->SetCaptureModeOn( EFalse );
+    // end zoom mode
+    SetZoomModeL( EFalse, ETrue );
+    // freeze outgoing video
+    ExecuteCmdL( KVtEngFreeze );
+    RefreshBlind();
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiAppUi::CmdSnapshotL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdSnapshotL()
+    {
+    __VTPRINTENTER( "VtUi.CmdSnapshotL" )
+    
+    // zoom mode must be set on before capture mode is set on
+    SetZoomModeL( ETrue, ETrue );
+    
+    // set capture mode on
+    iUiStates->SetCaptureModeOn( ETrue );
+
+    // if outgoing video is already frozen
+    MVtEngMedia& media = Model().Media();
+    const TBool isFrozen( VtUiUtility::GetFreezeState( media ) );
+    if ( isFrozen )
+        {
+        ExecuteCmdL( KVtEngUnfreeze );
+        }
+    if ( iUiStates->IsCaptureModeOn() )
+        {
+        if ( !IsViewFinderInMainPane() )
+            {
+            SwitchViewFinderToMainPaneL( !isFrozen );
+            }
+        else if ( !isFrozen )
+            {
+            iUiStates->SetViewFindersInitialPlaceContextPane( EFalse );
+            }
+        }
+    
+    RefreshStatesL();
+    RefreshBlind();
+    __VTPRINTEXIT( "VtUi.CmdSnapshotL" )
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiAppUi::CmdCancelCaptureL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdCancelCaptureL()
+    {
+    __VTPRINTENTER( "VtUi.CmdCancelCaptureL" )
+    // end capture mode, image capture canceled
+    iUiStates->SetCaptureModeOn( EFalse );
+    SetZoomModeL( EFalse, ETrue );
+    RefreshStatesL();
+    RestoreViewFinderL();
+    RefreshBlind();
+    __VTPRINTEXIT( "VtUi.CmdCancelCaptureL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CmdEnableVideoL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdEnableVideoL()
+    {
+    // if outgoing video is frozen
+    MVtEngMedia& media = Model().Media();
+    if ( VtUiUtility::GetFreezeState( media ) )
+        {
+        ExecuteCmdL( KVtEngUnfreeze );
+        // swap images if needed
+        RestoreViewFinderL();
+        }
+    else
+        {
+        ExecuteCmdL( KVtEngStopViewFinder );
+        iUplinkWindow->SetStreamBitmap( NULL );
+        MVtEngMedia::TMediaSource source = MVtEngMedia::EMediaCamera;
+        ExecuteCmdL( KVtEngSetSource, source );
+        MVtEngMedia::TCameraId id;
+        if ( Model().Media().GetCurrentCameraId( id ) == KErrInUse )
+            {
+            ShowCameraInUseNoteL();
+            }
+        ExecuteCmdL( KVtEngStartViewFinder );
+        }
+    // update VB settings
+    UpdateVBSettingL();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CmdEnableAudioL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdEnableAudioL()
+    {
+    ExecuteCmdL( KVtEngUnmuteOutgoingAudio );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CmdDisableVideoL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdDisableVideoL()
+    {
+    iDisableVideoOngoing = ETrue;
+    if( iUiStates->IsZoomModeOn() )
+        {
+        // if zoom feature is active, stop that
+        MVtUiFeature* zm = iFeatureManager->GetFeatureById( EVtUiFeatureIdZoom );
+        if ( zm )
+            {
+            if ( zm->State() ==  MVtUiFeature::EActive )
+                {
+                __VTPRINT( DEBUG_GEN, "VtUi.CmdDisableVideoL zm->STOP" )
+                zm->Stop();
+                }
+            }
+        }
+        
+    ExecuteCmdL( KVtEngStopViewFinder );
+
+    iUplinkWindow->SetStreamBitmap( NULL );
+
+    TInt err = KErrNotFound;
+    if ( VtUiUtility::HasStillImage( Model().Media() ) )
+        {
+        __VTPRINT( DEBUG_GEN, "VtUi.:CmdDisableVideoL.HasStill" )
+        MVtEngMedia::TMediaSource source = MVtEngMedia::EMediaStillImage;
+        TRAP( err, ExecuteCmdL( KVtEngSetSource, source ) );
+        }
+    if ( ( err != KErrNone ) )
+        {
+        __VTPRINT( DEBUG_GEN, "VtUi.:CmdDisableVideoL.MediaNone" )
+        MVtEngMedia::TMediaSource source = MVtEngMedia::EMediaNone;
+        ExecuteCmdL( KVtEngSetSource, source );
+        }
+
+    ExecuteCmdL( KVtEngStartViewFinder );
+    iDisableVideoOngoing = EFalse;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CmdDisableAudioL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdDisableAudioL()
+    {
+    ExecuteCmdL( KVtEngMuteOutgoingAudio );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CmdActivateBtL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdActivateBtL()
+    {
+    TInt error = KErrNone;
+    CVtUiActivateBtHfDialog* dialog =
+        new ( ELeave ) CVtUiActivateBtHfDialog(
+            NULL,
+            &error,
+            Model().CommandHandler(),
+            *iEventObserver );
+    dialog->ExecuteDialogLD();
+
+    if ( error != KErrCancel )
+        {
+        switch ( error )
+            {
+            case KErrNone:
+                break;
+
+            case KErrNoMemory:
+            case KErrNotSupported:
+                // Clear failure - to be handled in active scheduler.
+                User::Leave( error );
+                break;
+
+            default:
+                // Failed - still show local information note in error situation.
+                {
+                HBufC* prompt =
+                    StringLoader::LoadLC(
+                        R_VIDEOTELUI_QTN_BT_DEVICE_NOT_AVAIL );
+                CAknInformationNote* note =
+                    new ( ELeave ) CAknInformationNote( ETrue );
+                note->ExecuteLD( *prompt );
+                CleanupStack::PopAndDestroy( prompt );
+                }
+                break;
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CmdDeactivateBtL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdDeactivateBtL()
+    {
+    // Command to Video tel engine
+    MVtEngAudio::TVtEngRoutingSetting audioSetting =
+        MVtEngAudio::EDeactivateBT;
+
+    ExecuteCmdL( KVtEngSetAudioRouting, audioSetting );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CmdActivateLoudspeakerL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdActivateLoudspeakerL()
+    {
+    MVtEngAudio::TVtEngRoutingSetting audioSetting =
+        MVtEngAudio::EActivateHandsfree;
+    ExecuteCmdL( KVtEngSetAudioRouting, audioSetting );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CmdDeactivateLoudspeakerL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdDeactivateLoudspeakerL()
+    {
+    MVtEngAudio::TVtEngRoutingSetting audioSetting =
+        MVtEngAudio::EDeactivateHansfree;
+    ExecuteCmdL( KVtEngSetAudioRouting, audioSetting );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CmdSwapImagesPlacesL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdSwapImagesPlacesL()
+    {
+    __VTPRINTENTER( "VtUi.Swap" )
+
+    MVtEngMedia& media = Model().Media();
+    const TBool viewFinderStarted =
+        media.RenderingStarted( MVtEngMedia::EMediaOutgoing );
+    const TBool remoteRenderStarted =
+        media.RenderingStarted( MVtEngMedia::EMediaIncoming );
+
+    if ( viewFinderStarted )
+        {
+        // Stop viewfinder.
+        __VTPRINT( DEBUG_GEN, "VtUi.Swap.VF.down" )
+        ExecuteCmdL( KVtEngStopViewFinder );
+        }
+    // Stop remote render.
+    __VTPRINT( DEBUG_GEN, "VtUi.Swap.RR.down" )
+    ExecuteCmdL( KVtEngStopRenderRemote );
+
+    // Clear windows.
+    iUplinkWindow->Reset();
+    iDownlinkWindow->Reset();
+
+    const TBool uplinkWindowEqualsContextControl =
+        ( iUplinkWindow == iInstance->iContextControl );
+
+    // Prepare viewfinder.
+    __VTPRINT( DEBUG_GEN, "VtUi.Swap.VF.upd" )
+    TVtEngRenderingOptions configViewfinder(
+         uplinkWindowEqualsContextControl ?
+             DetermineMainControlOptions( EFalse ) :
+             DetermineContextControlOptions() );
+    ExecuteCmdL( KVtEngPrepareViewFinder, configViewfinder );
+
+    // Swap windows.
+    if ( ERenderingModeDialer == iRenderingMode )
+        {
+        MVtUiVideoWindow* tmpWindow = iUplinkWindow;
+        iUplinkWindow = iStoredDownlinkWindow;
+        iStoredDownlinkWindow = tmpWindow;        
+        }
+    else
+        {
+        MVtUiVideoWindow* tmpWindow = iUplinkWindow;
+        iUplinkWindow = iDownlinkWindow;
+        iDownlinkWindow = tmpWindow;        
+        }
+    iUplinkWindow->SetRemoteVideoControl(NULL);
+    iDownlinkWindow->SetRemoteVideoControl(iInstance->iRemoteVideoControl);
+    iDownlinkWindow->LayoutRemoteVideo();    
+
+    // Prepare remote render.
+    __VTPRINT( DEBUG_GEN, "VtUi.Swap.RR.upd" )
+    TRAPD ( err, {
+    TVtEngRenderingOptionsNGA configRemoteRenderNGA(
+            DetermineRemoteVideoControlOptionsNGA() );
+    ExecuteCmdL(
+            KVtEngPrepareRemoteRenderNGA,
+                configRemoteRenderNGA );
+    } );
+    
+    if ( err != KErrNone )
+        {
+        if ( viewFinderStarted )
+            {
+            // Start viewfinder.
+            ExecuteCmdL( KVtEngStartViewFinder );
+            }
+        User::Leave ( err );    
+        }
+    // Start remote render.
+    __VTPRINT( DEBUG_GEN, "VtUi.Swap.RR.up" )
+    if ( remoteRenderStarted )
+        {
+        ExecuteCmdL( KVtEngStartRenderRemote );
+        }
+
+    __VTPRINT( DEBUG_GEN, "VtUi.Swap.VF.up" )
+    if ( viewFinderStarted )
+        {
+        // Start viewfinder.
+        ExecuteCmdL( KVtEngStartViewFinder );
+        }
+
+    iDownlinkWindow->Redraw();
+
+    // Refresh blind & waiting will be handled in HandleCommandL.
+    __VTPRINTEXIT( "VtUi.Swap" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CmdUseCameraL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdUseCameraL( const TBool aPrimaryCamera )
+    {
+    EnableCommandActivatingAndCleanupPushL();
+    MVtEngMedia& media = Model().Media();
+
+    MVtEngMedia::TMediaSource selectedSource =
+        ( aPrimaryCamera ) ?
+            MVtEngMedia::EMediaCameraPri : MVtEngMedia::EMediaCameraSec;
+
+    TInt available = 0;
+    VtUiUtility::GetOutgoingMediaState( media, available );
+    if ( available & MVtEngMedia::EMediaVideo )
+        {
+        ExecuteCmdL( KVtEngStopViewFinder );
+
+        iUplinkWindow->SetStreamBitmap( NULL );
+        TRAPD( err, ExecuteCmdL( KVtEngSetSource, selectedSource ) );
+
+        if ( err == KErrNone )
+            {
+            ExecuteCmdL( KVtEngStartViewFinder );
+            }
+        else
+            {
+            ShowOtherCameraNotUsableNoteL();
+            }
+        }
+    else
+        {
+        MVtEngMedia::TPrepareCameraParams params;
+        params.iMediaSource = selectedSource;
+        params.iInitialize = EFalse;
+        TRAPD( err, ExecuteCmdL( KVtEngPrepareCamera, params ) );
+        if ( err != KErrNone )
+            {
+            ShowOtherCameraNotUsableNoteL();
+            }
+        }
+    CleanupStack::PopAndDestroy(); // EnableCommandActivatingAndCleanupPushL
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CmdHelpL
+// Launches help application.
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdHelpL()
+    {
+    HlpLauncher::LaunchHelpApplicationL(
+        iEikonEnv->WsSession(),
+        AppHelpContextL() );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::PrepareExitL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::PrepareExitL()
+    {
+    __VTPRINTENTER( "VtUi.PrepareExitL" )
+    // Cancel progress dialog
+    HideProgressDialogL();
+    // Cancel menu.
+    CAknAppUi::ProcessCommandL( EEikCmdCanceled ); // does not leave
+
+    if ( !iExitTimer->IsActive() )
+        {
+        __VTPRINT( DEBUG_GEN, "VtUi.Exit.Timer.Go" )
+        iExitTimer->Start(
+            KVtUiExitTimeout,
+            KVtUiExitTimeout,
+            TCallBack( DoHandleExitTimeout, this ) );
+        }
+
+    // Asynchronous shutdown - execute command.
+    iBlankControl->SetActive( ETrue );
+    __VTPRINTEXIT( "VtUi.PrepareExitL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CmdUpdateZoomL
+// This method is called to update zoom step to the Video Telephone engine
+// side from the HandleKeyEventL method.
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdUpdateZoomL()
+    {
+    __VTPRINTENTER( "VtUi.UpdZm" )
+
+    __VTPRINTEXIT( "VtUi.UpdZm" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::SetZoomFactorL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::SetZoomFactorL( TInt aZoomStep )
+    {
+    __VTPRINTENTER( "VtUi.SetZoomFactorL" )
+    MVtEngMedia& media = Model().Media();
+    if ( VtUiUtility::IsZoomAllowed( media ) )
+        {
+        ExecuteCmdL( KVtEngSetZoomStep, aZoomStep );
+        }
+    __VTPRINTEXIT( "VtUi.SetZoomFactorL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CmdSimulateKeyEvent
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdSimulateKeyEvent( TInt aScanCode )
+   {
+   TRawEvent lEventDown;
+   lEventDown.Set( TRawEvent::EKeyDown, aScanCode );
+   UserSvr::AddEvent( lEventDown );
+   User::After( 100000 );
+   TRawEvent lEventUp;
+   lEventUp.Set( TRawEvent::EKeyUp, aScanCode );
+   UserSvr::AddEvent( lEventUp );
+   }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CmdUpdateVolumeL
+// This method is called to update volume to the Video Telephone engine
+// side
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdUpdateVolumeL( MVtEngAudio::TVtEngOutputVolume aVolume )
+    {
+    __VTPRINTENTER( "VtUi.CmdUpdateVolumeL" )
+    iVolCtrl->AdjustVolumeL( aVolume );
+    __VTPRINTEXIT( "VtUi.CmdUpdateVolumeL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CmdGoToIdleL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdGoToIdleL()
+    {
+    __VTPRINTENTER( "VtUi.CmdGoToIdleL" )
+    TInt idleUid = 0;
+    if ( RProperty::Get(
+             KPSUidAiInformation,
+             KActiveIdleUid,
+             idleUid ) == KErrNone )
+        {
+        __VTPRINT2( DEBUG_GEN, "Idle UID: %d", idleUid )
+        TApaTaskList taskList( iEikonEnv->WsSession() );
+        TApaTask task = taskList.FindApp( TUid::Uid( idleUid ) );
+        if ( task.Exists() )
+            {
+            __VTPRINT( DEBUG_GEN, "Idle task found")
+            RProperty::Set( KPSUidUikon, KUikVideoCallTopApp, KVtUiAppUid.iUid );
+            task.BringToForeground();
+            }
+        }
+    __VTPRINTEXIT( "VtUi.CmdGoToIdleL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CmdInitializeShareImageL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdInitializeShareImageL( TBool& aNeedRefresh )
+    {
+    __VTPRINTENTER( "VtUi.CmdInitializeShareImageL" )
+    EnableCommandActivatingAndCleanupPushL();
+
+    MVtUiFeature* tb =
+    iFeatureManager->GetFeatureById( EVtUiFeatureIdToolbar );
+      if ( tb )
+        {
+        // timer could be active
+        if ( iTbPeriodic )
+            {
+            iTbPeriodic->Cancel();
+            }
+        tb->Stop();
+        }
+    CDesCArray* selectedFiles = new ( ELeave ) CDesCArrayFlat( 1 );
+    CleanupStack::PushL( selectedFiles );
+    CVtUiAppUi::CVtUiAppUiMGVerifier* verifier =
+        CVtUiAppUi::CVtUiAppUiMGVerifier::NewLC( *this, *iCoeEnv );
+
+    // number erntry is not availabe while media gallery is open
+    iInstance->iNumberEntryActivation->SetActive( EFalse );
+    iUiStates->SetSelectingShare( ETrue );
+     
+    iInstance->iRemoteVideoControl->MakeVisible(EFalse);
+    TBool result( EFalse );
+    TRAPD( err, result =
+        MGFetch::RunL( *selectedFiles, EImageFile, EFalse, verifier ) );
+
+    iInstance->iRemoteVideoControl->MakeVisible(ETrue);
+   // leave occured
+   if ( err != KErrNone )
+       {
+       if ( iUiStates->ExecState() == TVtUiStates::EExecStateRunning )
+           {
+           ShowUnableToOpenNoteL();
+           }
+       else
+           {
+           __VTPRINTEXIT( "VtUi.CmdInitializeShareImageL 1" )
+           Exit();
+           }
+       }
+
+    if ( result && ( selectedFiles->Count() > 0 ) )
+        {
+        MVtEngMedia::TShareObjectState shareObjectState;
+        VtUiUtility::GetObjectSharingState( Model().Media(), shareObjectState );
+        iUiStates->SetViewFinderToMainPane(
+            shareObjectState == MVtEngMedia::ENotSharing );
+        MVtEngMedia::TShareObjectImageParameters
+            parameters( selectedFiles->operator[]( 0 ) );
+        ExecuteCmdL( KVtEngInitializeShareImage, parameters );
+        aNeedRefresh = ETrue;
+        }
+    else  // selection canceled start toolbar timer
+        {
+        if ( !iTbPeriodic )
+            {
+            iTbPeriodic = CPeriodic::NewL( CActive::EPriorityStandard );
+            }
+        iTbPeriodic->Cancel();
+        iTbPeriodic->Start( KStartTime, KPeriodTime, TCallBack( DoTryToStartTbL, this ) );
+        }
+    CleanupStack::PopAndDestroy( 2 ); // selectedFiles, verifier
+    // number entry is availabe again
+    iInstance->iNumberEntryActivation->SetActive( ETrue );
+    iUiStates->SetSelectingShare( EFalse );
+    CleanupStack::PopAndDestroy(); // EnableCommandActivatingAndCleanupPushL();
+    
+    __VTPRINTEXIT( "VtUi.CmdInitializeShareImageL 0" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CmdShareImageL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdShareImageL()
+    {
+    ExecuteCmdL( KVtEngStartShareImage );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CmdStopShareImageL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CmdStopShareImageL( TBool& aNeedRefresh )
+    {
+    ExecuteCmdL( KVtEngStopShareImage );
+    RestoreViewFinderL();
+    aNeedRefresh = ETrue;
+    // update VB settings
+    UpdateVBSettingL();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HandleWaitingStateChange
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::HandleWaitingStateChange( TBool aIsWaiting )
+    {
+    // Dialer must be closed in case of waiting call
+    MVtUiFeature* dialer =
+        iFeatureManager->GetFeatureById( EVtUiFeatureIdDialer );
+    if ( dialer )
+        {
+        dialer->Stop();
+        }
+    iUiStates->SetWaitingCall( aIsWaiting );
+    if (aIsWaiting == EFalse && 
+        iIsWaitingCallState != EFalse && 
+        !iUiStates->IsThisApplicationForeground() )
+        {
+        iIsWaitingCallState = EFalse;
+        ChangeApplicationFocus( ETrue );
+        TRAP_IGNORE ( SetHiddenL( EFalse ) );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ActiveExecInitExecuteL
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiAppUi::ActiveExecInitExecuteL(
+        const TInt aState,
+        TInt& aNextState,
+        TRequestStatus& aRequest )
+    {
+    __VTPRINTENTER( "VtUi.InitExec" )
+    __VTPRINT2( DEBUG_GEN, "VtUi.InitExec.st=%d", aState )
+
+    TBool synch = EFalse;
+
+    switch ( aState )
+        {
+        // Startup chain:
+        case EVtUiAppUiStartupCloseDialogs:
+            // Close all dialogs.
+            iBlankControl->SetActive( EFalse );
+            AknDialogShutter::ShutDialogsL( *iEikonEnv );
+            iBlankControl->SetActive( ETrue );
+
+            synch = ETrue;
+            aNextState = EVtUiAppUiStartupInitEngine;
+            break;
+
+        case EVtUiAppUiStartupInitEngine:
+            iUplinkWindow = iInstance->iContextControl;
+            iDownlinkWindow = iInstance->iMainControl;
+            ActiveExecInitExecuteCommandL( KVtEngInitializeEngine, aRequest );
+            aNextState = EVtUiAppUiStartupPrepareViewfinder;
+            break;
+
+        case EVtUiAppUiStartupPrepareViewfinder:
+            ActiveExecInitPrepareViewFinderL( aRequest );
+            iUplinkWindow->SetStreamBitmap( NULL );
+            aNextState = EVtUiAppUiStartupPrepareRemoteRender;
+            break;
+
+        case EVtUiAppUiStartupPrepareRemoteRender:
+        
+            iInstance->CreateRemoteVideoControl();
+            ActiveExecInitPrepareRemoteRenderL( aRequest );
+            iDownlinkWindow->SetStreamBitmap( NULL );
+            aNextState = EVtUiAppUiStartupRemoveBlank;
+            break;
+
+        case EVtUiAppUiStartupRemoveBlank:
+             // Finally remove blank control.
+            iBlankControl->SetActive( EFalse );
+            aNextState = EVtUiAppUiNone;
+            synch = ETrue;
+            break;
+
+        // Shutdown chain:
+        case EVtUiAppUiShutdownCloseDialogs:
+            {
+            // Close all dialogs.
+            iBlankControl->SetActive( EFalse );
+            AknDialogShutter::ShutDialogsL( *iEikonEnv );
+            iBlankControl->SetActive( ETrue );
+
+            MVtUiFeature* numberEntry = iFeatureManager->GetFeatureById(
+                EVtUiFeatureIdNumberEntry );
+            // Number entry may be active if its deactivation timer is still
+            // pending. Stop performs some cleanup which is needed before AppUi
+            // cleanup.
+            if ( numberEntry )
+                {
+                numberEntry->Stop();
+                }
+
+            synch = ETrue;
+            aNextState = EVtUiAppUiShutdownHideApplication;
+            }
+            break;
+
+        case EVtUiAppUiShutdownHideApplication:
+            if ( iUiStates->IsThisApplicationForeground() )
+                {
+                BringTelephoneToForeground();
+                }
+            else
+                {
+                ChangeApplicationFocus( EFalse );
+                }
+            iDownlinkWindow->SetStreamBitmap( NULL );
+            iUplinkWindow->SetStreamBitmap( NULL );
+            SetHiddenL( ETrue );
+            iEventObserver->DeleteRemConSession();
+
+            synch = ETrue;
+            aNextState = EVtUiAppUiShutdownResetEngine;
+            break;
+
+        case EVtUiAppUiShutdownResetEngine:
+            {
+            aRequest = KRequestPending;
+
+            MVtEngCommandHandler& command = Model().CommandHandler();
+            // There should not be any commands ongoing because
+            // we have canceled all dialogs (and this should
+            // be the only command without dialog).
+            command.CancelCommand( command.PendingCommand() ); // ignore error
+            command.ExecuteL( KVtEngResetEngine, NULL );
+            iShutdownRequest = &aRequest;
+
+            aNextState = EVtUiAppUiShutdownRemoveBlank;
+            }
+            break;
+
+        case EVtUiAppUiShutdownRemoveBlank:
+            // Finally remove blank control.
+            iBlankControl->SetActive( EFalse );
+
+            synch = ETrue;
+            aNextState = EVtUiAppUiNone;
+            break;
+
+        // Answered chain:
+        case EVtUiAppUiAnsweredStart:
+            {
+            CVtUiBlankDialog* dialog =
+                new ( ELeave ) CVtUiBlankDialog( &iExecBlankDialog );
+            dialog->ExecuteDialogNoWaitLD();
+            iExecBlankDialog = dialog;
+
+            synch = ETrue;
+            if ( iUiStates->IsLayoutChangeNeeded() )
+                {
+                (void) HandleLayoutChanged();
+                }
+            aNextState = EVtUiAppUiAnsweredRefreshNavi;
+            }
+            break;
+
+        case EVtUiAppUiAnsweredRefreshNavi:
+            RefreshNaviPaneL();
+            iEventObserver->CreateRemConSessionL();
+
+            synch = ETrue;
+            aNextState = EVtUiAppUiAnsweredRefreshSoftkeys;
+            break;
+
+        case EVtUiAppUiAnsweredRefreshSoftkeys:
+            RefreshSoftkeysL();
+
+            synch = ETrue;
+            aNextState = EVtUiAppUiAnsweredStartRemoteRender;
+            break;
+
+        case EVtUiAppUiAnsweredStartRemoteRender:
+            {
+            // Set waiting text to main control and start remote rendering.
+            // Video Telephone application should get KVtEngRemoteVideoStarted
+            // event when the first frame is received.
+            iDownlinkWindow->SetWaiting( ETrue );
+            iUiStates->SetWaitingForFirstFrame( ETrue );
+            //Must check if orientation changed between prepare remote render and start remote render
+            //If changed, update render parameter firstly
+            if ( iIsLandScapeOrientation != VtUiLayout::IsLandscapeOrientation() )
+                {
+                 __VTPRINT( DEBUG_GEN, "layout has been changed before start RemoteRender" )
+                 UpdateRenderingParametersL();
+                }
+
+            ActiveExecInitExecuteCommandL( KVtEngStartRenderRemote,
+                aRequest );
+
+            aNextState = EVtUiAppUiAnsweredCheckCamera;            
+            }
+            break;
+
+        case EVtUiAppUiAnsweredCheckCamera:
+            {
+            MVtEngMedia& media = Model().Media();
+            if ( VtUiUtility::HasCameras( media ) )
+                {
+                aNextState = EVtUiAppUiAnsweredChoose;
+                synch = ETrue;
+                }
+            else
+                {
+                if ( VtUiUtility::HasStillImage( media ) )
+                    {
+                    aNextState = EVtUiAppUiAnsweredSelectStill;
+                    }
+                else
+                    {
+                    aNextState = EVtUiAppUiAnsweredSelectNone;
+                    }
+
+                synch = ETrue;
+                }
+            }
+            break;
+
+        case EVtUiAppUiAnsweredChoose:
+            {
+            // If camera is in use, then show note,
+            // select still image, stop.
+            //
+            // If call is mobile terminated, then show query.
+            //      If user answers 'yes' to the query,
+            //      then activate camera.
+            //      If user answers 'no' to the query,
+            //      then choose still image.
+            //
+            // If call is mobile originated, then select camera.
+            //
+            // If selecting a camera fails, then select still image.
+            // If selecting still image fails, then select none.
+            //
+            CVtEngModel& model = Model();
+            MVtEngSessionInfo& session = model.Session();
+            MVtEngMedia& media = model.Media();
+
+            MVtEngMedia::TCameraId id;
+            TInt cameraErr = model.Media().GetCurrentCameraId( id );
+            if ( cameraErr == KErrInUse )
+                {
+                // Camera is in use.
+                iUiStates->SetExecShowCameraInUse( ETrue );
+
+                if ( VtUiUtility::HasStillImage( media ) )
+                    {
+                    aNextState = EVtUiAppUiAnsweredSelectStill;
+                    }
+                else
+                    {
+                    aNextState = EVtUiAppUiAnsweredSelectNone;
+                    }
+                }
+            else
+                {
+                // Check the direction of the call.
+                iUiStates->SetExecShowCameraInUse( EFalse );
+                MVtEngSessionInfo::TDirection direction;
+                if ( session.GetDirection( direction ) != KErrNone )
+                    {
+                    direction = MVtEngSessionInfo::EDirectionMT;
+                    }
+
+                if ( direction == MVtEngSessionInfo::EDirectionMT )
+                    {
+                    // Start steps towards the "Allow video" query.
+                    if ( VtUiUtility::HasStillImage( media ) )
+                        {
+                        aNextState = EVtUiAppUiAnsweredQuerySetupStill;
+                        }
+                    else
+                        {
+                        aNextState = EVtUiAppUiAnsweredQuerySetupNone;
+                        }
+                    }
+                else
+                    {                    
+                    aNextState = EVtUiAppUiAnsweredDoPrepareCamera;
+                    }
+                }
+            synch = ETrue;
+            }
+            break;
+
+        case EVtUiAppUiAnsweredQuerySetupStill:
+            ActiveExecInitSetSourceL( MVtEngMedia::EMediaStillImage, aRequest );
+            aNextState = EVtUiAppUiAnsweredQuerySetupStart;
+            break;
+
+        case EVtUiAppUiAnsweredQuerySetupNone:
+            ActiveExecInitSetSourceL( MVtEngMedia::EMediaNone, aRequest );
+            aNextState = EVtUiAppUiAnsweredQuerySetupStart;
+            break;
+
+        case EVtUiAppUiAnsweredQuerySetupStart:
+            ActiveExecInitExecuteCommandL( KVtEngStartViewFinder, aRequest );
+            aNextState = EVtUiAppUiAnsweredQueryShow;
+            break;
+
+        case EVtUiAppUiAnsweredQueryShow:
+            {
+            RefreshL();
+            TInt state = EPSCTsyCallStateUninitialized;
+            TInt err = RProperty::Get(
+                KPSUidCtsyCallInformation,
+                KCTsyCallState,
+                state );
+            __VTPRINT3( DEBUG_GEN, "VtUi.InitExec WaitingCall State=%d, err=%d",
+            state, err )
+            if ( EPSCTsyCallStateRinging != state )
+                {
+                ChangeApplicationFocus( ETrue );
+                SetHiddenL( EFalse );
+                }
+            else
+                {
+                iIsWaitingCallState = ETrue;
+                }
+
+            // User selectable call answer mute.
+            // In GS one can set call ansewer status
+            // eighter to query user, allways show, allways mute.
+            // GS values are checked from CR key ( KSettingsVTVideoSending )
+            // (default value is 0 = allways query).
+            TVtUiGsMuteVariation camute;
+            __VTPRINT2( DEBUG_GEN, "VtUi.InitExe GS CR key KSettingsVTVideoSending querystate=%d", camute.GsMuteState() )
+            if ( camute.GsMuteState() == KAllwaysQuery && !iUiStates->IsDeviceLockOn() && EPSCTsyCallStateRinging != state)
+                {
+                CVtUiAllowVideoDialog* dialog =
+                    new ( ELeave ) CVtUiAllowVideoDialog(
+                        &iExecDialog,
+                        CAknQueryDialog::ENoTone );
+                dialog->ExecuteDialogLD( aRequest );
+                iExecDialog = dialog;
+                aNextState = EVtUiAppUiAnsweredQueryDecide;
+                }
+            else if ( camute.GsMuteState() == KAllwaysAllow )
+                {
+                aNextState = EVtUiAppUiAnsweredDoPrepareCamera;
+                synch = ETrue;
+                }
+            else
+                {
+                aNextState = EVtUiAppUiNone;
+                synch = ETrue;
+                }
+
+            }
+            break;
+
+        case EVtUiAppUiAnsweredQueryDecide:
+            {
+            delete iExecDialog;
+            iExecDialog = NULL;
+
+            if ( iActiveExec->RequestStatus() ==
+                 CVtUiAllowVideoDialog::EUserAllowed )
+                {
+                aNextState = EVtUiAppUiAnsweredDoPrepareCamera;
+                }
+            else
+                {
+                aNextState = EVtUiAppUiNone;
+                }
+
+            synch = ETrue;
+            }
+            break;
+
+        case EVtUiAppUiAnsweredDoPrepareCamera:
+            {
+            MVtEngMedia& media = Model().Media();
+            MVtEngMedia::TMediaSource source = MVtEngMedia::EMediaCamera;
+            ActiveExecInitPrepareCameraL( source, aRequest );
+            aNextState = EVtUiAppUiAnsweredSelectCamera;
+            }
+            break;
+
+        case EVtUiAppUiAnsweredQuerySelectCamera:
+        case EVtUiAppUiAnsweredSelectCamera:
+            ActiveExecInitSetSourceL( MVtEngMedia::EMediaCamera, aRequest );
+            if ( aState == EVtUiAppUiAnsweredSelectCamera )
+                {
+                aNextState = EVtUiAppUiAnsweredStartViewfinder;
+                }
+            else
+                {
+                aNextState = EVtUiAppUiAnsweredQueryStartViewfinder;
+                }
+            break;
+
+        case EVtUiAppUiAnsweredQuerySelectStill:
+        case EVtUiAppUiAnsweredSelectStill:
+            ActiveExecInitSetSourceL( MVtEngMedia::EMediaStillImage, aRequest );
+
+            if ( aState == EVtUiAppUiAnsweredSelectStill )
+                {
+                aNextState = EVtUiAppUiAnsweredStartViewfinder;
+                }
+            else
+                {
+                aNextState = EVtUiAppUiAnsweredQueryStartViewfinder;
+                }
+            break;
+
+        case EVtUiAppUiAnsweredQuerySelectNone:
+        case EVtUiAppUiAnsweredSelectNone:
+            ActiveExecInitSetSourceL( MVtEngMedia::EMediaNone, aRequest );
+
+            if ( aState == EVtUiAppUiAnsweredSelectNone )
+                {
+                aNextState = EVtUiAppUiAnsweredStartViewfinder;
+                }
+            else
+                {
+                aNextState = EVtUiAppUiAnsweredQueryStartViewfinder;
+                }
+            break;
+
+        case EVtUiAppUiAnsweredQueryStartViewfinder:
+        case EVtUiAppUiAnsweredStartViewfinder:
+            ActiveExecInitExecuteCommandL( KVtEngStartViewFinder, aRequest );
+
+            if ( aState == EVtUiAppUiAnsweredStartViewfinder )
+                {
+                aNextState = EVtUiAppUiAnsweredFinish;
+                }
+            else
+                {
+                aNextState = EVtUiAppUiAnsweredQueryFinish;
+                }
+            break;
+
+        case EVtUiAppUiAnsweredQueryFinish:
+        case EVtUiAppUiAnsweredFinish:
+            RefreshL();
+            if ( iUiStates->IsExecShowCameraInUse() )
+                {
+                ShowCameraInUseNoteL();
+                }
+            
+            if ( aState != EVtUiAppUiAnsweredQueryFinish )
+                {
+                ChangeApplicationFocus( ETrue );
+                }
+            SetHiddenL( EFalse );
+
+            synch = ETrue;
+            aNextState = EVtUiAppUiNone;
+            break;
+
+        default:
+            User::Leave( KErrNotSupported );
+            break;
+        }
+
+    __VTPRINT2( DEBUG_GEN, "VtUi.InitExec.sync=%d", synch )
+    __VTPRINT2( DEBUG_GEN, "VtUi.InitExec.next=%d", aNextState )
+    __VTPRINTEXITR( "VtUi.InitExec %d", synch )
+    return synch;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ActiveExecInitContinue
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiAppUi::ActiveExecInitContinue(
+        TInt& aState,
+        const TInt aError )
+    {
+    __VTPRINTENTER( "VtUi.InitExecCont" )
+    __VTPRINT2( DEBUG_GEN, "VtUi.InitExecCont.st=%d", aState )
+    //__VTPRINT2( DEBUG_GEN, "VtUi.InitExecCont.err=%d", aError )
+
+    const TInt state = aState;
+    switch ( state )
+        {
+        case EVtUiAppUiStartupCloseDialogs:
+        case EVtUiAppUiStartupInitEngine:
+        case EVtUiAppUiStartupPrepareViewfinder:
+        case EVtUiAppUiStartupPrepareRemoteRender:
+        case EVtUiAppUiStartupRemoveBlank:
+            // Prepare failed.
+            break;
+
+        case EVtUiAppUiShutdownCloseDialogs:
+            if( KErrNotReady == aError )
+                {
+                aState = EVtUiAppUiShutdownHideApplication;
+                break;
+                }
+        case EVtUiAppUiShutdownResetEngine:            
+        case EVtUiAppUiShutdownRemoveBlank:
+            // shutdown failed
+            break;            
+
+        case EVtUiAppUiShutdownHideApplication:
+            aState = EVtUiAppUiShutdownResetEngine;
+            break;
+            
+
+        case EVtUiAppUiAnsweredStart:
+            aState = EVtUiAppUiAnsweredRefreshNavi;
+            break;
+
+        case EVtUiAppUiAnsweredRefreshNavi:
+            aState = EVtUiAppUiAnsweredRefreshSoftkeys;
+            break;
+
+        case EVtUiAppUiAnsweredRefreshSoftkeys:
+            aState = EVtUiAppUiAnsweredStartRemoteRender;
+            break;
+
+        case EVtUiAppUiAnsweredStartRemoteRender:
+        case EVtUiAppUiAnsweredStartViewfinder:
+        case EVtUiAppUiAnsweredSelectNone:
+        case EVtUiAppUiAnsweredFinish:
+        case EVtUiAppUiAnsweredQueryStartViewfinder:
+        case EVtUiAppUiAnsweredQuerySelectNone:
+        case EVtUiAppUiAnsweredQueryFinish:
+            // Answered failed.
+            break;
+
+        case EVtUiAppUiAnsweredCheckCamera:
+            aState = EVtUiAppUiAnsweredChoose;
+            break;
+
+        case EVtUiAppUiAnsweredChoose:
+            aState = EVtUiAppUiAnsweredQuerySetupStill;
+            break;
+
+        case EVtUiAppUiAnsweredQuerySetupStill:
+            aState = EVtUiAppUiAnsweredQuerySetupNone;
+            break;
+
+        case EVtUiAppUiAnsweredQuerySetupStart:
+        case EVtUiAppUiAnsweredQuerySetupNone:
+            aState = EVtUiAppUiAnsweredQueryShow;
+            break;
+
+        case EVtUiAppUiAnsweredQueryShow:
+        case EVtUiAppUiAnsweredQueryDecide:
+        case EVtUiAppUiAnsweredSelectCamera:
+            aState = EVtUiAppUiAnsweredSelectStill;
+            break;
+
+        case EVtUiAppUiAnsweredQuerySelectCamera:
+            aState = EVtUiAppUiAnsweredQuerySelectStill;
+            break;
+
+        case EVtUiAppUiAnsweredQuerySelectStill:
+            aState = EVtUiAppUiAnsweredQuerySelectNone;
+            break;
+
+        case EVtUiAppUiAnsweredSelectStill:
+            aState = EVtUiAppUiAnsweredSelectNone;
+            break;
+
+        default:
+            break;
+        }
+
+    const TBool cont = ( aState != state );
+    __VTPRINT2( DEBUG_GEN, "VtUi.InitExecCont.cont=%d", cont )
+
+    if ( !cont )
+        {
+        delete iExecBlankDialog;
+        iExecBlankDialog = NULL;
+        // Operation failed.
+        if ( iState )
+            {
+            TRAP_IGNORE( iState->AppUiStartupFailedL() );
+            }
+        }
+    __VTPRINTEXITR( "VtUi.InitExecCont %d", cont )
+    return cont;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ActiveExecInitCancel
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ActiveExecInitCancel(
+        const TInt /*aState*/ )
+    {
+    __VTPRINTENTER( "VtUi.InitExecCancel" )
+
+    iBlankControl->SetActive( EFalse );
+    delete iExecDialog;
+    delete iExecBlankDialog;
+
+    if ( iShutdownRequest )
+        {
+        User::RequestComplete( iShutdownRequest, KErrCancel );
+        iShutdownRequest = NULL;
+        }
+    __VTPRINTEXIT( "VtUi.InitExecCancel" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ActiveExecInitDone
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ActiveExecInitDone(
+        const TInt aInitialState )
+    {
+    __VTPRINTENTER( "VtUi.ExecInitDone" )
+    __VTPRINT2( DEBUG_GEN, "VtUi.InitExecDone.ini=%d", aInitialState )
+    delete iExecBlankDialog;
+    iExecBlankDialog = NULL;
+    // Operation succeeded
+
+    // Now we have finished.
+    if ( iState )
+        {
+        if ( aInitialState == EVtUiAppUiAnswered )
+            {
+            TRAP_IGNORE( iState->AppUiStartupPhase2DoneL() );
+            TRAP_IGNORE( AppUiInitDoneDoPostInitL() );
+            }
+        else if ( aInitialState == EVtUiAppUiShutdown )
+            {
+            TRAP_IGNORE( iState->ShutdownDoneL() );
+            }
+        else // EVtUiAppUiStartup
+            {
+            TRAP_IGNORE( iState->AppUiStartupPhase1DoneL() );
+            }
+        }
+    __VTPRINTEXIT( "VtUi.ExecInitDone" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ActiveExecInitExecuteCommandL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ActiveExecInitExecuteCommandL(
+        const TVtEngCommandId aCommand,
+        TRequestStatus& aRequest )
+    {
+    iExecDialog =
+        ExecuteCmdAsyncL(
+        &iExecDialog,
+        aCommand,
+        aRequest );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ActiveExecInitExecuteCommandL
+// -----------------------------------------------------------------------------
+//
+template < class T >
+void CVtUiAppUi::ActiveExecInitExecuteCommandL(
+        const TVtEngCommandId aCommand,
+        T& aParam,
+        TRequestStatus& aRequest )
+    {
+    iExecDialog =
+        ExecuteCmdAsyncL(
+        &iExecDialog,
+        aCommand,
+        aParam,
+        aRequest );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ActiveExecInitPrepareCameraL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ActiveExecInitPrepareCameraL(
+        const MVtEngMedia::TMediaSource aSource,
+        TRequestStatus& aRequest )
+    {
+    MVtEngMedia::TPrepareCameraParams params;
+    params.iMediaSource = aSource;
+    params.iInitialize = ETrue;
+    iExecDialog =
+        ExecuteCmdAsyncL(
+            &iExecDialog,
+            KVtEngPrepareCamera,
+            params,
+            aRequest );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ActiveExecInitSetSourceL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ActiveExecInitSetSourceL(
+        const MVtEngMedia::TMediaSource aSource,
+        TRequestStatus& aRequest )
+    {
+    MVtEngMedia::TMediaSource source =
+        aSource;
+    iExecDialog =
+        ExecuteCmdAsyncL(
+            &iExecDialog,
+            KVtEngSetSource,
+            source,
+            aRequest );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ActiveExecInitPrepareViewFinderL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ActiveExecInitPrepareViewFinderL(
+        TRequestStatus& aRequest )
+    {
+    // Configure view finder to context pane.
+    if ( iEventObserver->CommandSupported( KVtEngPrepareViewFinder ) )
+        {
+        TVtEngRenderingOptions configViewfinder(
+            DetermineContextControlOptions() );
+
+        iExecDialog =
+            ExecuteCmdAsyncL(
+                &iExecDialog,
+                KVtEngPrepareViewFinder,
+                configViewfinder,
+                aRequest );
+        }
+    else
+        {
+        // Viewfinder does not support DSA - panic.
+        VtUiPanic::Panic( EVtUiPanicPrepareViewFinderNotSupported );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ActiveExecInitPrepareRemoteRenderL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ActiveExecInitPrepareRemoteRenderL(
+        TRequestStatus& aRequest )
+    {
+    if ( iEventObserver->CommandSupported( KVtEngPrepareRemoteRenderNGA ) )
+        {
+        // Cropping is performed when we draw the picture.
+        TVtEngRenderingOptionsNGA configRemoteRenderNGA(
+                DetermineRemoteVideoControlOptionsNGA() );
+
+        iExecDialog =
+            ExecuteCmdAsyncL(
+                &iExecDialog,
+                KVtEngPrepareRemoteRenderNGA,
+                configRemoteRenderNGA,
+                aRequest );
+        }
+    else
+        {
+        // Neither supported - panic.
+        VtUiPanic::Panic( EVtUiPanicPrepareRemoteRenderNotSupported );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ActiveExecCmdExecuteCommandL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ActiveExecCmdExecuteCommandL(
+        const TVtEngCommandId aCommand,
+        TRequestStatus& aRequest )
+    {
+    iCmdExecDialog =
+        ExecuteCmdAsyncL(
+            &iCmdExecDialog,
+            aCommand,
+            aRequest );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ActiveExecCmdSetSourceL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ActiveExecCmdSetSourceL(
+        const MVtEngMedia::TMediaSource aSource,
+        TRequestStatus& aRequest )
+    {
+    MVtEngMedia::TMediaSource source = aSource;
+    iCmdExecDialog =
+        ExecuteCmdAsyncL(
+            &iCmdExecDialog,
+            KVtEngSetSource,
+            source,
+            aRequest );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ActiveExecCmdPrepareCameraL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ActiveExecCmdPrepareCameraL(
+        const MVtEngMedia::TMediaSource aSource,
+        TRequestStatus& aRequest )
+    {
+    MVtEngMedia::TPrepareCameraParams params;
+    params.iMediaSource = aSource;
+    params.iInitialize = ETrue;
+    iCmdExecDialog =
+        ExecuteCmdAsyncL(
+            &iCmdExecDialog,
+            KVtEngPrepareCamera,
+            params,
+            aRequest );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DetermineMainControlOptions
+// -----------------------------------------------------------------------------
+//
+TVtEngRenderingOptions
+    CVtUiAppUi::DetermineMainControlOptions( TBool aRemoteVideo )
+    {
+    // Determine main pane options.
+    TRect screen;
+    TAknWindowLineLayout stream;
+    TAknLayoutRect rect;
+
+    screen = iInstance->iMainControl->Rect();
+    VtUiLayout::GetSecondWindowStreamWholeLayout(
+        stream, aRemoteVideo && iUiStates->IsUseSQCif() );
+
+    rect.LayoutRect( screen, stream );
+    screen = rect.Rect();
+
+    return TVtEngRenderingOptions( *iEventObserver, screen.Size() );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DetermineContextControlOptions
+// -----------------------------------------------------------------------------
+//
+TVtEngRenderingOptions CVtUiAppUi::DetermineContextControlOptions()
+    {
+    // Determine context pane options.
+    TRect screen;
+    TRect clip;
+    TAknWindowLineLayout stream;
+    TAknLayoutRect rect;
+
+    VtUiLayout::GetApplicationParentRect( screen );
+    VtUiLayout::GetFirstWindowBackgroundLayout( stream );
+    rect.LayoutRect( screen, stream );
+    TRect background = rect.Rect();
+
+    VtUiLayout::GetFirstWindowStreamLayout( stream );
+    rect.LayoutRect( screen, stream );
+
+    // No cropping is performed, thus clip == screen.
+    clip = rect.Rect();
+    clip.iTl -= background.iTl;
+    clip.iBr -= background.iTl;
+
+    screen = clip;
+
+    return
+        TVtEngRenderingOptions(
+            *iEventObserver,
+            screen.Size() );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DetermineDialerControlOptions
+// -----------------------------------------------------------------------------
+//
+TVtEngRenderingOptions CVtUiAppUi::DetermineDialerControlOptions()
+    {
+    MVtUiDialer* dialer =  static_cast< CVtUiDialer* > (
+        iFeatureManager->GetFeatureById( EVtUiFeatureIdDialer ) );
+
+    __ASSERT_ALWAYS( dialer, VtUiPanic::Panic( EVtUiPanicRendererNotFound ) );
+
+    return
+        TVtEngRenderingOptions(
+            *iEventObserver,
+            dialer->VideoControl().Size() );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DetermineMainControlOptions
+// -----------------------------------------------------------------------------
+//
+TVtEngRenderingOptionsDSA
+    CVtUiAppUi::DetermineMainControlOptionsDSA( TBool aRemoteVideo )
+    {
+    // Determine main pane options.
+    TRect screen;
+    TRect clip;
+    TAknWindowLineLayout stream;
+    TAknLayoutRect rect;
+    const TBool usesSQCif( aRemoteVideo && iUiStates->IsUseSQCif() );
+    screen = iInstance->iMainControl->Rect();
+    VtUiLayout::GetSecondWindowStreamLayout( stream,
+        iUiStates->IsToolbarAvailable(), usesSQCif );
+    rect.LayoutRect( screen, stream );
+    clip = rect.Rect();
+
+    VtUiLayout::GetSecondWindowStreamWholeLayout( stream,
+        iUiStates->IsToolbarAvailable(), usesSQCif );
+    rect.LayoutRect( screen, stream );
+    screen = rect.Rect();
+
+    return
+        TVtEngRenderingOptionsDSA(
+            *iEventObserver,
+            iEikonEnv->WsSession(),
+            *( iEikonEnv->ScreenDevice() ),
+            *( iInstance->iMainControl->DrawableWindow() ),
+            clip,
+            screen );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DetermineContextControlOptionsDSA
+// -----------------------------------------------------------------------------
+//
+TVtEngRenderingOptionsDSA CVtUiAppUi::DetermineContextControlOptionsDSA()
+    {
+    // Determine context pane options.
+    TRect screen;
+    TRect clip;
+    TAknWindowLineLayout stream;
+    TAknLayoutRect rect;
+
+    VtUiLayout::GetApplicationParentRect( screen );
+    VtUiLayout::GetFirstWindowBackgroundLayout( stream );
+    rect.LayoutRect( screen, stream );
+    TRect background = rect.Rect();
+
+    VtUiLayout::GetFirstWindowStreamLayout( stream );
+    rect.LayoutRect( screen, stream );
+
+    // No cropping is performed, thus clip == screen.
+    clip = rect.Rect();
+    clip.iTl -= background.iTl;
+    clip.iBr -= background.iTl;
+
+    screen = clip;
+
+    return
+        TVtEngRenderingOptionsDSA(
+            *iEventObserver,
+            iEikonEnv->WsSession(),
+            *( iEikonEnv->ScreenDevice() ),
+            *( iInstance->iContextControl->DrawableWindow() ),
+            screen,
+            clip );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DetermineDialerControlOptionsDSA
+// -----------------------------------------------------------------------------
+//
+TVtEngRenderingOptionsDSA CVtUiAppUi::DetermineDialerControlOptionsDSA()
+    {
+    MVtUiDialer* dialer =  static_cast< CVtUiDialer* > (
+        iFeatureManager->GetFeatureById( EVtUiFeatureIdDialer ) );
+
+    __ASSERT_ALWAYS( dialer, VtUiPanic::Panic( EVtUiPanicRendererNotFound ) );
+
+    CCoeControl& videoWindow( dialer->VideoControl() );
+
+    return
+        TVtEngRenderingOptionsDSA(
+            *iEventObserver,
+            iEikonEnv->WsSession(),
+            *( iEikonEnv->ScreenDevice() ),
+            *( videoWindow.DrawableWindow() ),
+            videoWindow.Rect(),
+            videoWindow.Rect() );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DetermineMainControlOptionsDP
+// -----------------------------------------------------------------------------
+//
+TVtEngRenderingOptionsDP
+    CVtUiAppUi::DetermineMainControlOptionsDP( TBool aRemoteVideo )
+    {
+    // Determine main pane options.
+    const TRect screen( iInstance->iMainControl->Rect() );
+    TAknWindowLineLayout stream;
+    const TBool usesSQCif( aRemoteVideo && iUiStates->IsUseSQCif() );
+
+    // Even if the name is whole layout, this layout is (due to problem
+    // in layouts) video stream layout
+    TAknLayoutRect whole;
+    VtUiLayout::GetSecondWindowStreamWholeLayout( stream,
+        iUiStates->IsToolbarAvailable(), usesSQCif );
+    whole.LayoutRect( screen, stream );
+
+    // Even if the name is actual layout, this layout is (due to problem
+    // in layouts) whole == clipping layout
+    TAknLayoutRect actual;
+    VtUiLayout::GetSecondWindowStreamLayout( stream,
+        iUiStates->IsToolbarAvailable(), usesSQCif );
+    actual.LayoutRect( screen, stream );
+
+    return
+        TVtEngRenderingOptionsDP(
+            *iEventObserver,
+            iEikonEnv->WsSession(),
+            *( iEikonEnv->ScreenDevice() ),
+            *( iInstance->iMainControl->DrawableWindow() ),
+            actual.Rect(),
+            whole.Rect(),
+            iInstance->iMainControl->PositionRelativeToScreen() );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DetermineContextControlOptionsDP
+// -----------------------------------------------------------------------------
+//
+TVtEngRenderingOptionsDP CVtUiAppUi::DetermineContextControlOptionsDP()
+    {
+    // Determine context pane options.
+    TAknWindowLineLayout stream;
+    TAknLayoutRect rect;
+
+    TRect screen;
+    VtUiLayout::GetApplicationParentRect( screen );
+    VtUiLayout::GetFirstWindowBackgroundLayout( stream );
+    rect.LayoutRect( screen, stream );
+    const TRect background( rect.Rect() );
+
+    VtUiLayout::GetFirstWindowStreamLayout( stream );
+    rect.LayoutRect( screen, stream );
+
+    // No cropping is performed, thus clip == screen.
+    TRect clip( rect.Rect() );
+    clip.iTl -= background.iTl;
+    clip.iBr -= background.iTl;
+
+    return
+        TVtEngRenderingOptionsDP(
+            *iEventObserver,
+            iEikonEnv->WsSession(),
+            *( iEikonEnv->ScreenDevice() ),
+            *( iInstance->iContextControl->DrawableWindow() ),
+            clip,
+            clip,
+            iInstance->iContextControl->PositionRelativeToScreen() );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DetermineDialerControlOptionsDP
+// -----------------------------------------------------------------------------
+//
+TVtEngRenderingOptionsDP CVtUiAppUi::DetermineDialerControlOptionsDP()
+    {
+    MVtUiDialer* dialer =  static_cast< CVtUiDialer* > (
+        iFeatureManager->GetFeatureById( EVtUiFeatureIdDialer ) );
+
+    __ASSERT_ALWAYS( dialer, VtUiPanic::Panic( EVtUiPanicRendererNotFound ) );
+
+    CCoeControl& videoWindow( dialer->VideoControl() );
+
+    TPoint offs( videoWindow.DrawableWindow()->AbsPosition() );
+    TRect rect( videoWindow.Rect() );
+    return
+        TVtEngRenderingOptionsDP(
+            *iEventObserver,
+            iEikonEnv->WsSession(),
+            *( iEikonEnv->ScreenDevice() ),
+            *( videoWindow.DrawableWindow() ),
+            rect,
+            rect,
+            offs );
+    }
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DetermineRemoteVideoControlOptionsNGA
+// -----------------------------------------------------------------------------
+//
+TVtEngRenderingOptionsNGA
+    CVtUiAppUi::DetermineRemoteVideoControlOptionsNGA()
+    {
+        return TVtEngRenderingOptionsNGA( *iEventObserver,
+                iInstance->iRemoteVideoControl ->GetRWindow() , iEikonEnv->WsSession());
+    }
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ExecuteCmdL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ExecuteCmdL( const TVtEngCommandId aCommand )
+    {
+    DoExecuteCmdL( aCommand, NULL );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ExecuteCmdL
+// -----------------------------------------------------------------------------
+//
+template< class T >
+void CVtUiAppUi::ExecuteCmdL(
+        const TVtEngCommandId aCommand,
+        T& aParam )
+    {
+    TPtrC8 params( reinterpret_cast< TUint8* >( &aParam ), sizeof( T ) );
+    DoExecuteCmdL( aCommand, &params );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DoExecuteCmdL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::DoExecuteCmdL(
+        const TVtEngCommandId aCommand,
+        TDesC8* aParams )
+    {
+    __VTPRINT2( DEBUG_GEN, "VtUi.DoExec.cmd=%d", aCommand )
+    MVtEngCommandHandler& command = Model().CommandHandler();
+    const TInt caps = command.GetCommandCaps( aCommand );
+
+    if ( ( aCommand == KVtEngSetSource ||
+         aCommand == KVtEngHandleLayoutChange ) && ( caps & MVtEngCommandHandler::EAttribEnabled ) )
+        {
+        EndCallButtonPane().SetEnabled( EFalse );
+        }
+
+    if ( caps >= KErrNone )
+        {
+        const TBool asynchronous =
+            ( caps & MVtEngCommandHandler::EAttribAsync );
+
+        if ( asynchronous  )
+            {
+            if ( aCommand == KVtEngHandleLayoutChange )
+                {
+                CVtEngCmdExec* cmdExec = CVtEngCmdExec::NewL(
+                    Model().CommandHandler(), *iEventObserver, *GetCba() );
+                cmdExec->ExecuteCmdLD( aCommand );
+                }
+            else
+                {
+                CVtUiExecuteCmdDialog* dlg =
+                    new ( ELeave ) CVtUiExecuteCmdDialog(
+                        NULL,
+                        Model().CommandHandler(),
+                        *iEventObserver );
+                dlg->ExecuteCmdLD( aCommand, aParams, NULL );
+                
+                // Here we tell current state to handle shutdown request
+                if ( aCommand == KVtEngSetSource && iState
+                        && TVtUiAppStateBase::ShutdownRequested() )
+                    {
+                    iState->HandleVTCommandPerformedL( aCommand, KErrNone );
+                    }
+                }
+            }
+        else
+            {
+            command.ExecuteL( aCommand, aParams );
+            RefreshStatesL();
+            }
+        }
+    else
+        {
+        // Failed.
+        User::Leave( caps );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HandleShutdownReady
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::HandleShutdownReady()
+    {
+    __VTPRINTENTER( "VtUi.HandleShutdownReady" )
+
+    if(iAsyncCallback->IsActive())
+        {
+        iAsyncCallback->Cancel();
+        }
+
+    iAsyncCallback->Set(
+        TCallBack( &DoExit, this ) );
+    iAsyncCallback->CallBack();
+    __VTPRINTEXIT( "VtUi.HandleShutdownReady" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ContextControl
+// -----------------------------------------------------------------------------
+//
+CVtUiContextControl& CVtUiAppUi::ContextControl()
+   {
+    __VTPRINTENTER( "VtUi.ContextControl" )
+   __VTPRINTEXIT( "VtUi.ContextControl" )
+   return *iInstance->iContextControl;
+   }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::MainControl
+// -----------------------------------------------------------------------------
+//
+CVtUiMainControl& CVtUiAppUi::MainControl()
+   {
+   __VTPRINTENTER( "VtUi.MainControl" )
+   __VTPRINTEXIT( "VtUi.MainControl" )
+   return *iInstance->iMainControl;
+   }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::RemoteVideoControl
+// -----------------------------------------------------------------------------
+//
+CVtUiRemoteVideoControl& CVtUiAppUi::RemoteVideoControl()
+   {
+   __VTPRINTENTER( "VtUi.RemoteVideoControl" )
+   __VTPRINTEXIT( "VtUi.RemoteVideoControl" )
+   return *iInstance->iRemoteVideoControl;
+   }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::EndCallButtonPane
+// -----------------------------------------------------------------------------
+//
+CVtUiEndCallButtonPane& CVtUiAppUi::EndCallButtonPane()
+   {
+   __VTPRINTENTER( "VtUi.EndCallButtonPane" )
+   __VTPRINTEXIT( "VtUi.EndCallButtonPane" )
+   return *iInstance->iEndCallButtonPane;
+   }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DoExit
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiAppUi::DoExit( TAny* aAppUi )
+    {
+    __VTPRINTENTER( "VtUi.DoExit" )
+    CVtUiAppUi* self = static_cast< CVtUiAppUi* >( aAppUi );
+    self->iAsyncCallback->Cancel();
+    // Before exiting ensure there are no pending actions.
+    self->ActiveExecInitCancel( 0 );
+    self->Exit();
+    __VTPRINTEXIT( "VtUi.DoExit" )
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ExecuteCmdAsyncL
+// -----------------------------------------------------------------------------
+//
+CEikDialog* CVtUiAppUi::ExecuteCmdAsyncL(
+        CEikDialog** aDialogPtr,
+        const TVtEngCommandId aCommand,
+        TRequestStatus& aStatus )
+    {
+    return DoExecuteCmdAsyncL( aDialogPtr, aCommand, NULL, aStatus );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ExecuteCmdAsyncL
+// -----------------------------------------------------------------------------
+//
+template< class T >
+CEikDialog* CVtUiAppUi::ExecuteCmdAsyncL(
+        CEikDialog** aDialogPtr,
+        const TVtEngCommandId aCommand,
+        T& aParam,
+        TRequestStatus& aStatus )
+    {
+    TPtrC8 params( reinterpret_cast< TUint8* >( &aParam ), sizeof( T ) );
+    return DoExecuteCmdAsyncL( aDialogPtr, aCommand, &params, aStatus );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DoExecuteCmdAsyncL
+// -----------------------------------------------------------------------------
+//
+CEikDialog* CVtUiAppUi::DoExecuteCmdAsyncL(
+        CEikDialog** aDialogPtr,
+        const TVtEngCommandId aCommand,
+        TDesC8* aParams,
+        TRequestStatus& aStatus )
+    {
+    __VTPRINT2( DEBUG_GEN, "VtUi.DoExecAsync.cmd=%d", aCommand )
+    MVtEngCommandHandler& command = Model().CommandHandler();
+    const TInt caps = command.GetCommandCaps( aCommand );
+
+    if ( caps >= KErrNone )
+        {
+        const TBool asynchronous =
+            ( caps & MVtEngCommandHandler::EAttribAsync );
+
+        if ( asynchronous  )
+            {
+            CVtUiExecuteCmdDialog* dlg =
+                new ( ELeave ) CVtUiExecuteCmdDialog(
+                    aDialogPtr,
+                    Model().CommandHandler(),
+                    *iEventObserver );
+            dlg->ExecuteCmdLD( aCommand, aParams, &aStatus );
+            return dlg;
+            }
+        else
+            {
+            command.ExecuteL( aCommand, aParams );
+            RefreshStatesL();
+            TRequestStatus* status = &aStatus;
+            User::RequestComplete( status, KErrNone );
+            }
+        }
+    else
+        {
+        // Failed.
+        User::Leave( caps );
+        }
+
+    return NULL;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::Execute
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiAppUi::Execute( const TVtEngCommandId aCommand, TDesC8* aParam )
+    {
+    MVtEngCommandHandler& command = Model().CommandHandler();
+    TRAPD( err, command.ExecuteL( aCommand, aParam ) );
+#ifdef VTDEBUG
+    if ( err != KErrNone )
+        {
+        __VTPRINT3( DEBUG_GEN, "VtUi.Execute.Nok.cmd=%d,err=%d", aCommand, err )
+        }
+#endif // VTDEBUG
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HandleForegroundChangedL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::HandleForegroundChangedL(
+        TBool aIsForeground )
+    {
+    __VTPRINTENTER( "VtUi.HandleForegroundChangedL" )
+    __VTPRINT2( DEBUG_GEN, "VtUi.foreground=%d", (TInt) aIsForeground )
+
+    // Let the Engine know that Application's foregorund
+    // has changed. Then Engine can do some initalize/uninitalize
+    // before rendering due to the foreground state.
+    iState->PreHandleForegroundChangedL( aIsForeground );
+
+    // The availability of number entry depends on application is
+    // foreground or not
+    iInstance->iNumberEntryActivation->SetActive( aIsForeground );
+    
+    // These operations must be done before
+    // sending KVtEngSetUIForeground command to engine i.e. calling
+    // iState->HandleForegroundChangedL( aIsForeground )
+    if ( !aIsForeground  )
+        {
+        // if capture mode is on stop it
+        if ( iUiStates->IsCaptureModeOn() )
+            {
+            CmdCancelCaptureL();
+            }
+        // if brightness or contrast feature is active stop those
+        MVtUiFeature* br = iFeatureManager->GetFeatureById( EVtUiFeatureIdBrightness );
+        if ( br )
+            {
+            __VTPRINT( DEBUG_GEN, "VtUi.HandleForegroundChangedL br" )
+            if ( br->State() ==  MVtUiFeature::EActive )
+                {
+                __VTPRINT( DEBUG_GEN, "VtUi.HandleForegroundChangedL br->STOP" )
+                br->Stop();
+                }
+            }
+
+        MVtUiFeature* cr = iFeatureManager->GetFeatureById( EVtUiFeatureIdContrast );
+        if ( cr )
+            {
+            __VTPRINT( DEBUG_GEN, "VtUi.HandleForegroundChangedL cr" )
+            if ( cr->State() ==  MVtUiFeature::EActive )
+               {
+               __VTPRINT( DEBUG_GEN, "VtUi.HandleForegroundChangedL cr->STOP" )
+               cr->Stop();
+               }
+            }
+        }
+
+    TBool foregroundAndReady = EFalse;
+    if ( iState )
+        {
+        foregroundAndReady = iState->HandleForegroundChangedL( aIsForeground );
+        iUiStates->SetThisApplicationForeground( aIsForeground );
+        }
+    if ( foregroundAndReady )
+        {
+        // Refresh navi pane. This will start call duration updating
+        // if necessary.
+        RefreshNaviPaneL();
+        }
+    else if ( !aIsForeground )
+        {
+        iEventObserver->StopBeat();
+        }
+    SetIncallBubbleAllowedInUsualL( !foregroundAndReady );
+    __VTPRINTEXIT( "VtUi.HandleForegroundChangedL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::RefreshL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::RefreshL( const TInt aRefreshFlags )
+    {
+    if ( aRefreshFlags & EUiStates )
+        {
+        RefreshNaviPaneL();
+        }
+    if ( aRefreshFlags & EBlind )
+        {
+        RefreshBlind();
+        }
+    if ( aRefreshFlags & ENaviPane )
+        {
+        RefreshNaviPaneL();
+        }
+    if ( aRefreshFlags & ESoftkeys )
+        {
+        RefreshSoftkeysL();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HandleEngineResetL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::HandleEngineResetL()
+    {
+    __VTPRINTENTER( "VtUi.HandleEngineResetL" )
+    if ( iShutdownRequest )
+        {
+        __VTPRINT( DEBUG_GEN, "  VtUi.HandleEngineResetL shutdown" )
+        User::RequestComplete( iShutdownRequest, KErrNone );
+        iShutdownRequest = NULL;
+        }
+    __VTPRINTEXIT( "VtUi.HandleEngineResetL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::StopWaitingImage
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::StopWaitingImage()
+    {
+    if ( iInstance )
+        {
+        iDownlinkWindow->SetWaiting( EFalse );
+        iUiStates->SetWaitingForFirstFrame( EFalse );
+        RemoteVideoControl().MakeVisible(ETrue);
+        iDownlinkWindow->LayoutRemoteVideo();
+        }
+    }
+
+void CVtUiAppUi::StopWhiteBalanceOrColortone()
+    {
+    if( iEventObserver )
+        {
+        MVtEngMedia::TCameraId currentCamId;
+        //CVtEngMediaHandler& mediaHandler = iEventObserver->Model().Media();
+        ///mediaHandler.GetCurrentCameraId( currentCamId );
+        iEventObserver->Model().Media().GetCurrentCameraId( currentCamId );
+        __VTPRINT2( DEBUG_GEN, "  CVtUiAppUi::StopWhiteBalance currentCamId is %d", currentCamId);
+        
+        CVtUiWhiteBalance* wb = static_cast< CVtUiWhiteBalance* >(
+                                iFeatureManager->GetFeatureById( EVtUiFeatureIdWhiteBalance ) );
+        CVtUiColorTone* ct = static_cast< CVtUiColorTone* >(
+        iFeatureManager->GetFeatureById( EVtUiFeatureIdColourTone ) );
+        
+        // only when the current camera switch to the Primary to stop the wb
+        if( currentCamId == MVtEngMedia::EPrimaryCamera )
+            {
+            
+            if( wb && ( wb->State() == MVtUiFeature::EActive ) )
+                {
+                    
+                wb->Stop();
+                }
+            
+            if( ct && ( ct->State() == MVtUiFeature::EActive ) )
+                {                    
+                ct->Stop();
+                }
+            
+            return;
+            }
+        if( currentCamId == MVtEngMedia::ESecondaryCamera )
+            {
+            if( wb && wb->IsPendingCmd() )
+                wb->HandlePendingCmdL();
+            if( ct && ct->IsPendingCmd() )
+                ct->HandlePendingCmdL();
+            }
+        }
+    }
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HandleLayoutChanged
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiAppUi::HandleLayoutChanged()
+    {
+    iLayoutChangeCallback->CallBack();
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DelayedHandleLayoutChanged
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiAppUi::DelayedHandleLayoutChanged( TAny* aPtr )
+    {
+    CVtUiAppUi* self = reinterpret_cast< CVtUiAppUi* > ( aPtr );
+    self->iUiStates->SetDisableBlindSetting( ETrue );
+    TRAPD( err, self->HandleLayoutChangedL() );
+    self->iUiStates->SetDisableBlindSetting( EFalse );
+    self->RefreshBlind();
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HandleLayoutChangedL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::HandleLayoutChangedL()
+    {
+    __VTPRINTENTER( "VtUi.LayoutChg" )
+    if ( iState )
+        {
+        iState->HandleLayoutChangedL();
+        }
+    __VTPRINTEXIT( "VtUi.LayoutChg" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DoHandleLayoutChangedL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::DoHandleLayoutChangedL()
+    {
+    __VTPRINTENTER( "VtUi.DoLayoutChg" )
+    TInt error;
+    if( iUiStates->IsSelectingShare() )
+        {
+        iInstance->iRemoteVideoControl->MakeVisible( ETrue );
+        }
+    // Fully update rendering parameters
+    UpdateRenderingParametersL();
+    // Notify engine about layout change
+    iLayoutChg = ETrue;
+    if( iDisableVideoOngoing || iShareImageOngoing )
+        {
+        error = KErrNotReady;
+        }
+    else
+        {
+        TRAP( error, ExecuteCmdL( KVtEngHandleLayoutChange ) );
+        }
+    iLayoutChg = EFalse;
+
+    // Not ready error is allowed to happen (e.g. when sharing)
+    if ( error && ( error != KErrNotReady ) )
+        {
+        User::Leave( error );
+        }
+    else
+        {
+        __VTPRINT( DEBUG_GEN,
+            "VtUi.DoLayoutChg KVtEngHandleLayoutChange == KErrNotReady (ok)" )
+        TVtEngCommandId pendingCommand = Model().CommandHandler().PendingCommand();
+        TVtEngCommandId invalidCommand = Model().CommandHandler().InvalidCommand();
+        
+        __VTPRINT2( DEBUG_GEN, "VtUi.DoLayoutChg pendingCommand=%d",
+                pendingCommand )
+        
+        __VTPRINT2( DEBUG_GEN, "VtUi.DoLayoutChg invalidCommand=%d",
+                invalidCommand )
+        
+        if ( pendingCommand  == KVtEngMuteOutgoingAudio || 
+                pendingCommand  == KVtEngUnmuteOutgoingAudio ||
+                pendingCommand  == KVtEngSetAudioRouting ||
+                pendingCommand  == KVtEngSetAudioVolume ||
+                pendingCommand  == KVtEngSetSource ||
+                pendingCommand  == KVtEngPrepareCamera ||
+                pendingCommand  == KVtEngUnfreeze ||
+                pendingCommand  == KVtEngStopShareImage ||
+                invalidCommand  == KVtEngHandleLayoutChange )
+            {
+            iPendingCmd = pendingCommand;
+            iUiStates->SetLayoutChangeNeeded( ETrue );
+            }
+        if( iDisableVideoOngoing && pendingCommand == KVtEngCommandNone )
+            {
+            iPendingCmd = KVtEngSetSource;
+            iUiStates->SetLayoutChangeNeeded( ETrue );
+            }
+        if( iShareImageOngoing && pendingCommand == KVtEngCommandNone )
+            {
+            iPendingCmd = KVtEngStartShareImage;
+            iUiStates->SetLayoutChangeNeeded( ETrue );
+            }
+        }
+    // Notify component manager
+    iComponentManager->HandleLayoutChangeL();
+    MVtUiFeature* dialer =
+        iFeatureManager->GetFeatureById( EVtUiFeatureIdDialer );
+    const TBool dialerActive( dialer &&
+        ( dialer->State() == MVtUiFeature::EActive ) );
+    SwitchLayoutToFlatStatusPaneL( dialerActive );
+    
+    // Update the cam's whiteBalance and colorTone cause layoutchange will renew the camera,so
+    // restore the last user setting
+    UpdateVBSettingL();
+    
+    if( iUiStates->IsSelectingShare() )
+        {
+        iInstance->iRemoteVideoControl->MakeVisible(EFalse);
+        }
+    if ( iDelayedCmd != 0 )
+        {
+        __VTPRINT2( DEBUG_GEN, "VtUi.DoLayoutChg reexecute the delayed cmd=%d", iDelayedCmd);
+        if( iDelayedCmd == EAknSoftkeyOptions )
+            {
+            ProcessCommandL( iDelayedCmd );
+            }
+        else
+            {
+            HandleCommandL( iDelayedCmd );
+            }
+        iDelayedCmd = 0;
+        }
+    __VTPRINTEXIT( "VtUi.DoLayoutChg" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HandleVideoFrameL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::HandleVideoFrameL(
+        const TBool aLocal,
+        CFbsBitmap* aBitmap )
+    {
+    if ( aLocal )
+        {
+        iUplinkWindow->SetStreamBitmap( aBitmap );
+
+        if ( aBitmap )
+            {
+            // If white balance or color tone setting feauture is
+            // active update feature's setting page's background.
+            CVtUiWhiteBalance* wb = static_cast< CVtUiWhiteBalance* >(
+            iFeatureManager->GetFeatureById( EVtUiFeatureIdWhiteBalance ) );
+
+            CVtUiColorTone* ct = static_cast< CVtUiColorTone* >(
+            iFeatureManager->GetFeatureById( EVtUiFeatureIdColourTone ) );
+
+            if ( wb )
+                {
+                  __VTPRINT( DEBUG_GEN,"VtUi.HandleVideoFrameL WB" )
+                if ( wb->State() == MVtUiFeature::EActive )
+                    {
+                    __VTPRINT( DEBUG_GEN,"VtUi.HandleVideoFrameL WB update" )
+                    wb->UpdateBackground( aBitmap );
+                    }
+                }
+            if ( ct )
+                {
+                 __VTPRINT( DEBUG_GEN,"VtUi.HandleVideoFrameL CT" )
+                if (ct->State() == MVtUiFeature::EActive)
+                    {
+                     __VTPRINT( DEBUG_GEN,"VtUi.HandleVideoFrameL CT update" )
+                    ct->UpdateBackground( aBitmap );
+                    }
+                }
+            }
+        }
+    else
+        {
+        iDownlinkWindow->SetStreamBitmap( aBitmap );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::SetVideoFrame
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::SetVideoFrame(
+        const TBool aLocal,
+        CFbsBitmap* aBitmap )
+    {
+    if ( aLocal )
+        {
+        }
+    else
+        {
+        iDownlinkWindow->SetStreamBitmapReserve( aBitmap );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HandleVideoFrameRemoteProblemL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::HandleVideoFrameRemoteProblemL()
+    {
+    __VTPRINTENTER( "VtUi.HandleRemote" )
+    HandleVideoFrameL( EFalse, NULL );
+    __VTPRINTEXIT( "VtUi.HandleRemote" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HandleVideoFrameLocalProblemL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::HandleVideoFrameLocalProblemL()
+    {
+    __VTPRINTENTER( "VtUi.HandleLocal" )
+    // Camera might have changed - better to stop zoom.
+    HandleVideoFrameL( ETrue, NULL );
+    __VTPRINTEXIT( "VtUi.HandleLocal" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::RemoteVideoIsSQCif
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::RemoteVideoIsSQCif( TBool aIsSQCif )
+    {
+    iUiStates->SetUseSQCif( aIsSQCif );
+    if ( iDownlinkWindow == iInstance->iMainControl )
+        {
+        ControlUsesSQCif( aIsSQCif );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ControlUsesSQCif
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ControlUsesSQCif( TBool aIsSQCif )
+    {
+    iInstance->iMainControl->SupportSQCif( aIsSQCif );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ChangeRemoteVideoLayoutL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ChangeRemoteVideoLayoutL()
+    {
+    HandleLayoutChanged();
+    if ( iDownlinkWindow == iInstance->iMainControl )
+        {
+        iDownlinkWindow->SetBlind( EFalse );
+        StopWaitingImage();
+        iInstance->iMainControl->DrawNow();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ShowImageInitializeProgressL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ShowImageInitializeProgressL()
+    {
+    __VTPRINTENTER( "VtUi.ShowImageInitializeProgressL" )
+    ShowProgressDialogL( R_PROGRESS_DECODING_IMAGE_WAIT_NOTE, this );
+    __VTPRINTEXIT( "VtUi.ShowImageInitializeProgressL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HideImageInitializeProgressL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::HideImageInitializeProgressL()
+    {
+    __VTPRINTENTER( "VtUi.HideImageInitializeProgressL" )
+    // if volume slider is visible hide it
+    CVtUiVolume* volume = static_cast< CVtUiVolume* >(
+    iFeatureManager->GetFeatureById( EVtUiFeatureIdVolume ) );
+    if ( volume )
+         {
+         volume->Stop();
+         }
+    HideProgressDialogL();
+    __VTPRINTEXIT( "VtUi.HideImageInitializeProgressL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CheckBeatL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CheckBeatL( const TBool aCallDurationEnabled )
+    {
+    // Update call duration periodically if necessary.
+    const MVtEngSessionInfo::TSessionState state = Model().Session().State( EFalse );
+    const TBool timerEnable =
+        ( aCallDurationEnabled ) &&
+        ( ( state == MVtEngSessionInfo::EConnected ) ||
+          ( state == MVtEngSessionInfo::ENegotiating ) ||
+          ( state == MVtEngSessionInfo::EOpen ) );
+
+    if ( timerEnable && iUiStates->IsThisApplicationForeground() )
+        {
+        iEventObserver->StartBeatL();
+        }
+    else
+        {
+        iEventObserver->StopBeat();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HandleBeat
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::HandleBeat()
+    {
+    TRAP_IGNORE( RefreshNaviPaneL(); );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ShowCameraInUseNoteL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ShowCameraInUseNoteL() const
+    {
+    // The note must not be blocking.
+
+    CAknNoteDialog* dlg = new ( ELeave ) CAknNoteDialog( NULL );
+
+    dlg->PrepareLC( R_VIDEOTELUI_INFORMATION_NOTE );
+    dlg->ButtonGroupContainer().SetCommandSetL( R_AVKON_SOFTKEYS_OK_EMPTY );
+
+    HBufC* buf = StringLoader::LoadLC( R_VIDEOTELUI_QTN_INCAL_CLOSE_CAMCORDER );
+    dlg->SetTextL( *buf );
+    CleanupStack::PopAndDestroy( buf );
+
+    dlg->SetTone( CAknNoteDialog::EConfirmationTone );
+    dlg->SetTimeout( CAknNoteDialog::EUndefinedTimeout );
+    dlg->RunLD();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ShowNotAllowedNoteL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ShowNotAllowedNoteL() const
+    {
+    HBufC* prompt =
+        StringLoader::LoadLC(
+            R_VIDEOTELUI_TEXT_NOT_ALLOWED );
+
+    CAknInformationNote* note =
+        new ( ELeave ) CAknInformationNote( ETrue );
+    note->ExecuteLD( *prompt );
+    CleanupStack::PopAndDestroy( prompt );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ShowCallNotAllowedNoteL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ShowCallNotAllowedNoteL() const
+    {
+    HBufC* prompt =
+        StringLoader::LoadLC(
+            R_VIDEOTELUI_TEXT_CALL_NOT_ALLOWED );
+
+    CAknInformationNote* note =
+        new ( ELeave ) CAknInformationNote( ETrue );
+    note->ExecuteLD( *prompt );
+    CleanupStack::PopAndDestroy( prompt );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ShowOtherCameraNotUsableNoteL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ShowOtherCameraNotUsableNoteL() const
+    {
+    HBufC* prompt =
+        StringLoader::LoadLC(
+            R_VIDEOTELUI_QTN_ERR_CAM_SWAP );
+
+    CAknInformationNote* note =
+        new ( ELeave ) CAknInformationNote( ETrue );
+    note->ExecuteLD( *prompt );
+    CleanupStack::PopAndDestroy( prompt );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ShowUnableToOpenNoteL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ShowUnableToOpenNoteL() const
+    {
+    HBufC* prompt =
+        StringLoader::LoadLC(
+            R_VIDEOTELUI_QTN_ERR_UNABLE_TO_OPEN_IMAGE );
+    CAknInformationNote* note =
+        new ( ELeave ) CAknInformationNote( ETrue );
+    note->ExecuteLD( *prompt );
+    CleanupStack::PopAndDestroy( prompt );
+    }
+
+// -----------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ShowImageDecodingErrorNoteL()
+    {
+    HBufC* prompt =
+        StringLoader::LoadLC(
+            R_VIDEOTELUI_QTN_INCAL_NOTE_DECODING_FAILED );
+    CAknInformationNote* note =
+        new ( ELeave ) CAknInformationNote( ETrue );
+    note->ExecuteLD( *prompt );
+    CleanupStack::PopAndDestroy( prompt );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ShowDRMNotAllowedNoteL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ShowDRMNotAllowedNoteL() const
+    {
+    HBufC* prompt =
+        StringLoader::LoadLC(
+            R_VIDEOTELUI_QTN_ERR_DRM_NOT_ALLOWED );
+    CAknInformationNote* note =
+        new ( ELeave ) CAknInformationNote( ETrue );
+    note->ExecuteLD( *prompt );
+    CleanupStack::PopAndDestroy( prompt );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::SetSoftkeysL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::SetSoftkeysL( const TInt aSoftkeyResourceId )
+    {
+    if ( iCurrentSoftkeys != aSoftkeyResourceId )
+        {
+        if ( iCba )
+            {
+            iCba->SetCommandSetL( aSoftkeyResourceId );
+            iCba->DrawNow();
+            }
+        iCurrentSoftkeys = aSoftkeyResourceId;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::SetHiddenL
+// Makes application visible / invisible in fast swap window.
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::SetHiddenL(
+        const TBool aHidden )
+    {
+    CEikonEnv* eikonEnv = iEikonEnv;
+    CApaWindowGroupName* windowGroupName =
+        CApaWindowGroupName::NewLC(
+            eikonEnv->WsSession(),
+            iThisApplicationWgId );
+    windowGroupName->SetHidden( aHidden );
+    User::LeaveIfError(
+        windowGroupName->SetWindowGroupName(
+            eikonEnv->RootWin() ) );
+    CleanupStack::PopAndDestroy( windowGroupName );
+
+    // Update application UID.
+    TUid applicationUid = KVtUiAppUid;
+    if ( aHidden )
+        {
+        applicationUid.iUid = KVtUiTelephoneUid.iUid;
+        }
+    __VTPRINT2( DEBUG_GEN, "VtUi.SetHiddenL applicationUid.iUid=%x",
+        applicationUid.iUid )
+    // Set application that is "default top application"
+    TInt originalTopAppUid = 0;
+    TInt err = RProperty::Get(
+        KPSUidUikon,
+        KUikVideoCallTopApp,
+        originalTopAppUid );
+    __VTPRINT3( DEBUG_GEN, "VtUi.SetHiddenL orig. topApp=%x, err=%d",
+    originalTopAppUid, err )
+    if ( originalTopAppUid != applicationUid.iUid &&
+         iUiStates->IsDetailsReceived() )
+        {
+        __VTPRINT( DEBUG_GEN, "VtUi.SetHiddenL Do write KUikVideoCallTopApp" )
+        // Update key only if differs from original value and call
+        // has been answered
+        RProperty::Set(
+            KPSUidUikon,
+            KUikVideoCallTopApp,
+            applicationUid.iUid );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::SetCallIdL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::SetCallIdL( const TInt aCallId )
+    {
+    HBufC* titlePane =
+        StringLoader::LoadLC( R_VIDEOTELUI_QTN_CALL_NUMBER_VIDEO, aCallId );
+    TPtr ptr = titlePane->Des();
+    AknTextUtils::DisplayTextLanguageSpecificNumberConversion( ptr );
+    TitlePaneL()->SetText( titlePane );
+    CleanupStack::Pop( titlePane );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::SetCallNameL
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiAppUi::SetCallNameL( const TDesC& aName )
+    {
+    HBufC* nameBuf = aName.Alloc();
+    if ( nameBuf )
+        {
+        TPtr ptr = nameBuf->Des();
+        AknTextUtils::DisplayTextLanguageSpecificNumberConversion( ptr );
+        TitlePaneL()->SetText( nameBuf );
+        }
+
+    return ( nameBuf != NULL );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::BringTelephoneForeground
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::BringTelephoneToForeground()
+    {
+    __VTPRINTENTER( "VtUi.BringTelephoneToForeground" )
+    // If Telephone application is running, then
+    // bring it to the foreground.
+    const TInt windowGroupId = TelephoneApplicationWgId();
+    if ( windowGroupId )
+        {
+        CEikonEnv* eikonEnv = iEikonEnv;
+        TApaTask task( eikonEnv->WsSession() );
+        task.SetWgId( windowGroupId );
+        task.BringToForeground();
+        }
+
+    // In any case, send this application to the background.
+    ChangeApplicationFocus( EFalse );
+    __VTPRINTEXIT( "VtUi.BringTelephoneToForeground" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ChangeApplicationFocus
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ChangeApplicationFocus( const TBool aForeground )
+    {
+    __VTPRINTENTER( "VtUi.ChangeApplicationFocus" )
+    CEikonEnv* eikonEnv = iEikonEnv;
+    TApaTask task( eikonEnv->WsSession() );
+    task.SetWgId( iThisApplicationWgId );
+    if ( !aForeground )
+        {
+        task.SendToBackground();
+        }
+    else if ( !iUiStates->IsDeviceLockOn() )
+        {
+        task.BringToForeground();
+        }
+    __VTPRINTEXIT( "VtUi.ChangeApplicationFocus" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::TelephoneApplicationWgId
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiAppUi::TelephoneApplicationWgId()
+    {
+    TInt resultWgId = 0;
+
+    TApaTaskList taskList( iEikonEnv->WsSession() );
+    TInt appUid = 0;
+
+    // Try first Telephone application.
+    if ( RProperty::Get(
+             KPSUidTelInformation,
+             KTelPhoneUid,
+             appUid ) == KErrNone )
+        {
+        TApaTask task = taskList.FindApp( TUid::Uid( appUid ) );
+        if ( task.Exists() )
+            {
+            resultWgId = task.WgId();
+            }
+        }
+
+    // Then Idle application.
+    if ( !resultWgId &&
+         ( RProperty::Get(
+               KPSUidAiInformation,
+               KActiveIdleUid,
+               appUid ) == KErrNone ) )
+        {
+        TApaTask task = taskList.FindApp( TUid::Uid( appUid ) );
+        if ( task.Exists() )
+            {
+            resultWgId = task.WgId();
+            }
+        }
+
+    return resultWgId;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ShowNumberEntry
+// -----------------------------------------------------------------------------
+//
+inline TBool CVtUiAppUi::ShowNumberEntry() const
+    {
+    return EFalse;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::IsActiveIdleEnabledL
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiAppUi::IsActiveIdleEnabledL() const
+    {
+    TVtUiActiveIdleVariation activeIdleVariation;
+    return activeIdleVariation.IsActiveIdleEnabled();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CheckEngineFunctionality
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CheckEngineFunctionality()
+    {
+    const TBool prepareViewFinder =
+        iEventObserver->CommandSupportedAndSynchronous(
+             KVtEngPrepareViewFinder );
+    const TBool prepareRemoteRender =
+        iEventObserver->CommandSupportedAndSynchronous(
+            KVtEngPrepareRemoteRender );
+    const TBool prepareRemoteRenderDSA =
+        iEventObserver->CommandSupportedAndSynchronous(
+            KVtEngPrepareRemoteRenderDSA );
+    const TBool prepareRemoteRenderDP =
+        iEventObserver->CommandSupportedAndSynchronous(
+            KVtEngPrepareRemoteRenderDP );
+    const TBool stopViewFinder =
+        iEventObserver->CommandSupportedAndSynchronous(
+            KVtEngStopViewFinder );
+    const TBool startViewFinder =
+        iEventObserver->CommandSupportedAndSynchronous(
+            KVtEngStartViewFinder );
+    const TBool stopRemoteRender =
+        iEventObserver->CommandSupportedAndSynchronous(
+            KVtEngStopRenderRemote );
+    const TBool startRemoteRender =
+        iEventObserver->CommandSupportedAndSynchronous(
+            KVtEngStartRenderRemote );
+    const TBool setUIForeground =
+        iEventObserver->CommandSupportedAndSynchronous(
+            KVtEngSetUIForeground );
+
+    TVtUiDPVariation dpvariation;
+    TBool dpSupported( dpvariation.IsDPSupported() );
+
+    if ( !prepareViewFinder ||
+         ( !prepareRemoteRender && !prepareRemoteRenderDSA && !dpSupported ) ||
+         ( !prepareRemoteRender && !prepareRemoteRenderDP && dpSupported ) ||
+         !stopViewFinder ||
+         !startViewFinder ||
+         !stopRemoteRender ||
+         !startRemoteRender ||
+         !setUIForeground )
+        {
+        // Not supported - should never occur.
+        __VTPRINT( DEBUG_GEN, "VtUi.EngineFunc.ASSERT" )
+        VtUiPanic::Panic( EVtUiPanicEngineFunctionalityAssert );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::Model
+// -----------------------------------------------------------------------------
+//
+CVtEngModel& CVtUiAppUi::Model()
+    {
+    return iEventObserver->Model();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::VideoTelephonyVariation
+// -----------------------------------------------------------------------------
+//
+const TVtUiVideoTelephonyVariation& CVtUiAppUi::VideoTelephonyVariation() const
+    {
+    return iVTVariation;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::NumberSource
+// -----------------------------------------------------------------------------
+//
+MVtUiNumberSource* CVtUiAppUi::NumberSource() const
+    {
+    return iNumberSource;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::NaviPaneL
+// -----------------------------------------------------------------------------
+//
+inline CAknNavigationControlContainer* CVtUiAppUi::NaviPaneL()
+    {
+    return
+        static_cast< CAknNavigationControlContainer* >
+            ( StatusPane()->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::TitlePaneL
+// -----------------------------------------------------------------------------
+//
+inline CAknTitlePane* CVtUiAppUi::TitlePaneL()
+    {
+    return
+        static_cast< CAknTitlePane* >
+            ( StatusPane()->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CleanupPushRefreshL
+// -----------------------------------------------------------------------------
+//
+inline void CVtUiAppUi::CleanupPushRefreshL()
+    {
+    CleanupStack::PushL(
+        TCleanupItem( DoRefresh, this ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CleanupPushEnableBlindL
+// -----------------------------------------------------------------------------
+//
+inline void CVtUiAppUi::CleanupPushEnableBlindL()
+    {
+    CleanupStack::PushL(
+        TCleanupItem( DoEnableBlindSetting, this ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::EnableCommandActivatingAndCleanupPushL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::EnableCommandActivatingAndCleanupPushL()
+    {
+    __VTPRINTENTER( "VtUi.EnableCommandActivatingAndCleanupPushL" )
+    // add anyway to cleanup stack to avoid caring about stack balance
+    CleanupStack::PushL(
+        TCleanupItem( DoDisableCommandActivating, this ) );
+    // but in case of consecutive calls on this don't refresh (avoid flicker)
+    const TBool alreadyActivating( iUiStates->IsCommandActivating() );
+    // increases ref.count if alread set as activating
+    iUiStates->SetIsCommandActivating( ETrue );
+    if ( !alreadyActivating )
+        {
+        // refresh only when ref.count incremented from zero.
+        iCommandManager->RefreshL();
+        }
+    __VTPRINTEXIT( "VtUi.EnableCommandActivatingAndCleanupPushL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DoDisableCommandActivating
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::DoDisableCommandActivating( TAny* aAny )
+    {
+    CVtUiAppUi* self =
+        reinterpret_cast< CVtUiAppUi* >( aAny );
+    TRAP_IGNORE( self->HandleCommandDeactivationL() );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HandleCommandDeactivationL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::HandleCommandDeactivationL()
+    {
+    __VTPRINTENTER( "VtUi.HandleCommandDeactivationL" )
+    iUiStates->SetIsCommandActivating( EFalse );
+    if ( !iUiStates->IsCommandActivating() )
+        {
+        RefreshStatesL();
+        }
+    iDisableVideoOngoing = EFalse;
+    __VTPRINTEXIT( "VtUi.HandleCommandDeactivationL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DoEnableBlindSetting
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::DoEnableBlindSetting( TAny* aAny )
+    {
+    CVtUiAppUi* self =
+        reinterpret_cast< CVtUiAppUi* >( aAny );
+    self->iUiStates->SetDisableBlindSetting( EFalse );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DoRefresh
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::DoRefresh( TAny* aAny )
+    {
+    CVtUiAppUi* self =
+        reinterpret_cast< CVtUiAppUi* >( aAny );
+    TRAP_IGNORE( self->RefreshL() );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DoHandleExitTimeout
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiAppUi::DoHandleExitTimeout( TAny* /*aAny*/ )
+    {
+    __VTPRINT( DEBUG_GEN, "VtUi.Exit.Timer.EXPIRED!" )
+    VtUiPanic::Panic( EVtUiPanicApplicationShutdownTimeout );
+
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiAppUi::IsViewFinderInMainPane
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiAppUi::IsViewFinderInMainPane() const
+    {
+    return !( IsViewFinderInContextPane() );
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiAppUi::IsViewFinderInContextPane
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiAppUi::IsViewFinderInContextPane() const
+    {
+    return ( iUplinkWindow == iInstance->iContextControl );
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiAppUi::SwitchViewFinderToMainPaneL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::SwitchViewFinderToMainPaneL( TBool aUpdateState )
+    {
+    __VTPRINTENTER( "VtUi.SwitchViewFinderToMainPaneL" )
+    //change local video in to main pane
+    if( IsViewFinderInContextPane() )
+        {
+        //flag indicates the initial position of uplink window before freeze
+        if ( aUpdateState )
+            {
+            iUiStates->SetViewFindersInitialPlaceContextPane( ETrue );
+            }
+        HandleCommandL( EVtUiCmdSwapImagesPlaces );
+        }
+    else
+        {
+        if ( aUpdateState )
+            {
+            iUiStates->SetViewFindersInitialPlaceContextPane( EFalse );
+            }
+        }
+    __VTPRINTEXIT( "VtUi.SwitchViewFinderToMainPaneL" )
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiAppUi::SwitchViewFinderToContextPaneL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::SwitchViewFinderToContextPaneL( TBool aUpdateState )
+    {
+    __VTPRINTENTER( "VtUi.SwitchViewFinderToContextPaneL" )
+    //change local video in to context pane
+    if( !IsViewFinderInContextPane() )
+        {
+        //flag indicates the initial position of uplink window before freeze
+        if ( aUpdateState )
+            {
+            iUiStates->SetViewFindersInitialPlaceContextPane( EFalse );
+            }
+        HandleCommandL( EVtUiCmdSwapImagesPlaces );
+        }
+    else
+        {
+        if ( aUpdateState )
+            {
+            iUiStates->SetViewFindersInitialPlaceContextPane( ETrue );
+            }
+        }
+    __VTPRINTEXIT( "VtUi.SwitchViewFinderToContextPaneL" )
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiAppUi::RestoreViewFinderL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::RestoreViewFinderL()
+    {
+    __VTPRINTENTER( "VtUi.RestoreViewFinderL" )
+    if( IsViewFinderInContextPane() )
+        {
+        if( !iUiStates->IsViewFindersInitialPlaceContextPane() )
+            {
+            SwitchViewFinderToMainPaneL( EFalse );
+            }
+        }
+    else
+        {
+        if( iUiStates->IsViewFindersInitialPlaceContextPane() )
+            {
+            SwitchViewFinderToContextPaneL( EFalse );
+            }
+        }
+    __VTPRINTEXIT( "VtUi.RestoreViewFinderL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::DialogDismissedL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::DialogDismissedL( TInt )
+    {
+    __VTPRINTENTER( "VtUi.DialogDismissedL" )
+    MVtUiFeature* tb =
+        iFeatureManager->GetFeatureById( EVtUiFeatureIdToolbar );
+    if ( tb )
+        {
+        if ( !iTbPeriodic )
+            {
+            iTbPeriodic = CPeriodic::NewL( CActive::EPriorityStandard );
+            }
+        iTbPeriodic->Cancel();
+        // try to strat toolbar feature immediately
+        iTbPeriodic->Start( 0, KPeriodTime, TCallBack( DoTryToStartTbL, this ) );
+        }
+     __VTPRINTEXIT( "VtUi.DialogDismissedL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::UpdateContextPaneIconL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::UpdateContextPaneIconL()
+    {
+    CEikStatusPane* statusPane = StatusPane();
+
+    if ( statusPane )
+        {
+        if ( statusPane->PaneCapabilities(
+            TUid::Uid( EEikStatusPaneUidContext ) ).IsPresent() )
+            {
+            CAknContextPane* contextPane = NULL;
+            TRAPD ( err, contextPane = static_cast<CAknContextPane*> (
+                statusPane->ControlL( TUid::Uid( EEikStatusPaneUidContext ) ) ) );
+            if ( err != KErrNone || ! contextPane )
+                {
+                return;
+                }
+
+            // Set a new context pane icon
+            CFbsBitmap* newBitmap = new(ELeave) CFbsBitmap;
+            CleanupStack::PushL( newBitmap );
+            User::LeaveIfError( newBitmap->Create( TSize( 1, 1 ), EGray2 ) );
+
+            CFbsBitmap* newMask = new(ELeave) CFbsBitmap;
+            CleanupStack::PushL( newMask );
+            User::LeaveIfError( newMask->Create( TSize( 1, 1 ), EGray2 ) );
+
+            // create an off-screen device and context
+            CFbsBitmapDevice* bitmapDevice = CFbsBitmapDevice::NewL( newMask );
+            CleanupStack::PushL( bitmapDevice );
+            CFbsBitGc* maskGc = NULL;
+            User::LeaveIfError( bitmapDevice->CreateContext( maskGc ) );
+            User::LeaveIfNull( maskGc );
+            CleanupStack::PushL( maskGc );
+            maskGc->SetPenStyle( CGraphicsContext::ENullPen );
+            maskGc->SetBrushColor( TRgb::Gray2( 1 ) ); // transparency
+            maskGc->SetBrushStyle( CGraphicsContext::ESolidBrush );
+            maskGc->Clear();
+            CleanupStack::PopAndDestroy( 2 ); // maskGc, bitmapDevice
+
+            // newBitmap, new Mask ownership transfer
+            contextPane->SetPicture( newBitmap, newMask );
+            CleanupStack::Pop( 2 ); // newBitmap, newMask
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::SetIncallBubbleAllowedInUsualL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::SetIncallBubbleAllowedInUsualL( TBool aAllowed )
+    {
+    __VTPRINT2( DEBUG_GEN, "Ui.SetIncallBubbleAllowedInUsualL: %d", aAllowed )
+
+    // If call is being disconnected, we do not want to show in-call bubble
+    // anymore but dismiss it.
+    if( iUiStates->ExecState() == TVtUiStates::EExecStateResetting ||
+        iUiStates->ExecState() == TVtUiStates:: EExecStateFinalized )
+        {
+        __VTPRINT2( DEBUG_GEN, "Ui.SetIncallBubbleAllowedInUsualL forced to false: %d", aAllowed )
+        aAllowed = EFalse;
+        }
+
+    if ( iIncallBubble )
+        {
+        iIncallBubble->SetIncallBubbleAllowedInUsualL( aAllowed );
+        }
+    __VTPRINT( DEBUG_GEN, "Ui.SetIncallBubbleAllowedInUsualL>" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ShowProgressDialogL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::ShowProgressDialogL( TInt aResourceId,
+    MProgressDialogCallback* aCallback )
+    {
+    __VTPRINTENTER( "VtUi.ShowProgressDialogL" )
+    if( iProgressDlg )
+        {
+        User::Leave( KErrNotReady );
+        }
+    iProgressDlg = new ( ELeave ) CAknProgressDialog(
+        reinterpret_cast<  CEikDialog** >( &iProgressDlg ), ETrue );
+    iProgressDlg->SetCallback( aCallback );
+    iProgressDlg->ExecuteLD( aResourceId );
+    __VTPRINTEXIT( "VtUi.ShowProgressDialogL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::HideProgressDialogL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::HideProgressDialogL()
+    {
+    __VTPRINTENTER( "VtUi.HideProgressDialogL" )
+    if( iProgressDlg )
+        {
+        iProgressDlg->ProcessFinishedL();
+        }
+    __VTPRINTEXIT( "VtUi.HideProgressDialogL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::AsyncViewFinderToMainPaneAndShare
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiAppUi::AsyncViewFinderToMainPaneAndShare( TAny* aPtr )
+    {
+    __VTPRINTENTER( "VtUi.AsyncViewFinderToMainPaneAndShare" )
+    CVtUiAppUi* self = reinterpret_cast< CVtUiAppUi* >( aPtr );
+
+    TRAPD( result, { self->SwitchViewFinderToMainPaneL();
+                                     self->CmdShareImageL();} );
+    __VTPRINTEXITR( "VtUi.AsyncViewFinderToMainPaneAndShare %d", result )
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::AsyncShare
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiAppUi::AsyncShare( TAny* aPtr )
+    {
+    __VTPRINTENTER( "VtUi.AsyncShare" )
+    CVtUiAppUi* self = reinterpret_cast< CVtUiAppUi* >( aPtr );
+    TRAPD( result, self->CmdShareImageL() );
+    __VTPRINTEXITR( "VtUi.AsyncShare %d", result )
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::AsyncShowErrorAndRestartShare
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiAppUi::AsyncShowErrorAndRestartShare( TAny* aPtr )
+    {
+    __VTPRINTENTER( "VtUi.AsyncShowErrorAndRestartShare" )
+    CVtUiAppUi* self = reinterpret_cast< CVtUiAppUi* >( aPtr );
+    TRAPD( result, { self->ShowUnableToOpenNoteL();
+                    self->HandleCommandL( EVtUiCmdShareObjectImage ); } );
+    __VTPRINTEXITR( "VtUi.AsyncShowErrorAndRestartShare %d", result )
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::GetCameraOrientations
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::GetCameraOrientations()
+    {
+    __VTPRINTENTER( "VtUi.GetCameraOrientations" )
+    MVtEngMedia& media = Model().Media();
+     media.GetCameraOrientations( iPrimaryCameraOrientation,
+          iSecondaryCameraOrientation );
+    __VTPRINTEXIT( "VtUi.GetCameraOrientations" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::SetInitialCameraOrientationL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::SetInitialCameraOrientationL()
+    {
+    __VTPRINTENTER( "VtUi.SetInitialCameraOrientationL" )
+    MVtEngMedia::TCameraId cameraId;
+    MVtEngMedia& media( Model().Media() );
+    media.GetCurrentCameraId( cameraId );
+    MVtEngMedia::TCameraOrientation targetOrientation(
+        cameraId == MVtEngMedia::EPrimaryCamera ?
+            iPrimaryCameraOrientation :
+            ( cameraId == MVtEngMedia::ESecondaryCamera ?
+                iSecondaryCameraOrientation :
+                iCurrentCameraOrientation ) );
+    if ( iCurrentCameraOrientation != targetOrientation )
+        {
+        __VTPRINT3( DEBUG_GEN,
+            "VtUi.SetInitialCameraOrientationL Old=%d New=%d",
+                iCurrentCameraOrientation,
+                targetOrientation )
+        SetOrientationL( engToAppOrientation[ targetOrientation ] );
+        iCurrentCameraOrientation = targetOrientation;
+        }
+    __VTPRINTEXIT( "VtUi.SetInitialCameraOrientationL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::SetCameraOrientationL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::SetCameraOrientationL()
+    {
+    __VTPRINTENTER( "VtUi.SetCameraOrientationL" )
+    MVtEngMedia::TCameraOrientation newOrientation = iCurrentCameraOrientation;
+    MVtEngMedia::TCameraId cameraId;
+    MVtEngMedia& media = Model().Media();
+    if ( media.GetCurrentCameraId( cameraId ) == KErrNone )
+        {
+        switch ( cameraId )
+            {
+            case MVtEngMedia::EPrimaryCamera:
+                __VTPRINT( DEBUG_GEN, "VtUi.SetCameraOrient.Primary")
+                if( iCurrentCameraOrientation != iPrimaryCameraOrientation )
+                    {
+                    newOrientation = iPrimaryCameraOrientation;
+                    }
+                break;
+
+            case MVtEngMedia::ESecondaryCamera:
+                __VTPRINT( DEBUG_GEN, "VtUi.SetCameraOrient.Secondary")
+                if ( iCurrentCameraOrientation != iSecondaryCameraOrientation )
+                    {
+                    newOrientation = iSecondaryCameraOrientation;
+                    }
+                    break;
+
+            default:
+                break;
+            }
+        }
+
+    __VTPRINT2( DEBUG_GEN, "VtUi.SetCameraOrient.Cur=%d",
+        iCurrentCameraOrientation )
+    __VTPRINT2( DEBUG_GEN, "VtUi.SetCameraOrient.New=%d",
+        newOrientation )
+
+    if ( iCurrentCameraOrientation != newOrientation )
+            {
+            // map camera orientation to appui layout orientation
+            TAppUiOrientation newAppUiOrientation;
+            if ( newOrientation == MVtEngMedia::EOrientationLandscape )
+                {
+                __VTPRINT( DEBUG_GEN, "VtUi.SetCameraOrient=LS")
+                newAppUiOrientation = EAppUiOrientationLandscape;
+                }
+            else if ( newOrientation == MVtEngMedia::EOrientationPortrait )
+                {
+                __VTPRINT( DEBUG_GEN, "VtUi.SetCameraOrient=PR")
+                newAppUiOrientation = EAppUiOrientationPortrait;
+                }
+            else
+                {
+                __VTPRINT( DEBUG_GEN, "VtUi.SetCameraOrient=OL")
+                newAppUiOrientation = EAppUiOrientationUnspecified;
+                }
+            SetOrientationL( newAppUiOrientation );
+            }
+    __VTPRINTEXIT( "VtUi.SetCameraOrientationL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::RefreshStatesL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::RefreshStatesL()
+    {
+    __VTPRINTENTER( "VtUi.RefreshStatesL" )
+    // If transaction (set of commands) is pending refresh in delayed until
+    // all of them are processed.
+    if ( !iUiStates->IsCommandActivating() )
+        {
+        iUiStates->Update();
+        if ( iUiStates->IsThisApplicationForeground() )
+            {
+            iCommandManager->RefreshL();
+            }
+        }
+    __VTPRINTEXIT( "VtUi.RefreshStatesL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CmdAdjustVideoL
+// -----------------------------------------------------------------------------
+//
+ void CVtUiAppUi::CmdAdjustVideoL( TInt aCommand )
+    {
+        __VTPRINTENTER( "VtUi.CmdAdjustVideoL" )
+    TInt featureId( -1 );
+    switch ( aCommand )
+        {
+    case EVtUiCmdAdjustVideoVideoQuality:
+        featureId = EVtUiFeatureIdVideoQuality;
+        break;
+    case EVtUiCmdAdjustVideoWhiteBalance:
+        featureId = EVtUiFeatureIdWhiteBalance;
+        break;
+    case EVtUiCmdAdjustVideoBrightness:
+        featureId = EVtUiFeatureIdBrightness;
+        break;
+    case EVtUiCmdAdjustVideoContrast:
+        featureId = EVtUiFeatureIdContrast;
+        break;
+    case EVtUiCmdAdjustVideoColourTone:
+        featureId = EVtUiFeatureIdColourTone;
+        break;
+    default:
+        break;
+        }
+   MVtUiFeature* vb = iFeatureManager->GetFeatureById( featureId );
+   if ( vb )
+      {
+      __VTPRINT( DEBUG_GEN, "VtUi.CmdAdjustVideoL.StartL" );
+      vb->StartL();
+      }
+    __VTPRINTEXIT( "VtUi.CmdAdjustVideoL" )
+   }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::AppUiInitDoneDoPostInitL
+// -----------------------------------------------------------------------------
+//
+ void CVtUiAppUi::AppUiInitDoneDoPostInitL()
+    {
+    MVtUiFeature* tb = iFeatureManager->GetFeatureById( EVtUiFeatureIdToolbar );
+    if ( tb )
+        {
+        if ( !iTbPeriodic )
+            {
+            iTbPeriodic = CPeriodic::NewL( CActive::EPriorityStandard );
+            }
+        iTbPeriodic->Cancel();
+        // try to strat toolbar feature immediately
+        iTbPeriodic->Start( 0, KPeriodTime, TCallBack( DoTryToStartTbL, this ) );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::ProcessWsEventIfZoomModeIsActiveL
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiAppUi::ProcessWsEventIfZoomModeIsActiveL( const TWsEvent& aEvent )
+    {
+    __VTPRINTENTER( "VtUi.ProWsEvtIfZoomActivedL" )
+    const TInt type = aEvent.Type();
+    switch( type )
+        {
+        case EEventKey:
+        case EEventKeyUp:
+        case EEventKeyDown:
+            {
+            const TKeyEvent* keyEvent = aEvent.Key();
+
+
+            // Up and down arrow key events does the zooming,
+            // and should be forwarded to appui's key event handler.
+            // Also ETrue must be returned, so that other controls
+            // would not get these key events.
+            TEventCode eventCode = (TEventCode)aEvent.Type();
+            if ( keyEvent->iScanCode == EStdKeyUpArrow ||
+                keyEvent->iScanCode == EStdKeyDownArrow ||
+                keyEvent->iCode == EKeyZoomIn ||
+                keyEvent->iCode == EKeyZoomOut )
+                {
+                HandleKeyEventL( *keyEvent, eventCode );
+                __VTPRINTEXIT( "VtUi.ProWsEvtIfZoomActivedL" )
+                return ETrue;
+                }
+            __VTPRINT( DEBUG_GEN, "VtUi.HandleWsEventL zoom mode set" );
+            // If user selects zoom mode from options menu EEventKeyUp
+            // will be generated after that. Therefore this event must be
+            // ignored. Also EEventKeyDown are ignored. This means that
+            // only EEventKey events can dismiss the zoom mode.
+            if ( type != EEventKeyUp && type != EEventKeyDown )
+                {
+                 // If zoom mode is on only zoom mode button is available in
+                 // toolbar. Pressing the zoom mode button in toolbar
+                 // should not dismiss the zoom mode, that is why this events
+                 // are ignored. If toolbar is not available and
+                 // also EKeyDevice3 (selection key) event should dismiss
+                 // the zoom mode.
+                 if ( keyEvent->iCode != EKeyDevice3 ||
+                     ( keyEvent->iCode == EKeyDevice3 &&
+                     !iUiStates->IsToolbarAvailable() ) )
+                    {
+                    __VTPRINT( DEBUG_GEN, "VtUi.ProWsEvtIfZoomActivedL.EKeyDevice3" );
+                    SetZoomModeL( EFalse );
+                    }
+                }
+            }
+            break;
+
+        case EEventPointer:
+            __VTPRINT( DEBUG_GEN, "VtUi.ProWsEvtIfZoomActivedL.EEventPointer" );
+            break;
+
+        case KAknHardwareLayoutSwitch:
+            // Window server event used when layout changes
+            __VTPRINT( DEBUG_GEN, "VtUi.ProcessWsEventIfZoomModeIsActiveL.LayoutSwitch" );
+            break;
+
+        case EEventScreenDeviceChanged:
+            // The screen size mode has changed, for instance when  the cover on a phone 
+            // that supports screen flipping is opened or closed. 
+            __VTPRINT( DEBUG_GEN, "VtUi.ProcessWsEventIfZoomModeIsActiveL.ScreenChanged" );
+            break;
+
+        case EVtUiWsEventNumberSourceDeactivate:
+            // Number source deactivated
+            __VTPRINT( DEBUG_GEN, "VtUi.ProWsEvtIfZoomActivedL.NumberDeactivate" );
+            break;
+
+        default:
+            __VTPRINT( DEBUG_GEN, "VtUi.ProWsEvtIfZoomActivedL.default" );
+            // EVtUiWsEventNumberSourceActivate could be generated through number buttons
+            // and execution runs to default statement
+            SetZoomModeL( EFalse );
+            break;
+            }
+    __VTPRINTEXIT( "VtUi.ProWsEvtIfZoomActivedL2" )
+    return EFalse;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::StopSliders()
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::StopSliders()
+    {
+    __VTPRINTENTER( "VtUi.StopSliders" )
+    if( iUiStates->IsBrightnessModeOn() )
+        {
+        // if brightness feature is active, stop that
+        MVtUiFeature* br = iFeatureManager->GetFeatureById( EVtUiFeatureIdBrightness );
+        if ( br )
+            {
+            if ( br->State() ==  MVtUiFeature::EActive )
+                {
+                __VTPRINT( DEBUG_GEN, "VtUi.StopSliders br->STOP" )
+                br->Stop();
+                }
+            }
+        }
+    // if contrast feature is active, stop that
+    if( iUiStates->IsContrastModeOn() )
+        {
+        // if contrast feature is active, stop that
+        MVtUiFeature* cr = iFeatureManager->GetFeatureById( EVtUiFeatureIdContrast );
+        if ( cr )
+            {
+            if ( cr->State() ==  MVtUiFeature::EActive )
+                {
+                __VTPRINT( DEBUG_GEN, "VtUi.StopSliders cr->STOP" )
+                cr->Stop();
+                }
+            }
+        }
+    // if volume feature is active, stop that
+    if( iUiStates->IsVolumeModeOn() )
+        {
+        // if volume feature is active, stop that
+        MVtUiFeature* vl = iFeatureManager->GetFeatureById( EVtUiFeatureIdVolume );
+        if ( vl )
+            {
+            if ( vl->State() ==  MVtUiFeature::EActive )
+                {
+                __VTPRINT( DEBUG_GEN, "VtUi.StopSliders vl->STOP" )
+                vl->Stop();
+                }
+            }
+        }
+    // if zoom feature is active, stop that
+    if( iUiStates->IsZoomModeOn() )
+        {
+        // if zoom feature is active, stop that
+        MVtUiFeature* zm = iFeatureManager->GetFeatureById( EVtUiFeatureIdZoom );
+        if ( zm )
+            {
+            if ( zm->State() ==  MVtUiFeature::EActive )
+                {
+                __VTPRINT( DEBUG_GEN, "VtUi.StopSliders zm->STOP" )
+                zm->Stop();
+                }
+            }
+        }   
+    __VTPRINTEXIT( "VtUi.StopSliders" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CanSwapImagePlaces()
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiAppUi::CanSwapImagePlaces()
+    {
+    __VTPRINTENTER( "VtUi.CanSwapImagePlaces" )
+    TTime now; 
+    now.HomeTime();
+    // User can swap image places if the frequency is lower than maximum frequency. 
+    if ( now.MicroSecondsFrom( iLastSwapTime ).Int64() >= KVtUiMaxSwapImagesFreq ) 
+        {
+        __VTPRINT( DEBUG_GEN, "VtUi.Swap can swap image" )
+        iLastSwapTime = now;
+        __VTPRINTEXIT( "VtUi.CanSwapImagePlaces" )
+        return ETrue;
+        }
+    else
+        {
+        __VTPRINT( DEBUG_GEN, "VtUi.Swap can not swap image" )
+        __VTPRINTEXIT( "VtUi.CanSwapImagePlaces" )
+        return EFalse;
+        }
+    }
+
+// Implementation of CVtUiAppUi::CInstance
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CInstance::CInstance
+// -----------------------------------------------------------------------------
+//
+CVtUiAppUi::CInstance::CInstance( CVtUiAppUi& aAppUi )
+    : iAppUi( aAppUi )
+    {
+    }
+
+void CVtUiAppUi::CInstance::CreateRemoteVideoControl()
+    {    
+    iRemoteVideoControl = CVtUiRemoteVideoControl::NewL( iAppUi );
+    iRemoteVideoControl->MakeVisible(EFalse);
+    iMainControl->SetRemoteVideoControl( iRemoteVideoControl );
+    iMainControl->LayoutRemoteVideo();
+    
+    iAppUi.AddToStackL( iRemoteVideoControl );
+    
+    iRemoteVideoControlInStack = ETrue;
+    
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CInstance::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CInstance::ConstructL()
+    {
+    iBitmapManager = new ( ELeave ) CVtUiBitmapManager;
+
+    TRect parent;
+    TAknWindowLineLayout control;
+
+    VtUiLayout::GetApplicationParentRect( parent );
+    iMainControl = CVtUiMainControl::NewL( *iBitmapManager,
+            iAppUi,
+            *iAppUi.iUiStates  );
+
+    VtUiLayout::GetMainPaneLayout( control );
+    AknLayoutUtils::LayoutControl( iMainControl, parent, control );
+
+    iAppUi.AddToStackL( iMainControl );
+    iMainControlInStack = ETrue;
+
+    TAknLayoutRect layout;
+    layout.LayoutRect( parent, control );
+    iNumberEntryActivation =
+        new ( ELeave ) CVtUiNumberEntryActivationControl( iAppUi );
+    iNumberEntryActivation->ConstructL( layout.Rect() );
+
+    iContextControl = CVtUiContextControl::NewL(
+            *iBitmapManager,
+            iAppUi,
+            *iAppUi.iUiStates );
+
+    VtUiLayout::GetFirstWindowBackgroundLayout(
+        control );
+    AknLayoutUtils::LayoutControl( iContextControl, parent, control );
+    iAppUi.AddToStackL( iContextControl );
+    iContextControlInStack = ETrue;
+
+    iEndCallButtonPane = CVtUiEndCallButtonPane::NewL( parent );
+        
+    VtUiLayout::GetButtonPaneLayout( control );
+    
+    AknLayoutUtils::LayoutControl( iEndCallButtonPane, parent, control );
+    iAppUi.AddToStackL( iEndCallButtonPane );
+    iButtonPaneInStack = ETrue;
+    
+    iNaviPane =
+        CVtUiNaviPane::NewL(
+            *( iAppUi.NaviPaneL() ),
+            iAppUi );
+
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CInstance::LayoutChanged
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CInstance::LayoutChanged()
+    {
+    // Layout controls.
+    TRect parent;
+    TAknWindowLineLayout control;
+    VtUiLayout::GetApplicationParentRect( parent );
+    VtUiLayout::GetMainPaneLayout( control );
+    AknLayoutUtils::LayoutControl( iMainControl, parent, control );
+    iMainControl->DrawNow();
+    if(iMainControl)
+        {
+        iMainControl->LayoutRemoteVideo();
+        }
+    
+    AknLayoutUtils::LayoutControl( iNumberEntryActivation, parent, control );
+    VtUiLayout::GetFirstWindowBackgroundLayout( control );
+    AknLayoutUtils::LayoutControl( iContextControl, parent, control );
+    iContextControl->DrawNow();
+    if(iContextControl)
+        iContextControl->LayoutRemoteVideo();
+    VtUiLayout::GetButtonPaneLayout( control );
+    AknLayoutUtils::LayoutControl( iEndCallButtonPane, parent, control );
+    iEndCallButtonPane->DrawNow();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CInstance::VolumeKeyPressedL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CInstance::VolumeKeyPressedL()
+    {
+    __VTPRINTENTER( "CVtUiAppUi.VolumeKeyPressedL" )
+    // if the application is in foreground show volume sliders
+    if ( iAppUi.IsForeground() )
+        {
+        // If application is shutting down, no need to show volume popup
+        if ( iAppUi.iState == NULL ||
+             iAppUi.iState ==
+                TVtUiStateResetting::InstanceL( iAppUi, *iAppUi.iUiStates ) )
+            {
+            return;
+            }
+
+        CVtUiVolume* volume = static_cast< CVtUiVolume* >(
+            iAppUi.iFeatureManager->GetFeatureById( EVtUiFeatureIdVolume ) );
+        if ( volume )
+            {
+            // If the capture mode is on we should
+            // end the capture mode
+            if( iAppUi.iUiStates->IsCaptureModeOn() )
+                {
+                __VTPRINT( DEBUG_GEN, "CVtUiAppUi.VolumeKeyPressedL cancel capture" )
+                iAppUi.CmdCancelCaptureL();
+                }
+            else if ( iAppUi.iUiStates->IsZoomModeOn() )
+                {
+                // If zoom feature is active, stop that
+                MVtUiFeature* zm = iAppUi.iFeatureManager->GetFeatureById( EVtUiFeatureIdZoom );
+                if ( zm )
+                    {
+                    if ( zm->State() ==  MVtUiFeature::EActive )
+                        {
+                        __VTPRINT( DEBUG_GEN, "CVtUiAppUi.VolumeKeyPressedL zm->STOP" )
+                        zm->Stop();
+                        }
+                    }
+                }
+            
+            iAppUi.RetryToStartTbL();
+            volume->StartL();
+            
+            // Toolbar needs to be refreshed if zoom, contrat and brightness were dismissed
+            CVtUiToolbarBase* tb = static_cast< CVtUiToolbarBase* >(
+            iAppUi.iFeatureManager->GetFeatureById( EVtUiFeatureIdToolbar ) );
+            if ( tb )
+                {
+                tb->RefreshL();
+                }
+            }
+        }
+    __VTPRINTEXIT( "CVtUiAppUi.VolumeKeyPressedL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CInstance::NewL
+// -----------------------------------------------------------------------------
+//
+CVtUiAppUi::CInstance* CVtUiAppUi::CInstance::NewL( CVtUiAppUi& aAppUi )
+    {
+    CInstance* self = new ( ELeave ) CInstance( aAppUi );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CInstance::~CInstance
+// -----------------------------------------------------------------------------
+//
+CVtUiAppUi::CInstance::~CInstance()
+    {
+    if ( iMainControl && iMainControlInStack )
+        {
+        iAppUi.RemoveFromStack( iMainControl );
+        }
+    if ( iContextControl && iContextControlInStack )
+        {
+        iAppUi.RemoveFromStack( iContextControl );
+        }
+    if(iRemoteVideoControl &&iRemoteVideoControlInStack)
+        {
+        iAppUi.RemoveFromStack( iRemoteVideoControl );
+        }
+    if( iEndCallButtonPane && iButtonPaneInStack )
+        {
+        iAppUi.RemoveFromStack( iEndCallButtonPane );
+        }
+    delete iMainControl;
+    delete iContextControl;
+    delete iRemoteVideoControl;
+    delete iNumberEntryActivation;
+    delete iNaviPane;
+    delete iBitmapManager;
+    delete iEndCallButtonPane;
+    }
+
+// Implementation of CVtUiAppUi::CEventObserver
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::CEventObserver
+// -----------------------------------------------------------------------------
+//
+CVtUiAppUi::CEventObserver::CEventObserver( CVtUiAppUi& aAppUi )
+    : iAppUi( aAppUi ),
+      iCommandObservers( KVtUiCommandObserverArrayGranularity )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CEventObserver::ConstructL()
+    {
+    iModel = CVtEngModel::NewL( *this, *this );
+
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::NewL
+// -----------------------------------------------------------------------------
+//
+CVtUiAppUi::CEventObserver* CVtUiAppUi::CEventObserver::NewL(
+        CVtUiAppUi& aAppUi )
+    {
+    CEventObserver* self = new ( ELeave ) CEventObserver( aAppUi );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::~CEventObserver
+// -----------------------------------------------------------------------------
+//
+CVtUiAppUi::CEventObserver::~CEventObserver()
+    {
+    iCommandObservers.Close();
+
+    delete iModel;
+    delete iBeat;
+
+    delete iRemConInterfaceSelector;
+    iRemConCoreApiTarget = NULL; // not owned.
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::Model
+// -----------------------------------------------------------------------------
+//
+inline CVtEngModel& CVtUiAppUi::CEventObserver::Model()
+    {
+    return *iModel;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::CreateRemConSessionL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CEventObserver::CreateRemConSessionL()
+    {
+    __VTPRINTENTER( "VtUiComms.CreateRemCon" )
+    // If one of the iRemCon* pointers equals to NULL, then all of them are
+    // NULL.
+    if ( !iRemConInterfaceSelector )
+        {
+        CRemConInterfaceSelector* interfaceSelector =
+            CRemConInterfaceSelector::NewL();
+        CleanupStack::PushL( interfaceSelector );
+
+        CRemConCoreApiTarget* coreApiTarget =
+            CRemConCoreApiTarget::NewL( *interfaceSelector, *this );
+        // The coreApiTarget instance is owned by interfaceSelector instance.
+        // This instance must implement MRemConCoreApiTargetObserver interface.
+        __VTPRINT( DEBUG_GEN, "VtUiComms.CreateRemCon, done creating coreApiTarget" )
+        CleanupStack::PushL( coreApiTarget );
+        interfaceSelector->OpenTargetL();
+
+        iRemConVolumeRepeatTimer = CPeriodic::NewL( CActive::EPriorityHigh );
+
+        CleanupStack::Pop( coreApiTarget );
+        CleanupStack::Pop( interfaceSelector );
+
+        iRemConInterfaceSelector = interfaceSelector;
+        iRemConCoreApiTarget = coreApiTarget;
+        }
+    __VTPRINTEXIT( "VtUiComms.CreateRemCon" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::DeleteRemConSession
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CEventObserver::DeleteRemConSession()
+    {
+    delete iRemConVolumeRepeatTimer;
+    iRemConVolumeRepeatTimer = NULL;
+
+    delete iRemConInterfaceSelector;
+    iRemConInterfaceSelector = NULL;
+
+    iRemConCoreApiTarget = NULL; // not owned.
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::CommandSupported
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiAppUi::CEventObserver::CommandSupported(
+        const TInt aCommandId ) const
+    {
+    const TInt caps = iModel->CommandHandler().GetCommandCaps( aCommandId );
+    return
+        ( caps >= KErrNone ) &&
+        ( caps & MVtEngCommandHandler::EAttribSupported );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::CommandSupportedAndSynchronous
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiAppUi::CEventObserver::CommandSupportedAndSynchronous(
+        const TInt aCommandId ) const
+    {
+    const TInt caps = iModel->CommandHandler().GetCommandCaps( aCommandId );
+    return
+        ( caps >= KErrNone ) &&
+        ( caps & MVtEngCommandHandler::EAttribSupported ) &&
+        ( ~caps & MVtEngCommandHandler::EAttribAsync );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::AddObserverL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CEventObserver::AddObserverL(
+        MVtEngCommandObserver& aObserver )
+    {
+    User::LeaveIfError(
+        iCommandObservers.Append( &aObserver ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::RemoveObserver
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CEventObserver::RemoveObserver(
+        MVtEngCommandObserver& aObserver )
+    {
+    const TInt pos = iCommandObservers.Find( &aObserver );
+    if ( pos != KErrNotFound )
+        {
+        if ( !iInCommandPerformed )
+            {
+            iCommandObservers.Remove( pos );
+            }
+        else
+            {
+            iCommandObservers[ pos ] = NULL;
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::StartBeatL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CEventObserver::StartBeatL()
+    {
+    if ( !iBeat )
+        {
+        iBeat = CHeartbeat::NewL( CActive::EPriorityStandard );
+        }
+
+    if ( !iBeat->IsActive() )
+        {
+        iBeat->Start( ETwelveOClock, this );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::StopBeat
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CEventObserver::StopBeat()
+    {
+    delete iBeat;
+    iBeat = NULL;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::StopVolumeRepeatTimer
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CEventObserver::StopVolumeRepeatTimer()
+    {
+    iRemConVolumeRepeatTimer->Cancel();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::HandleVtEventL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CEventObserver::HandleVtEventL(
+        TInt aEvent )
+    {
+    __VTPRINTENTER( "VtUiComms.HandleVtEventL" )
+    __VTPRINT2( DEBUG_GEN, "VtUi.HandleEvt=%d", aEvent )
+
+    /** Allow application state to handle event first. It may also deny further
+      * handling by indicating the event was handled */
+    if ( iAppUi.iState &&
+        iAppUi.iState->HandleVtEventL( aEvent )
+            == TVtUiAppStateBase::EEventHandled )
+        {
+        __VTPRINTEXITR( "VtUiComms.HandleVtEventL %d", 0 )
+        return;
+        }
+
+    TInt callBits = EVtUiRefreshStates;
+
+    // New camera orientation
+    switch( aEvent )
+        {
+        case KVtEngSourceChanged:
+            callBits |= EVtUiSetOrientation;
+            break;
+        default:
+            break;
+        }
+        
+    switch( aEvent )
+        {
+        case KVtEngSourceChanged:
+            callBits |= EVtUiStopWBOrColortone;
+            break;
+        default:
+            break;
+        }
+    
+    switch( aEvent )
+        {
+        case KVtEngSessionWaitingCallActive:
+        case KVtEngSessionWaitingCallInactive:
+            iAppUi.HandleWaitingStateChange(
+                aEvent == KVtEngSessionWaitingCallActive );
+            break;
+        default:
+            break;
+        }
+    switch( aEvent )
+        {
+        case KVtEngShareImageInitializeBegin:
+            callBits |= EVtUiShowImageInitializingProgress;
+            break;
+
+        case KVtEngShareImageInitializeEnd:
+            callBits |= EVtUiHideImageInitializingProgress;
+            break;
+
+        case KVtEngShareImageDecodingError:
+            callBits |= EVtUiShowDecodingError;
+            break;
+
+        default:
+            break;
+        }
+
+    // Handle rendering problems.
+    switch ( aEvent )
+        {
+        case KVtEngRemoteRenderingProblem:
+            callBits |= EVtUiHandleVideoFrameRemoteProblem;
+            break;
+
+        case KVtEngViewFinderStopped:
+        case KVtEngLocalRenderingProblem:
+            callBits |= EVtUiHandleVideoFrameLocalProblem;
+            break;
+
+        default:
+            break;
+        }
+
+    // Refresh navipane.
+    switch ( aEvent )
+        {
+        case KVtEngSourceChanged:
+        case KVtEngCameraChanged:
+        case KVtEngSessionStateChanged:
+        case KVtEngDurationSettingChanged:
+        case KVtEngAudioOutputVolumeChanged:
+        case KVtEngAudioRoutingChanged:
+        case KVtEngAudioMuted:
+        case KVtEngAudioUnmuted:
+            callBits |= EVtUiRefreshNaviPane;
+            break;
+
+        default:
+            break;
+        }
+
+    // Refresh softkeys.
+    switch ( aEvent )
+        {
+        case KVtEngSourceChanged:
+        case KVtEngSourceCapsChanged:
+        case KVtEngSessionAnswerPossible:
+        case KVtEngSessionStateChanged:
+        case KVtEngAudioRoutingChanged:
+        case KVtEngAudioRoutingAvailabilityChanged:
+        case KVtEngAudioMuted:
+        case KVtEngAudioUnmuted:
+        case KVtEngLCHProviderSwitchDone:
+            callBits |= EVtUiRefreshSoftkeys;
+            break;
+
+        default:
+            break;
+        }
+
+    // Refresh blind status
+    switch ( aEvent )
+        {
+        case KVtEngSourceChanged:
+        case KVtEngRemoteVideoPaused:
+        case KVtEngRemoteVideoResumed:
+        case KVtEngRemoteVideoStarted:
+        case KVtEngRemoteVideoStopped:
+        case KVtEngLCHProviderSwitchDone:
+            callBits |= EVtUiRefreshBlind;
+            break;
+
+        default:
+            break;
+        }
+
+    // Check if it's required to stop "waiting image" display.
+    switch ( aEvent )
+        {
+        case KVtEngRemoteVideoResumed:
+        case KVtEngRemoteVideoStarted:
+            callBits |= EVtUiStopWaitingImage;
+            break;
+
+        default:
+            break;
+        }
+
+    // Check if it is needed to set a new layout for remote renderer.
+    switch ( aEvent )
+        {
+        case KVtEngResolutionToQCIF:
+            callBits |= EVtUiChangeRemoteVideoLayout;
+            iAppUi.RemoteVideoIsSQCif( EFalse );
+            break;
+        case KVtEngResolutionToSQCIF:
+            callBits |= EVtUiChangeRemoteVideoLayout;
+            iAppUi.RemoteVideoIsSQCif( ETrue );
+            break;
+        default:
+            break;
+        }
+
+    switch ( aEvent )
+        {
+        case KVtEngAudioRoutingChanged:
+        case KVtEngAudioRoutingAvailabilityChanged:
+        case KVtEngMediaOutgoingVideoChannelStatusChanged:
+        case KVtEngMediaOutgoingAudioChannelStatusChanged:
+             callBits |= EVtUiMediaStateChanged;
+            break;
+
+        case KVtEngAudioVolumeMin:
+            iAppUi.KeySounds()->PlaySound( EAvkonSIDVolumeMinTone );
+            break;
+
+       case KVtEngAudioVolumeMax:
+            iAppUi.KeySounds()->PlaySound( EAvkonSIDVolumeMaxTone );
+            break;
+
+        default:
+            break;
+        }
+    
+    // Refresh Menu.
+    switch ( aEvent )
+        {
+        case KVtEngSourceChanged:
+            callBits |= EVtUiRefreshMenu;
+            callBits |= EVtUiStopBrightnessOrContrast;
+            callBits |= EVtUiRefreshZoomPopup;
+            callBits |= EVtUiEnableEndCallButton;
+            break;
+        default:
+            break;
+        }
+    switch ( aEvent )
+        {
+        case KVtEngAudioMuted:
+        case KVtEngAudioUnmuted:
+            callBits |= EVtUiRefreshMenu;
+            break;
+        default:
+            break;
+        }
+    TRAP_IGNORE ( DoExecuteL( callBits ) );
+    __VTPRINTEXITR( "VtUiComms.HandleVtEventL %d", 1 )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::HandleVTCommandPerformedL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CEventObserver::HandleVTCommandPerformedL(
+        TVtEngCommandId aCommand,
+        const TInt aError )
+    {
+    __VTPRINTENTER( "VtUiComms.HandleVTCommandPerformedL" )
+    __VTPRINT2( DEBUG_GEN, "VtUiComms.HandleVTCommandPerformedL aCommand = %d",
+            aCommand )
+    
+    if ( aCommand == KVtEngSetSource && 
+            TVtUiAppStateBase::ShutdownRequested() )
+        {
+        // We are going to quit
+        // Pending cmd needs to be set none
+        iAppUi.iPendingCmd = KVtEngCommandNone;
+        // The next layoutchange needs to be cancelled
+        iAppUi.iUiStates->SetLayoutChangeNeeded( EFalse );
+        }
+    else
+        {
+        if ( iAppUi.iState &&
+             iAppUi.iState->HandleVTCommandPerformedL( aCommand, aError ) ==
+             TVtUiAppStateBase::EEventHandled )
+            {
+            // state didn't allow further processing of command completion
+            __VTPRINTEXITR( "VtUiComms.HandleVTCommandPerformedL %d", 0 )
+            return;
+            }
+        }
+    
+    iAppUi.RefreshStatesL();
+
+    if ( aCommand == KVtEngMuteOutgoingAudio ||
+         aCommand == KVtEngUnmuteOutgoingAudio )
+         {
+         iAppUi.RefreshL();
+         }
+
+    const TInt count = iCommandObservers.Count();
+    TInt nullPosition = KErrNotFound;
+
+    iInCommandPerformed = ETrue;
+
+    // iInCommandPerformed equals ETrue while inside the following loop;
+    // Exceptions must not be raised.
+    for ( TInt index = 0; index < count; index++ )
+        {
+        MVtEngCommandObserver* obs = iCommandObservers[ index ];
+        if ( obs )
+            {
+            TRAP_IGNORE( obs->HandleVTCommandPerformedL( aCommand, aError ) );
+            }
+        else
+            {
+            // We store only one position; eventually all NULL elements of the
+            // array will be removed.
+            nullPosition = index;
+            }
+        }
+    iInCommandPerformed = EFalse;
+
+    if ( nullPosition != KErrNotFound )
+        {
+        iCommandObservers.Remove( nullPosition );
+        }
+
+    // Specific handling of some commands:
+    if ( aCommand == KVtEngResetEngine ) // Engine has been reset
+        {
+        __ASSERT_ALWAYS( !aError, VtUiPanic::Panic( EVtUiPanicResetFailed ) );
+        iAppUi.HandleEngineResetL();
+        }
+    else if ( ( aCommand == KVtEngInitializeShareImage ) ||
+              ( aCommand == KVtEngStartShareImage ) )
+        {
+        __VTPRINT3( DEBUG_GEN,
+            "VtUi.HandleVTCommandPerformedL cmd=%d err=%d", aCommand, aError );
+        
+        iAppUi.iShareImageOngoing = EFalse;
+        if( aError != KErrNone )
+            {
+            // stop toolbar feature to prevent drawing over error dialog
+           MVtUiFeature* tb = iAppUi.iFeatureManager->
+           GetFeatureById( EVtUiFeatureIdToolbar );
+            if ( tb )
+                {
+                tb->Stop();
+                }
+            iAppUi.iAsyncCallback->Set(
+                TCallBack( &AsyncShowErrorAndRestartShare, &iAppUi ) );
+            iAppUi.iAsyncCallback->CallBack();
+            }
+        else if( aCommand == KVtEngInitializeShareImage )
+            {
+            if ( iAppUi.iUiStates->IsViewFinderToMainPane()  )
+                {
+                iAppUi.iAsyncCallback->Set(
+                    TCallBack( &AsyncViewFinderToMainPaneAndShare, &iAppUi ) );
+                }
+            else
+                {
+                iAppUi.iAsyncCallback->Set(
+                    TCallBack( &AsyncShare, &iAppUi ) );
+                }
+            iAppUi.iAsyncCallback->CallBack();
+            iAppUi.iShareImageOngoing = ETrue;
+            }
+        else if( iAppUi.iUiStates->IsLayoutChangeNeeded() && 
+                aCommand == KVtEngStartShareImage && 
+                aCommand == iAppUi.iPendingCmd )
+            {
+            iAppUi.iPendingCmd = KVtEngCommandNone;
+            iAppUi.iUiStates->SetLayoutChangeNeeded( EFalse );
+            iAppUi.DoHandleLayoutChangedL();
+            }
+        }
+    else if ( iAppUi.iUiStates->IsLayoutChangeNeeded() && 
+            ( aCommand  == KVtEngSetSource ||
+            aCommand  == KVtEngPrepareCamera ||
+            aCommand  == KVtEngStopShareImage ||
+            aCommand  == KVtEngUnfreeze ||
+            aCommand  == KVtEngHandleLayoutChange ) ||
+            ( ( aCommand  == KVtEngMuteOutgoingAudio || 
+              aCommand  == KVtEngUnmuteOutgoingAudio ||
+              aCommand  == KVtEngSetAudioRouting ||
+              aCommand  == KVtEngSetAudioVolume ) && 
+              ( aCommand == iAppUi.iPendingCmd ) ) )
+        {
+        iAppUi.iPendingCmd = KVtEngCommandNone;
+        iAppUi.iUiStates->SetLayoutChangeNeeded( EFalse );
+        iAppUi.DoHandleLayoutChangedL();
+        }
+    // Handle condition that commmand setsource and layoutchange
+    //   without layoutchange needed in UI
+    else if ( aCommand == KVtEngHandleLayoutChange ||
+              aCommand == KVtEngSetSource ) 
+        {
+        iAppUi.EndCallButtonPane().SetEnabled( ETrue );
+        }
+    __VTPRINTEXITR( "VtUiComms.HandleVTCommandPerformedL %d", 1 )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::vtHandleFrameL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CEventObserver::vtHandleFrameL(
+        TFrameType aType,
+        CFbsBitmap* aBitmap )
+    {
+    static TUint32 lastTick = 0;
+    static TBool flag = EFalse;
+            
+        
+    CEikMenuBar* menuBar = (STATIC_CAST(CEikonEnv*, this->iAppUi.iCoeEnv))->AppUiFactory()->MenuBar();
+    if ( menuBar && menuBar->IsDisplayed() )
+         {
+         if ( !flag )
+            {
+            flag = ETrue;
+            lastTick = User::NTickCount();
+            }
+         else
+            {
+            TUint32 newTick = User::NTickCount();
+
+            //don't consider time wrap
+            //one frame per 200ms
+            if ( newTick - lastTick < 400 )
+                {
+                __VTPRINTEXITR( "CVtUiAppUi::CEventObserver::vtSetFrame %d", 0 )
+                return;
+                }
+            else
+                {
+                lastTick = newTick;
+                }
+            }
+         }
+    else
+        {
+        flag = EFalse;
+        }
+        
+    TBool local = EFalse;
+    switch ( aType )
+        {
+        case ELocalVideoFrame:
+            local = ETrue;
+            break;
+
+        case ERemoteVideoFrame:
+        default:
+            break;
+        }
+
+    iAppUi.HandleVideoFrameL( local, aBitmap );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::vtSetFrame
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CEventObserver::vtSetFrame(
+        TFrameType aType,
+        CFbsBitmap* aBitmap )
+    {
+    TBool local = EFalse;
+    switch ( aType )
+        {
+        case ELocalVideoFrame:
+            local = ETrue;
+            break;
+
+        case ERemoteVideoFrame:
+        default:
+            break;
+        }
+
+    iAppUi.SetVideoFrame( local, aBitmap );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::Beat
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CEventObserver::Beat()
+    {
+    iAppUi.HandleBeat();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::Synchronize
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CEventObserver::Synchronize()
+    {
+    iAppUi.HandleBeat();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::DoExecuteL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CEventObserver::DoExecuteL( TInt aBits )
+    {
+    __VTPRINT2( DEBUG_GEN, "VtUi.DoExec.bits=%d", aBits )
+
+    // Array of methods - leaving methods are allowed.
+    const TMethodL methodArray[] =
+        {
+        &CVtUiAppUi::RefreshStatesL,
+        &CVtUiAppUi::HandleVideoFrameRemoteProblemL,
+        &CVtUiAppUi::HandleVideoFrameLocalProblemL,
+        &CVtUiAppUi::RefreshNaviPaneL,
+        &CVtUiAppUi::RefreshSoftkeysL,
+        &CVtUiAppUi::RefreshBlind,
+        &CVtUiAppUi::StopWaitingImage,
+        &CVtUiAppUi::ChangeRemoteVideoLayoutL,
+        &CVtUiAppUi::ShowImageInitializeProgressL,
+        &CVtUiAppUi::HideImageInitializeProgressL,
+        &CVtUiAppUi::SetCameraOrientationL,
+        &CVtUiAppUi::MediaStateChangedL,
+        &CVtUiAppUi::ShowImageDecodingErrorNoteL,
+        &CVtUiAppUi::StopWhiteBalanceOrColortone,
+        &CVtUiAppUi::RefreshMenuL,
+        &CVtUiAppUi::StopBrightnessOrContrast,
+        &CVtUiAppUi::RefreshZoomPopupL,
+        &CVtUiAppUi::EnableEndCallButton
+        };
+    const TInt count = ( sizeof( methodArray ) / sizeof ( TMethodL ) );
+
+    // Execute selected methods.
+    while ( aBits )
+        {
+        for ( TInt index = 0; ( index < count ) && aBits; index++ )
+            {
+            const TInt mask = ( 1 << index );
+            if ( aBits & mask )
+                {
+                // Bit is set if corresponding method
+                // is wanted to be executed.
+
+                aBits &= ~mask;
+                TMethodL method = methodArray[ index ];
+                ( iAppUi.*method )(); // may leave
+                }
+            }
+        aBits = 0; // for loop executed successfully.
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::HandleVolumeChange
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CEventObserver::HandleVolumeChange(
+        TRemConCoreApiButtonAction aButtonAct )
+    {
+   __VTPRINTENTER( "VtUi.HandleVolumeChange" )
+    // Order of the events is as follows:
+    //      Click - Immediately when key is pressed down
+    //      Press - After 0.6 seconds
+    //      Release - When key is released after 0.6 seconds
+    //
+    // Thus, the following sequences are possible from single keypress:
+    //      <Click>
+    //      <Click> <0.6 sec pause> <Press> <indefinite pause> <Release>
+
+    switch ( aButtonAct )
+        {
+        case ERemConCoreApiButtonPress:
+            __VTPRINT( DEBUG_GEN, "VtUi.HandleVolumeChange.ButtonPress" )
+            TRAP_IGNORE( iAppUi.AdjustVolumeL( iRCCAOperationId ) );
+            TRAP_IGNORE( iAppUi.RefreshVolumeL() );
+            TRAP_IGNORE( iAppUi.iInstance->VolumeKeyPressedL() );
+             
+            iRemConVolumeRepeatTimer->Start(
+                KVtUiVolumeRepeatLongDelay,
+                KVtUiVolumeRepeatDelay,
+                TCallBack( DoHandleVolumeRepeat, this ) );
+          
+            break;
+
+        case ERemConCoreApiButtonRelease:
+            __VTPRINT( DEBUG_GEN, "VtUi.HandleVolumeChange.ButtonRelease" )
+            iRCCAOperationId = ENop;
+            TRAP_IGNORE( iAppUi.iInstance->VolumeKeyPressedL() );
+            break;
+
+        case ERemConCoreApiButtonClick:
+            __VTPRINT( DEBUG_GEN, "VtUi.HandleVolumeChange.ButtonClick" )
+             TRAP_IGNORE( iAppUi.AdjustVolumeL( iRCCAOperationId ) );
+             TRAP_IGNORE( iAppUi.RefreshVolumeL() );
+             TRAP_IGNORE( iAppUi.iInstance->VolumeKeyPressedL() );
+            break;
+
+        default:
+            break;
+        }
+    __VTPRINTEXIT( "VtUi.HandleVolumeChange" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::HandleRemMuteChange
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CEventObserver::HandleRemMuteChange(
+        TRemConCoreApiButtonAction aButtonAct )
+    {
+    __VTPRINTENTER( "VtUi.EventObserver.HandleRemMuteChange" )
+    TBool AudioEn (EFalse );
+    AudioEn = iAppUi.iUiStates->AudioState().IsAudio();
+    if( AudioEn )
+        iAppUi.HandleCommandL( EVtUiCmdDisableAudio );
+    else
+        iAppUi.HandleCommandL( EVtUiCmdEnableAudio );
+    __VTPRINTEXIT( "VtUi.EventObserver.HandleRemMuteChange" )
+    }
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::DoHandleVolumeRepeat
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiAppUi::CEventObserver::DoHandleVolumeRepeat( TAny* aAny )
+    {
+    __VTPRINTENTER( "VtUi.SvkRpt" )
+    CEventObserver* self = reinterpret_cast< CEventObserver* >( aAny );
+    TRAP_IGNORE( self->iAppUi.AdjustVolumeL( self->iRCCAOperationId ) );
+    TRAP_IGNORE( self->iAppUi.RefreshVolumeL() );
+    __VTPRINTEXIT( "VtUi.SvkRpt" )
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::RefreshVolumeL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::RefreshVolumeL()
+    {
+    __VTPRINTENTER( "VtUi.RefreshVolumeL" )
+    // Refresh volume
+    CVtUiVolume* volume = static_cast< CVtUiVolume* >(
+        iFeatureManager->GetFeatureById( EVtUiFeatureIdVolume ) );
+    if ( volume )
+        {
+        volume->RefreshL();
+        }
+    __VTPRINTEXIT( "VtUi.RefreshVolumeL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::AdjustVolumeL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::AdjustVolumeL( TRemConCoreApiOperationId aOperationId )
+    {
+    __VTPRINTENTER( "VtUi.AdjustVolumeL" )
+    __VTPRINT2( DEBUG_GEN,
+        "VtUi.AdjustVolumeL aOperationId = %d", aOperationId )
+    TInt command( KVtEngCommandNone );
+    switch ( aOperationId )
+        {
+    case ERemConCoreApiVolumeDown:
+        command = KVtEngDecreaseAudioVolume;
+        break;
+
+    case ERemConCoreApiVolumeUp:
+        command = KVtEngIncreaseAudioVolume;
+        break;
+
+    default:
+        break;
+        }
+
+    if ( command != KVtEngCommandNone )
+        {
+        ExecuteCmdL( command );
+        }
+    __VTPRINTEXIT( "VtUi.AdjustVolumeL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CEventObserver::MrccatoCommand
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CEventObserver::MrccatoCommand(
+        TRemConCoreApiOperationId aOperationId,
+        TRemConCoreApiButtonAction aButtonAct )
+    {
+     __VTPRINTENTER( "VtUi.MrccatoCommand" )
+    // Side volume keys will also dismiss zoom mode if zoom mode is active
+    if ( iAppUi.iUiStates->IsZoomModeOn() )
+        {
+        __VTPRINT( DEBUG_GEN, "VtUi.MrccatoCommand1" )
+        TRAP_IGNORE( iAppUi.SetZoomModeL( EFalse ));
+        }
+
+    iRemConVolumeRepeatTimer->Cancel();
+    iRCCAOperationId = aOperationId;
+    switch ( aOperationId )
+        {
+        case ERemConCoreApiVolumeUp:
+            // if volume in maximum value and volume up is pressed
+            // volume indicator must still be shown for a while if
+            //  muted or call duration is shown in navipane
+            __VTPRINT( DEBUG_GEN, "VtUi.MrccatoCommand ERemConCoreApiVolumeUp" )
+            HandleVolumeChange( aButtonAct );
+            break;
+
+        case ERemConCoreApiVolumeDown:
+            // if volume in minimun value and volume down is pressed
+            // volume indicator must still be shown for a while if
+            //  muted or call duration is shown in navipane
+            __VTPRINT( DEBUG_GEN, "VtUi.MrccatoCommand ERemConCoreApiVolumeDown" )
+            HandleVolumeChange( aButtonAct );
+            break;
+        case ERemConCoreApiMute:
+            __VTPRINT( DEBUG_GEN, "VtUi.MrccatoCommand ERemConCoreApiMute" )
+            HandleRemMuteChange( aButtonAct );
+        default:
+            // Other commands ignored.
+            break;
+        }
+ __VTPRINTEXIT( "VtUi.MrccatoCommand" )
+    }
+
+// Implementation of CVtUiAppUi::CVtUiAppUiMGVerifier
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CVtUiAppUiMGVerifier::NewLC
+// -----------------------------------------------------------------------------
+//
+CVtUiAppUi::CVtUiAppUiMGVerifier* CVtUiAppUi::CVtUiAppUiMGVerifier::NewLC(
+    CVtUiAppUi& aAppUi, CCoeEnv& aCoeEnv )
+    {
+    CVtUiAppUiMGVerifier* self = new ( ELeave )
+        CVtUiAppUiMGVerifier( aAppUi, aCoeEnv );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CVtUiAppUiMGVerifier::~CVtUiAppUiMGVerifier
+// -----------------------------------------------------------------------------
+//
+CVtUiAppUi::CVtUiAppUiMGVerifier::~CVtUiAppUiMGVerifier()
+    {
+    delete iManager;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CVtUiAppUiMGVerifier::VerifySelectionL
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiAppUi::CVtUiAppUiMGVerifier::VerifySelectionL(
+    const MDesCArray* aSelectedFiles )
+    {
+    TBool isOk( EFalse );
+    if ( aSelectedFiles->MdcaCount() > 0 )
+        {
+        TVirtualPathPtr virtualPath(
+            aSelectedFiles->MdcaPoint( 0 ), KDefaultContentObject );
+
+        // not ptotected by default
+        TInt isProtected = 0;
+
+        TInt err = iManager->GetAttribute( EIsProtected,
+            isProtected, virtualPath );
+        if ( isProtected )
+            {
+            iAppUi.ShowDRMNotAllowedNoteL();
+            }
+        if ( err == KErrNone )
+            {
+            isOk = !isProtected;
+            }
+        }
+    return isOk;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CVtUiAppUiMGVerifier::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppUi::CVtUiAppUiMGVerifier::ConstructL()
+    {
+    iManager = CManager::NewL();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppUi::CVtUiAppUiMGVerifier::CVtUiAppUiMGVerifier
+// -----------------------------------------------------------------------------
+//
+CVtUiAppUi::CVtUiAppUiMGVerifier::CVtUiAppUiMGVerifier(
+    CVtUiAppUi& aAppUi, CCoeEnv& aCoeEnv )
+    : iAppUi( aAppUi ), iCoeEnv( &aCoeEnv )
+    {
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiBitmapManager.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,662 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CVtUiBitmapManager class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "CVtUiBitmapManager.h"
+#include    "VtUiLayout.h"
+#include    "VtUiPanic.h"
+
+#include    <AknsUtils.h>
+#include    <AknIconUtils.h>
+#include    <fbs.h>
+
+// CONSTANTS
+
+// Granularity of bitmap manager array.
+const TInt KVtUiBitmapManagerGranularity = 16;
+
+// MODULE DATA STRUCTURES
+
+/**
+* CBitmapInfo instances hold information of a bitmap and its mask.
+* @since Series 60 2.8
+*/
+class CVtUiBitmapManager::CBitmapInfo 
+    : public CBase
+    {
+    public: // Constructors and destructor
+
+        /**
+        * Constructor.
+        */
+        inline CBitmapInfo(
+            TVtUiBitmapPoolId aId );
+
+        /**
+        * Destructor.
+        */
+        ~CBitmapInfo();
+
+        /**
+        * Sets bitmap identifiers.
+        * @param aBitmapId bitmap identifier.
+        * @param aBitmapMaskId bitmap mask identifier.
+        */
+        inline void SetBitmaps( 
+            TVtUiBitmapId aBitmapId, 
+            TVtUiBitmapId aBitmapMaskId );
+
+        /**
+        * Sets bitmap identifier.
+        * @param aBitmapId bitmap identifier.
+        */
+        inline void SetBitmap( 
+            TVtUiBitmapId aBitmapId );
+
+        /**
+        * Sets size.
+        * @param aSize size of the bitmaps.
+        */
+        inline void SetSize( const TSize& aSize );
+
+        /**
+        * Sets aspect ratio preservation.
+        * @param aPreserve ETrue if aspect ratio preserved.
+        */
+        inline void SetAspectRatio( TBool aPreserve );
+
+        /**
+        * Sets default color required / not required for this bitmap.
+        * By default, default color is not required.
+        * @param aRequireDefaultColor ETrue if default color is required, 
+        *        EFalse otherwise.
+        */
+        inline void SetDefaultColorRequired( 
+            TBool aRequireDefaultColor );
+
+        /**
+        * Sets default color.
+        * @param aDefaultColor default color.
+        */
+        inline void SetDefaultColor( const TRgb& aDefaultColor );
+
+        /**
+        * Returns bitmap pool identifier.
+        * @return bitmap pool identifier.
+        */
+        inline TVtUiBitmapPoolId BitmapPoolId() const;
+
+        /**
+        * Gets a bitmap and its mask.
+        * @param aBitmap bitmap.
+        * @param aBitmapMask bitmap mask.
+        */
+        inline void GetBitmap(
+            CFbsBitmap*& aBitmap,
+            CFbsBitmap*& aBitmapMask );
+
+        /**
+        * Resets bitmap information.
+        */
+        void Reset();
+
+        /**
+        * Constructs bitmap as far as possible.
+        * @param aTmpFileName temporary file name,
+        */
+        void Require( TFileName& aTmpFileName );
+
+    private:
+
+        /**
+        * Creates bitmaps using AVKON methods.
+        * @param aTmpFileName temporary file name,
+        */
+        void DoCreateBitmapsL( TFileName& aTmpFileName  );
+
+        /**
+        * Sets size to the bitmap using AVKON method.
+        */
+        void DoSetSize();
+
+    private:
+
+        // Bitmap pool identifier.
+        TVtUiBitmapPoolId iBitmapPoolId;
+
+        // Size has been defined.
+        TBool iHasSize;
+
+        // Size of the bitmap has been changed.
+        TBool iSizeChanged;
+
+        // Size of the bitmaps.
+        TSize iSize;
+        
+        // ETrue if default color required.
+        TBool iRequireDefaultColor;
+
+        // Default color has been defined.
+        TBool iHasDefaultColor;
+        
+        // Default color.
+        TRgb iDefaultColor;
+
+        // Bitmap identifier.
+        TVtUiBitmapId iBitmapId;
+
+        // Owned bitmap instance.
+        CFbsBitmap* iBitmap;
+
+        // Bitmap mask identifier.
+        TVtUiBitmapId iBitmapMaskId;
+
+        // Owned bitmap mask instance.
+        CFbsBitmap* iBitmapMask;
+
+        // ETrue if bitmaps have been created.
+        TBool iDoCreateBitmaps;
+
+        // ETrue if size has been set.
+        TBool iDoSetSize;
+
+        // ETrue if aspect ratio preservation has been updated.
+        TBool iHasAspectRatioPreserve;
+
+        // ETrue if aspect ratio should be preserved.
+        TBool iAspectRatioPreserve;
+
+    };
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::CVtUiBitmapManager
+// -----------------------------------------------------------------------------
+//
+CVtUiBitmapManager::CVtUiBitmapManager()
+    : iBitmapArray( KVtUiBitmapManagerGranularity )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::~CVtUiBitmapManager
+// -----------------------------------------------------------------------------
+//
+CVtUiBitmapManager::~CVtUiBitmapManager()
+    {
+    iBitmapArray.ResetAndDestroy();
+    iBitmapArray.Close();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::AddBitmapsL
+// -----------------------------------------------------------------------------
+//
+TVtUiBitmapPoolId CVtUiBitmapManager::AddBitmapsL(
+        TVtUiBitmapId aBitmapId, 
+        TVtUiBitmapId aBitmapMaskId,
+        TBool aExpectDefaultColor )
+    {
+    iBitmapId++;
+    CBitmapInfo* bitmapInfo = new ( ELeave ) CBitmapInfo( iBitmapId );
+    CleanupStack::PushL( bitmapInfo );
+    bitmapInfo->SetBitmaps( aBitmapId, aBitmapMaskId );
+    bitmapInfo->SetDefaultColorRequired( aExpectDefaultColor );
+    bitmapInfo->Require( iTmpFileName );
+
+    User::LeaveIfError( iBitmapArray.Append( bitmapInfo ) );
+    CleanupStack::Pop( bitmapInfo );
+    return iBitmapId;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::AddBitmapL
+// -----------------------------------------------------------------------------
+//
+TVtUiBitmapPoolId CVtUiBitmapManager::AddBitmapL(
+        TVtUiBitmapId aBitmapId,
+        TBool aExpectDefaultColor )
+    {
+    iBitmapId++;
+    CBitmapInfo* bitmapInfo = new ( ELeave ) CBitmapInfo( iBitmapId );
+    CleanupStack::PushL( bitmapInfo );
+    bitmapInfo->SetBitmap( aBitmapId );
+    bitmapInfo->SetDefaultColorRequired( aExpectDefaultColor );
+    bitmapInfo->Require( iTmpFileName );
+
+    User::LeaveIfError( iBitmapArray.Append( bitmapInfo ) );
+    CleanupStack::Pop( bitmapInfo );
+    return iBitmapId;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::RemoveBitmap
+// -----------------------------------------------------------------------------
+//
+void CVtUiBitmapManager::RemoveBitmap( 
+        TVtUiBitmapPoolId aId )
+    {
+    const TInt pos = Find( aId );
+    if ( pos != KErrNotFound )
+        {
+        CBitmapInfo* bitmapInfo = iBitmapArray[ pos ];
+        iBitmapArray.Remove( pos );
+        delete bitmapInfo;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::SetSize
+// -----------------------------------------------------------------------------
+//
+void CVtUiBitmapManager::SetSize( 
+        TVtUiBitmapPoolId aId, 
+        const TSize& aSize )
+    {
+    const TInt pos = Find( aId );
+    if ( pos != KErrNotFound )
+        {
+        CBitmapInfo* bitmapInfo = iBitmapArray[ pos ];
+        bitmapInfo->SetSize( aSize );
+        bitmapInfo->Require( iTmpFileName );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::SetAspectRatio
+// -----------------------------------------------------------------------------
+//
+void CVtUiBitmapManager::SetAspectRatio( 
+        TVtUiBitmapPoolId aId,
+        TBool aPreserve )
+    {
+    const TInt pos = Find( aId );
+    if ( pos != KErrNotFound )
+        {
+        CBitmapInfo* bitmapInfo = iBitmapArray[ pos ];
+        bitmapInfo->SetAspectRatio( aPreserve );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::SetSizeAndColor
+// -----------------------------------------------------------------------------
+//
+void CVtUiBitmapManager::SetSizeAndColor( 
+        TVtUiBitmapPoolId aId, 
+        const TSize& aSize, 
+        const TRgb& aDefaultColor )
+    {
+    const TInt pos = Find( aId );
+    if ( pos != KErrNotFound )
+        {
+        CBitmapInfo* bitmapInfo = iBitmapArray[ pos ];
+        bitmapInfo->SetSize( aSize );
+        bitmapInfo->SetDefaultColor( aDefaultColor );
+        bitmapInfo->Require( iTmpFileName );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::RequireBitmap
+// -----------------------------------------------------------------------------
+//
+void CVtUiBitmapManager::RequireBitmap( TVtUiBitmapPoolId aId )
+    {
+    const TInt pos = Find( aId );
+    if ( pos != KErrNotFound )
+        {
+        CBitmapInfo* bitmapInfo = iBitmapArray[ pos ];
+        bitmapInfo->Require( iTmpFileName );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::GetBitmaps
+// -----------------------------------------------------------------------------
+//
+void CVtUiBitmapManager::GetBitmaps(
+        TVtUiBitmapPoolId aId,
+        CFbsBitmap*& aBitmap,
+        CFbsBitmap*& aBitmapMask )
+    {
+    aBitmap = NULL;
+    aBitmapMask = NULL;
+
+    const TInt pos = Find( aId );
+    if ( pos != KErrNotFound )
+        {
+        CBitmapInfo* bitmapInfo = iBitmapArray[ pos ];
+        bitmapInfo->GetBitmap( aBitmap, aBitmapMask );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::GetBitmap
+// -----------------------------------------------------------------------------
+//
+void CVtUiBitmapManager::GetBitmap(
+        TVtUiBitmapPoolId aId,
+        CFbsBitmap*& aBitmap )
+    {
+    CFbsBitmap* dummy = NULL;
+    GetBitmaps( aId, aBitmap, dummy );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::InvalidateBitmaps
+// -----------------------------------------------------------------------------
+//
+void CVtUiBitmapManager::InvalidateBitmaps()
+    {
+    const TInt count = iBitmapArray.Count();
+    for ( TInt index = 0; index < count; index++ )
+        {
+        CBitmapInfo* bitmapInfo = iBitmapArray[ index ];
+        bitmapInfo->Reset();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::Find
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiBitmapManager::Find( TVtUiBitmapPoolId aId ) const
+    {
+    TInt result = KErrNotFound;
+    const TInt count = iBitmapArray.Count();
+    for ( TInt index = 0; index < count; index++ )
+        {
+        CBitmapInfo* bitmapInfo = iBitmapArray[ index ];
+        if ( bitmapInfo->BitmapPoolId() == aId )
+            {
+            result = index;
+            index = count; // out of the loop
+            }
+        }
+
+    return result;
+    }
+
+// Implementation of CBitmapInfo:
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::CBitmapInfo::CBitmapInfo
+// -----------------------------------------------------------------------------
+//
+inline CVtUiBitmapManager::CBitmapInfo::CBitmapInfo(
+        TVtUiBitmapPoolId aId )
+    : iBitmapPoolId( aId ), 
+      iBitmapId( EVtUiBitmapNone ), 
+      iBitmapMaskId( EVtUiBitmapNone )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::CBitmapInfo::~CBitmapInfo
+// -----------------------------------------------------------------------------
+//
+CVtUiBitmapManager::CBitmapInfo::~CBitmapInfo()
+    {
+    delete iBitmap;
+    delete iBitmapMask;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::CBitmapInfo::SetBitmaps
+// -----------------------------------------------------------------------------
+//
+inline void CVtUiBitmapManager::CBitmapInfo::SetBitmaps( 
+        TVtUiBitmapId aBitmapId, 
+        TVtUiBitmapId aBitmapMaskId )
+    {
+    iBitmapId = aBitmapId;
+    iBitmapMaskId = aBitmapMaskId;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::CBitmapInfo::SetBitmap
+// -----------------------------------------------------------------------------
+//
+inline void CVtUiBitmapManager::CBitmapInfo::SetBitmap( 
+        TVtUiBitmapId aBitmapId )
+    {
+    iBitmapId = aBitmapId;
+    iBitmapMaskId = EVtUiBitmapNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::CBitmapInfo::SetSize
+// -----------------------------------------------------------------------------
+//
+inline void CVtUiBitmapManager::CBitmapInfo::SetSize( 
+        const TSize& aSize )
+    {
+    if ( iHasSize )
+        {
+        iSizeChanged = ( iSize != aSize );
+        }
+
+    iHasSize = ETrue;
+    iSize = aSize;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::CBitmapInfo::SetAspectRatio
+// -----------------------------------------------------------------------------
+//
+inline void CVtUiBitmapManager::CBitmapInfo::SetAspectRatio( TBool aPreserve )
+    {
+    iHasAspectRatioPreserve = ETrue;
+    iAspectRatioPreserve = aPreserve;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::CBitmapInfo::SetDefaultColorRequired
+// -----------------------------------------------------------------------------
+//
+inline void CVtUiBitmapManager::CBitmapInfo::SetDefaultColorRequired( 
+        TBool aRequireDefaultColor )
+    {
+    iRequireDefaultColor = aRequireDefaultColor;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::CBitmapInfo::SetDefaultColor
+// -----------------------------------------------------------------------------
+//
+inline void CVtUiBitmapManager::CBitmapInfo::SetDefaultColor( 
+        const TRgb& aDefaultColor )
+    {
+    __ASSERT_DEBUG( iRequireDefaultColor, 
+        VtUiPanic::Panic( EVtUiPanicDefaultColorRequireMismatch ) );
+    iHasDefaultColor = ETrue;
+    iDefaultColor = aDefaultColor;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::CBitmapInfo::BitmapPoolId
+// -----------------------------------------------------------------------------
+//
+inline TVtUiBitmapPoolId CVtUiBitmapManager::CBitmapInfo::BitmapPoolId() const
+    {
+    return iBitmapPoolId;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::CBitmapInfo::GetBitmap
+// -----------------------------------------------------------------------------
+//
+inline void CVtUiBitmapManager::CBitmapInfo::GetBitmap(
+        CFbsBitmap*& aBitmap,
+        CFbsBitmap*& aBitmapMask )
+    {
+    if ( iDoCreateBitmaps && iDoSetSize )
+        {
+        aBitmap = iBitmap;
+        aBitmapMask = iBitmapMask;
+        }
+    else
+        {
+        aBitmap = NULL;
+        aBitmapMask = NULL;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::CBitmapInfo::Reset
+// -----------------------------------------------------------------------------
+//
+void CVtUiBitmapManager::CBitmapInfo::Reset()
+    {
+    delete iBitmap;
+    iBitmap = NULL;
+
+    delete iBitmapMask;
+    iBitmapMask = NULL;
+
+    iSize = TSize();
+    iHasSize = EFalse;
+    iSizeChanged = EFalse;
+    iHasDefaultColor = EFalse;
+    iDefaultColor = TRgb();
+    iDoCreateBitmaps = EFalse;
+    iDoSetSize = EFalse;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::CBitmapInfo::Require
+// -----------------------------------------------------------------------------
+//
+void CVtUiBitmapManager::CBitmapInfo::Require( TFileName& aTmpFileName )
+    {
+    // Bitmap can be created when the following has been satisfied
+    // a) It has not been created yet and default color is not required,
+    // b) It has not been created yet and default color is required and 
+    //    default color is available.
+    if ( !iDoCreateBitmaps && !( iRequireDefaultColor && !iHasDefaultColor ) )
+        {
+        TRAP_IGNORE( DoCreateBitmapsL( aTmpFileName ) );
+        }
+
+    DoSetSize();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::CBitmapInfo::DoCreateBitmapsL
+// -----------------------------------------------------------------------------
+//
+void CVtUiBitmapManager::CBitmapInfo::DoCreateBitmapsL( 
+        TFileName& aTmpFileName )
+    {
+    if ( !iDoCreateBitmaps )
+        {
+        TInt bitmapIndex = KErrNotFound;
+
+        VtUiLayout::Resolve( iBitmapId, aTmpFileName, bitmapIndex );
+
+        MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+        TAknsItemID skinId = VtUiLayout::MapBitmapToSkinId( iBitmapId );
+        
+        TAknsItemID colorId = KAknsIIDNone;
+        TInt colorIndex = KErrNotFound;
+        TBool colorAvailable = EFalse;
+        if ( iHasDefaultColor )
+            {
+            colorAvailable = 
+                VtUiLayout::MapBitmapToColorId( 
+                    iBitmapId, colorId, colorIndex );
+            }
+
+        if ( iBitmapMaskId != EVtUiBitmapNone )
+            {
+            TInt bitmapMaskIndex = KErrNotFound;
+#ifdef _DEBUG
+            TFileName fileName;
+            VtUiLayout::Resolve( iBitmapMaskId, fileName, bitmapMaskIndex );
+            __ASSERT_ALWAYS( aTmpFileName == fileName, 
+                VtUiPanic::Panic( EVtUiPanicMismatchInBitmapFileNames ) );
+#else
+            VtUiLayout::Resolve( iBitmapMaskId, aTmpFileName, bitmapMaskIndex );
+#endif
+            if ( colorAvailable )
+                {
+                AknsUtils::CreateColorIconL( 
+                    skin, skinId,
+                    colorId, colorIndex,
+                    iBitmap, iBitmapMask,
+                    aTmpFileName,
+                    bitmapIndex,
+                    bitmapMaskIndex,
+                    iDefaultColor );
+                }
+            else
+                {
+                AknsUtils::CreateIconL(
+                    skin, skinId,
+                    iBitmap, iBitmapMask,
+                    aTmpFileName,
+                    bitmapIndex, 
+                    bitmapMaskIndex );
+                }
+            }
+        else
+            {
+            // Only normal skinning for these.
+            AknsUtils::CreateIconL(
+                skin,
+                skinId,
+                iBitmap,
+                aTmpFileName,
+                bitmapIndex );
+            }
+
+        iDoCreateBitmaps = ETrue;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBitmapManager::CBitmapInfo::DoSetSize
+// -----------------------------------------------------------------------------
+//
+void CVtUiBitmapManager::CBitmapInfo::DoSetSize()
+    {
+    if ( iDoCreateBitmaps && iHasSize && ( !iDoSetSize || iSizeChanged ) )
+        {
+        iSizeChanged = EFalse;
+        TInt retBitmap = KErrNone;
+        if ( !iHasAspectRatioPreserve )
+            {
+            retBitmap = AknIconUtils::SetSize( iBitmap, iSize );
+            }
+        else
+            {
+            TScaleMode scaleMode = 
+                iAspectRatioPreserve ? 
+                    EAspectRatioPreserved : 
+                    EAspectRatioNotPreserved;
+            retBitmap = AknIconUtils::SetSize( iBitmap, iSize, scaleMode );
+            }
+
+        iDoSetSize = ( retBitmap == KErrNone );
+        }
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiBlankControl.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,104 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CVtUiBlankControl control class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "CVtUiBlankControl.h"
+#include    <AknsUtils.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CVtUiBlankControl::CVtUiBlankControl
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CVtUiBlankControl::CVtUiBlankControl()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBlankControl::ConstructL
+// Symbian 2nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CVtUiBlankControl::ConstructL( const TRect& aRect )
+    {
+    CreateWindowL();
+    MakeVisible( EFalse );
+    SetRect( aRect );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBlankControl::~CVtUiBlankControl
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CVtUiBlankControl::~CVtUiBlankControl()
+    {
+    AknsUtils::DeregisterControlPosition( this );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBlankControl::SetActive
+// -----------------------------------------------------------------------------
+//
+void CVtUiBlankControl::SetActive( TBool aStatus )
+    {
+    iBlankerActive = aStatus;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBlankControl::OfferKeyEventL
+// -----------------------------------------------------------------------------
+//
+TKeyResponse CVtUiBlankControl::OfferKeyEventL(
+        const TKeyEvent& /*aKeyEvent*/,
+        TEventCode /*aType*/ )
+    {
+    return iBlankerActive ? EKeyWasConsumed : EKeyWasNotConsumed;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBlankControl::Draw
+// -----------------------------------------------------------------------------
+//
+void CVtUiBlankControl::Draw( const TRect& /*aRect*/ ) const
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBlankControl::SizeChanged
+// -----------------------------------------------------------------------------
+//
+void CVtUiBlankControl::SizeChanged()
+    {
+    AknsUtils::RegisterControlPosition( this );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBlankControl::PositionChanged
+// -----------------------------------------------------------------------------
+//
+void CVtUiBlankControl::PositionChanged()
+    {
+    AknsUtils::RegisterControlPosition( this );
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiBlankDialog.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,152 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CVtUiBlankDialog class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "CVtUiBlankDialog.h"
+#include    <videotelui.rsg>
+#include    <avkon.hrh>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CVtUiBlankDialog::CVtUiBlankDialog
+// -----------------------------------------------------------------------------
+//
+CVtUiBlankDialog::CVtUiBlankDialog(
+        CEikDialog** aSelfPtr )
+    : iSelfPtr( aSelfPtr ) 
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBlankDialog::~CVtUiBlankDialog
+// -----------------------------------------------------------------------------
+//
+CVtUiBlankDialog::~CVtUiBlankDialog()
+    {
+    if ( iSelfPtr )
+        {
+        *iSelfPtr = NULL;
+        iSelfPtr = NULL;
+        }
+
+    if ( iRequest )
+        {
+        User::RequestComplete( iRequest, KErrCancel );
+        iRequest = NULL;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBlankDialog::ExecuteDialogNoWaitLD
+// -----------------------------------------------------------------------------
+//
+void CVtUiBlankDialog::ExecuteDialogNoWaitLD()
+    {
+    ExecuteLD( R_VIDEOTELUI_BLANK_NOWAIT_DLG );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBlankDialog::ExecuteDialogLD
+// -----------------------------------------------------------------------------
+//
+void CVtUiBlankDialog::ExecuteDialogLD(
+        TRequestStatus* aRequest )
+    {
+    if ( !aRequest )
+        {
+        TInt error = KErrNone;
+        iError = &error;
+ 
+        ExecuteLD( R_VIDEOTELUI_BLANK_DLG );
+        User::LeaveIfError( error );
+        }
+    else
+        {
+        // It's assumed that either ExecuteLD leaves or
+        // then dialog is started (& dialog is not immediately deleted).
+        *aRequest = KRequestPending;
+        ExecuteLD( R_VIDEOTELUI_BLANK_NOWAIT_DLG );
+        iRequest = aRequest; 
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBlankDialog::Complete
+// -----------------------------------------------------------------------------
+//
+void CVtUiBlankDialog::Complete( const TInt aError )
+    {
+    if ( iError )
+        {
+        *iError = aError;
+        }
+
+    if ( iRequest )
+        {
+        User::RequestComplete( iRequest, aError );
+        iRequest = NULL;
+        }
+
+    delete this;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBlankDialog::PreLayoutDynInitL
+// -----------------------------------------------------------------------------
+//
+void CVtUiBlankDialog::PreLayoutDynInitL()
+    {
+    MakeVisible( EFalse );
+    ButtonGroupContainer().MakeVisible( EFalse );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBlankDialog::PostLayoutDynInitL
+// -----------------------------------------------------------------------------
+//
+void CVtUiBlankDialog::PostLayoutDynInitL()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBlankDialog::OkToExitL
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiBlankDialog::OkToExitL( TInt aButtonId )
+    {
+    if ( aButtonId != EEikBidCancel )
+        {
+        return EFalse;
+        }
+    else
+        {
+        return CEikDialog::OkToExitL( aButtonId );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiBlankDialog::Draw
+// -----------------------------------------------------------------------------
+//
+void CVtUiBlankDialog::Draw( const TRect& /*aRect*/ ) const
+    {
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiContextControl.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,385 @@
+/*
+* Copyright (c) 2004, 2005 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CVtUiContextControl control class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "CVtUiContextControl.h"
+#include    "VtUiLayout.h"
+#include    <AknsUtils.h>
+#include    <AknsDrawUtils.h>
+#include    <cvtlogger.h>
+#include    <featmgr.h>
+#include    "CVtUiAppUi.h"
+#include    "tvtuistates.h"
+#include    "tVtuifeaturevariation.h"
+#include    "CVtUiMainControl.h"
+
+
+// -----------------------------------------------------------------------------
+// CVtUiContextControl::NewL
+// Constructor that may leave.
+// -----------------------------------------------------------------------------
+//
+CVtUiContextControl* CVtUiContextControl::NewL(
+    CVtUiBitmapManager& aBitmapManager, CVtUiAppUi& aAppUi,
+    TVtUiStates& aUiStates)
+    {
+    __VTPRINTENTER( "CtxCtrl.NewL" )
+    CVtUiContextControl* self = new ( ELeave ) CVtUiContextControl(
+        aBitmapManager, aAppUi, aUiStates );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "CtxCtrl.NewL" )
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiContextControl::~CVtUiContextControl
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CVtUiContextControl::~CVtUiContextControl()
+    {
+    __VTPRINTENTER( "CtxCtrl.~" )
+    BitmapManager().RemoveBitmap( iBackgroundId );
+    BitmapManager().RemoveBitmap( iBlindId );
+    BitmapManager().RemoveBitmap( iBlindMaskId );
+    if ( iAppUi.EventMonitor() )
+        {
+        iAppUi.EventMonitor()->RemoveObserver( this );
+        }
+    __VTPRINTEXIT( "CtxCtrl.~" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiContextControl::HandlePointerEventL
+// -----------------------------------------------------------------------------
+//
+void CVtUiContextControl::HandlePointerEventL(
+    const TPointerEvent& aPointerEvent)
+    {
+    __VTPRINTENTER( "CtxCtrl.HandlePointerEventL" )
+    __VTPRINT2( DEBUG_GEN, "CtxCtrl.HandlePtr  ok= %d", iOkToSwapOnButtonUp )
+    if ( AknLayoutUtils::PenEnabled() )
+        {
+        __VTPRINT2( DEBUG_GEN, "CtxCtrl.HandlePtr.Position.iX = %d", aPointerEvent.iPosition.iX )
+        __VTPRINT2( DEBUG_GEN, "CtxCtrl.HandlePtr.Position.iY = %d", aPointerEvent.iPosition.iY )
+        if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
+            {
+            TRect window( Size() );
+            if ( !window.Contains( aPointerEvent.iPosition ) || 
+                    iAppUi.MainControl().IsMainControlPointerEvent() )
+                {
+                __VTPRINT( DEBUG_GEN, "CtxCtrl.HandlePtr.Button1Down outside" )
+                // Down outside of Ctx ctrl, set inside false
+                iPointerButton1DownInside = EFalse;
+                }
+            else
+                {
+                __VTPRINT( DEBUG_GEN, "CtxCtrl.HandlePtrButton1Down inside" )
+                // Only true here
+                iPointerButton1DownInside = ETrue;
+                }
+            }
+        else if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
+            {
+            TRect window( Size() );
+            if ( !window.Contains( aPointerEvent.iPosition ) ||
+                    iAppUi.MainControl().IsMainControlPointerEvent() )
+                {
+                __VTPRINT( DEBUG_GEN, "CtxCtrl.HandlePtr.Button1Up outside" )
+                
+                // Up outside of Ctx ctrl, set inside false
+                iPointerButton1DownInside = EFalse;
+                
+                iOkToSwapOnButtonUp = ETrue;
+                SetGloballyCapturing( EFalse );
+                SetPointerCapture( EFalse ); 
+                }
+            else if( iOkToSwapOnButtonUp )
+                {
+                __VTPRINT( DEBUG_GEN, "CtxCtrl.HandlePtr.Button1Up inside" )
+                 if ( !iUiStates.IsWhiteBalanceModeOn() &&
+                      !iUiStates.IsColorToneModeOn() &&
+                      !iUiStates.IsZoomModeOn() &&
+                      !iUiStates.IsCaptureModeOn() &&
+                      !iUiStates.IsContrastModeOn() &&
+                      !iUiStates.IsBrightnessModeOn() &&
+                      !iUiStates.IsVolumeModeOn() )
+                        {
+                        if ( !iPointerButton1DownInside ||
+                                !( iAppUi.CanSwapImagePlaces() ) )
+                            {
+                            // Set the flag back
+                            iPointerButton1DownInside = EFalse;
+                            return;
+                            }
+                        // Set the flag back
+                        iPointerButton1DownInside = EFalse;
+                        iAppUi.HandleCommandL( EVtUiCmdSwapImagesPlaces );
+                        }
+                }
+            else
+                {
+                __VTPRINT( DEBUG_GEN, "CtxCtrl.HandlePtr.Button1Up inside" )
+                SetGloballyCapturing( EFalse );
+                SetPointerCapture( EFalse); 
+                iOkToSwapOnButtonUp = ETrue;
+                // Set the flag back
+                iPointerButton1DownInside = EFalse;
+                }
+            }
+        }
+    __VTPRINTEXIT( "CtxCtrl.HandlePointerEventL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiContextControl::HandleSizeChanged
+// -----------------------------------------------------------------------------
+//
+void CVtUiContextControl::HandleSizeChanged()
+    {
+    __VTPRINTENTER( "CtxCtrl.HandleSizeChanged" )
+    TRect screen;
+    VtUiLayout::GetApplicationParentRect( screen );
+
+    TAknWindowLineLayout control;
+    VtUiLayout::GetFirstWindowBackgroundLayout( control );
+    TAknLayoutRect backLayout;
+    backLayout.LayoutRect( screen, control );
+    BitmapManager().SetSize( iBackgroundId, backLayout.Rect().Size() );
+
+    const TPoint positionRelativeToScreen( -PositionRelativeToScreen() );
+
+    VtUiLayout::GetFirstWindowStreamDisabledIconLayout( control );
+    TAknLayoutRect blindLayout;
+    blindLayout.LayoutRect( screen, control );
+    iBlindRect = blindLayout.Rect();
+    iBlindRect.Move( positionRelativeToScreen );
+    BitmapManager().SetSize( iBlindId, iBlindRect.Size() );
+    BitmapManager().SetSize( iBlindMaskId, iBlindRect.Size() );
+
+    VtUiLayout::GetFirstWindowStreamLayout( control );
+    TAknLayoutRect streamLayout;
+    streamLayout.LayoutRect( screen, control );
+    iStreamRect = streamLayout.Rect();
+    iStreamRect.Move( positionRelativeToScreen ) ;
+    __VTPRINTEXIT( "CtxCtrl.HandleSizeChanged" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiContextControl::StreamBlitPosition
+// -----------------------------------------------------------------------------
+//
+TPoint CVtUiContextControl::StreamBlitPosition() const
+    {
+    __VTPRINTENTER( "CtxCtrl.StreamBlitPosition" )
+    __VTPRINTEXIT( "CtxCtrl.StreamBlitPosition" )
+    return iStreamRect.iTl;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiContextControl::StreamClippingRect
+// ---------------------------------------------------------------------------
+//
+TRect CVtUiContextControl::StreamClippingRect() const
+    {
+    __VTPRINTENTER( "CtxCtrl.StreamClippingRect" )
+    __VTPRINTEXIT( "CtxCtrl.StreamClippingRect" )
+    return iStreamRect;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiContextControl::DrawColoredBackground
+// -----------------------------------------------------------------------------
+//
+void CVtUiContextControl::DrawColoredBackground( CWindowGc& aGc ) const
+    {
+    __VTPRINTENTER( "CtxCtrl.DrawColoredBackground" )
+    CVtUiVideoControlBase::DrawColoredBackground( aGc );
+    // Draw background image
+    CFbsBitmap* bg = NULL;
+    CFbsBitmap* bgMask = NULL;
+    BitmapManager().GetBitmaps( iBackgroundId, bg, bgMask );
+    if ( bg )
+        {
+        const TPoint origin;
+        const TRect rect( origin, bg->SizeInPixels() );
+        if ( bgMask )
+            {
+            aGc.BitBltMasked( origin, bg, rect, bgMask, ETrue );
+            }
+        else
+            {
+            aGc.BitBlt( origin, bg );
+            }
+        }
+    __VTPRINTEXIT( "CtxCtrl.DrawColoredBackground" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiContextControl::BlindImage
+// ---------------------------------------------------------------------------
+//
+CFbsBitmap* CVtUiContextControl::BlindImage() const
+    {
+    __VTPRINTENTER( "CtxCtrl.BlindImage" )
+    __VTPRINTEXIT( "CtxCtrl.BlindImage" )
+    return Bitmap( iBlindId );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiContextControl::BlindMask
+// ---------------------------------------------------------------------------
+//
+CFbsBitmap* CVtUiContextControl::BlindMask() const
+    {
+    __VTPRINTENTER( "CtxCtrl.BlindImage" )
+    __VTPRINTEXIT( "CtxCtrl.BlindImage" )
+    return Bitmap( iBlindMaskId );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiContextControl::BlindBlitPosition
+// ---------------------------------------------------------------------------
+//
+TPoint CVtUiContextControl::BlindBlitPosition() const
+    {
+    __VTPRINTENTER( "CtxCtrl.BlindBlitPosition" )
+    __VTPRINTEXIT( "CtxCtrl.BlindBlitPosition" )
+    return iBlindRect.iTl;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiContextControl::CVtUiContextControl
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CVtUiContextControl::CVtUiContextControl(
+        CVtUiBitmapManager& aBitmapManager,
+        CVtUiAppUi& aAppUi,
+        TVtUiStates& aUiStates )
+    : CVtUiVideoControlBase( aBitmapManager ),
+      iAppUi( aAppUi ),
+      iUiStates( aUiStates )
+    {
+    __VTPRINTENTER( "CtxCtrl.ctor" )
+    SetRenderingHint( ENoWaitingText );
+    SetRenderingHint( EColoredBackground );
+    __VTPRINTEXIT( "CtxCtrl.ctor" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiContextControl::ConstructL
+// Symbian 2nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CVtUiContextControl::ConstructL()
+    {
+    __VTPRINTENTER( "CtxCtrl.ConstructL" )
+    BaseConstructL();
+    iBackgroundId =
+        BitmapManager().AddBitmapsL(
+            EVtUiBitmap_qgn_graf_call_video_out_bg,
+            EVtUiBitmap_qgn_graf_call_video_out_bg_mask,
+            EFalse );
+    BitmapManager().SetAspectRatio( iBackgroundId, EFalse );
+    iBlindId =
+        BitmapManager().AddBitmapL(
+            EVtUiBitmap_qgn_indi_call_video_blind_out,
+            EFalse );
+    BitmapManager().SetAspectRatio( iBlindId, EFalse );
+    iBlindMaskId =
+        BitmapManager().AddBitmapL(
+            EVtUiBitmap_qgn_indi_call_video_blind_out_mask_icon,
+            EFalse );
+    BitmapManager().SetAspectRatio( iBlindMaskId, EFalse );
+    SetNonFocusing();
+    if ( iAppUi.EventMonitor() )
+        {
+        iAppUi.EventMonitor()->AddObserverL( this );
+        }
+        
+    iOkToSwapOnButtonUp = ETrue;
+    
+    ClaimPointerGrab( ETrue );
+    
+    __VTPRINTEXIT( "CtxCtrl.ConstructL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiContextControl::HandleWsEventL
+// -----------------------------------------------------------------------------
+//
+void CVtUiContextControl::HandleWsEventL( const TWsEvent& aEvent,
+    CCoeControl* aDestination )
+    {
+    __VTPRINTENTER( "CVtUiContextControl.HandleWsEventL" )
+    if( aEvent.Type() == EEventPointer )
+        {
+        // Touch outside of volume popup, close volume popup
+        if ( aEvent.Pointer()->iType == TPointerEvent::EButton1Down )
+            {
+            __VTPRINT( DEBUG_GEN, "CtxCtrl.WsEvent.Button1Down inside" )
+            iOkToSwapOnButtonUp = !iUiStates.IsZoomModeOn() &&
+                    !iUiStates.IsContrastModeOn() &&
+                    !iUiStates.IsBrightnessModeOn() &&
+                    !iUiStates.IsVolumeModeOn();
+            
+            if( iUiStates.IsZoomModeOn() && iUiStates.IsCaptureModeOn() )
+                {
+                iOkToSwapOnButtonUp = ETrue;
+                }            
+            
+            if ( aDestination == this )
+                {
+                iOkToSwapOnButtonUp = !iUiStates.IsZoomModeOn() &&
+                    !iUiStates.IsCaptureModeOn() &&
+                    !iUiStates.IsContrastModeOn() &&
+                    !iUiStates.IsBrightnessModeOn() &&
+                    !iUiStates.IsVolumeModeOn();
+                    SetGloballyCapturing( ETrue );
+                    SetPointerCapture( ETrue ); 
+                }
+            }
+        else if ( aEvent.Pointer()->iType == TPointerEvent::EButton1Up )
+            {
+            __VTPRINT( DEBUG_GEN, "CtxCtrl.WsEvent.Button1Up inside" )
+            }
+        }
+    __VTPRINTEXIT( "CVtUiContextControl.HandleWsEventL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiContextControl::LayoutRemoteVideo
+// -----------------------------------------------------------------------------
+//
+void CVtUiContextControl::LayoutRemoteVideo()
+    {
+    __VTPRINTENTER( "CVtUiContextControl.LayoutRemoteVideo" )
+    if ( NULL != iRemoteVideoControl && iRemoteVideoControl->IsVisible() )
+        {
+        TRect rectRemoteVideo(StreamClippingRect());
+        rectRemoteVideo.Move(PositionRelativeToScreen());
+        iRemoteVideoControl->SetExtent(rectRemoteVideo.iTl,rectRemoteVideo.Size());        
+        }
+    __VTPRINTEXIT( "CVtUiContextControl.LayoutRemoteVideo" )
+    }
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiDoc.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CVtUiDoc document class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "CVtUiDoc.h"
+#include    "CVtUiAppUi.h"
+#include    <apgwgnam.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CVtUiDoc::CVtUiDoc
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CVtUiDoc::CVtUiDoc( CEikApplication& aApp )
+    : CAknDocument( aApp )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiDoc::CreateAppUiL
+// Creates application UI instance.
+// -----------------------------------------------------------------------------
+//
+CEikAppUi* CVtUiDoc::CreateAppUiL()
+    {
+    return new ( ELeave ) CVtUiAppUi;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiDoc::UpdateTaskNameL
+// Creates application UI instance.
+// -----------------------------------------------------------------------------
+//
+void CVtUiDoc::UpdateTaskNameL( CApaWindowGroupName* aWgName )
+    {
+    CAknDocument::UpdateTaskNameL( aWgName );
+    aWgName->SetHidden( ETrue );
+    }
+
+//  End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiEndCallButton.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,270 @@
+/*
+* 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:  Button of ending call.
+*
+*/
+
+
+#include    <AknsConstants.h>
+#include    <AknsSkinInstance.h>
+#include    <data_caging_path_literals.hrh>
+#include    <AknsFrameBackgroundControlContext.h>
+#include    <aknlayoutscalable_avkon.cdl.h>
+#include    <AknsDrawUtils.h>
+#include    <gulicon.h>
+#include    <AknIconUtils.h>
+#include    <AknBidiTextUtils.h>
+#include    <cvtlogger.h>
+
+#include    "CVtUiEndCallButton.h"
+#include    "VtUiLayout.h"
+
+const TInt KEndCallButtonText = 255;
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButton::CVtUiEndCallButton
+// -----------------------------------------------------------------------------
+//
+CVtUiEndCallButton::CVtUiEndCallButton(): CAknButton( 0 )
+    {
+    // No implementation required
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButton::NewL
+// -----------------------------------------------------------------------------
+//
+CVtUiEndCallButton* CVtUiEndCallButton::NewL()
+    {
+    CVtUiEndCallButton* self = new (ELeave) CVtUiEndCallButton();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(); // self;
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButton::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CVtUiEndCallButton::ConstructL()
+    {
+    CAknButton::ConstructL();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButton::~CVtUiEndCallButton
+// -----------------------------------------------------------------------------
+//
+CVtUiEndCallButton::~CVtUiEndCallButton()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButton::ConstructFromResourceL
+// -----------------------------------------------------------------------------
+//
+void CVtUiEndCallButton::ConstructFromResourceL( const TInt aResourceId )
+    {    
+    CAknButton::ConstructFromResourceL( aResourceId );
+    
+    // function button text color
+    SetTextColorIds( KAknsIIDQsnTextColors, 
+                              EAknsCIQsnTextColorsCG65 );
+    
+    // Customize icons
+    LoadButtonIcon( EVtUiBitmap_qgn_indi_button_end_active_call,
+                    EVtUiBitmap_qgn_indi_button_end_active_call_mask );
+    
+    if ( State()->Icon() )
+        {
+        SetIconScaleMode( EAspectRatioPreserved );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButton::SetLayout
+// -----------------------------------------------------------------------------
+//
+void CVtUiEndCallButton::SetLayout( const TAknLayoutText aLayoutText,
+                                        const TRect aIconRect ) 
+    {
+    iLayoutText = aLayoutText;
+    iIconRect = aIconRect;
+    } 
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButton::Draw
+// -----------------------------------------------------------------------------
+//
+void CVtUiEndCallButton::Draw(const TRect& aRect) const
+    {
+    __VTPRINTENTER( "CCVtUiEndCallButton::Draw" )
+    TAknLayoutRect centerLayout;
+    centerLayout.LayoutRect( aRect,
+        AknLayoutScalable_Avkon::toolbar_button_pane_g1().LayoutLine() );
+    TRect innerRect = centerLayout.Rect();
+    CWindowGc& gc = SystemGc();
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+
+    TAknsItemID frameId = KAknsIIDQsnFrButtonNormalReject;
+    
+    if ( iButtonPressed )
+        {
+        frameId = KAknsIIDQsnFrButtonPressedReject;
+        }
+    else if ( IsDimmed() )
+        {
+        frameId = KAknsIIDQsnFrButtonInactiveReject;
+        }    
+    
+    iBgContext->SetFrame( frameId );
+    iBgContext->SetCenter( KAknsIIDQsnFrButtonCenterNormal );
+    iBgContext->SetFrameRects( aRect, innerRect );
+    
+    if ( !AknsDrawUtils::Background( skin, 
+                                    iBgContext, 
+                                    NULL, 
+                                    gc, 
+                                    aRect, 
+                                    KAknsDrawParamNoClearUnderImage ) )
+        {
+        gc.SetBrushColor( KRgbRed );
+        gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+        gc.DrawRect( aRect );
+        }
+    
+    LayoutIconAndText( gc );
+    __VTPRINTEXIT( "CCVtUiEndCallButton::Draw" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButton::HandleResourceChange
+// -----------------------------------------------------------------------------
+//
+void CVtUiEndCallButton::HandleResourceChange( TInt aType )
+    {
+    __VTPRINTENTER( "CCVtUiEndCallButton::HandleResourceChange" )
+    CAknButton::HandleResourceChange( aType );
+    
+    if ( aType == KAknsMessageSkinChange )
+        {
+        LoadButtonIcon( EVtUiBitmap_qgn_indi_button_end_active_call,
+                        EVtUiBitmap_qgn_indi_button_end_active_call_mask );
+        }
+    __VTPRINTEXIT( "CCVtUiEndCallButton::HandleResourceChange" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButton::GetTextColors
+// -----------------------------------------------------------------------------
+//
+void CVtUiEndCallButton::GetTextColors( TRgb& aPenColor ) const
+    {
+    __VTPRINTENTER( "CCVtUiEndCallButton::GetTextColors" )
+    if ( IsDimmed() ) 
+        {
+        aPenColor = iEikonEnv->ControlColor( EColorButtonTextDimmed, *this ); 
+        }
+    else if ( iButtonPressed )
+        {
+        aPenColor = iEikonEnv->ControlColor( EColorButtonTextPressed, *this );
+        }
+    else
+        {
+        aPenColor = iEikonEnv->ControlColor( EColorButtonText, *this );
+        }
+    __VTPRINTEXIT( "CCVtUiEndCallButton::GetTextColors" )
+    } 
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButton::LoadButtonIcon
+// -----------------------------------------------------------------------------
+//
+void CVtUiEndCallButton::LoadButtonIcon( TVtUiBitmapId aIconId, TVtUiBitmapId aMaskId )
+    {
+    __VTPRINTENTER( "CCVtUiEndCallButton::LoadButtonIcon" )
+    CGulIcon* icon = NULL;
+    TFileName fileName;
+    TInt fileIndex;
+    TInt maskIndex;
+    TAknsItemID skinId = 
+        VtUiLayout::MapBitmapToSkinId( aIconId );
+    VtUiLayout::Resolve( aIconId, fileName, fileIndex );
+    VtUiLayout::Resolve( aMaskId, fileName, maskIndex );
+        
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    
+    icon = AknsUtils::CreateGulIconL( skin, 
+                                      skinId, 
+                                      fileName, 
+                                      fileIndex,
+                                      maskIndex );
+    
+    if ( icon )       
+        {
+        CAknButtonState* state = State();
+        // State takes ownership of icon
+        state->SetIcon( icon );
+        }
+        __VTPRINTEXIT( "CCVtUiEndCallButton::LoadButtonIcon" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButton::LayoutIconAndText
+// -----------------------------------------------------------------------------
+//
+void CVtUiEndCallButton::LayoutIconAndText( CWindowGc& aGc ) const
+    {
+    __VTPRINTENTER( "CCVtUiEndCallButton::LayoutIconAndText" )
+    CAknButtonState* state = State();
+    if ( !state  ||       
+         !state->Icon() ||
+         !state->Text().Length() )
+        {
+        return;
+        } 
+    TRgb penColor;
+    TRgb brushColor;
+    GetTextColors( penColor ); 
+    
+    // buffer for visually ordered text
+    TBuf< KEndCallButtonText + KAknBidiExtraSpacePerLine> visualText; 
+    TInt clipWidth = iLayoutText.TextRect().Width();
+        
+    // bidi processing - using AknBidiTextUtils.
+    AknBidiTextUtils::ConvertToVisualAndClip(
+            state->Text(),
+            visualText,
+            *iLayoutText.Font(),
+            clipWidth,
+            clipWidth );
+    
+    iLayoutText.DrawText( aGc, visualText, EFalse, penColor );
+    
+    const CGulIcon* icon = GetCurrentIcon();
+
+    if ( icon )
+        {
+        CFbsBitmap* buttonBmp = icon->Bitmap();
+        CFbsBitmap* buttonMask = icon->Mask();
+        
+        if( buttonBmp && buttonMask )
+            {
+            aGc.BitBltMasked( iIconRect.iTl, buttonBmp,
+                    iIconRect.Size(), buttonMask, EFalse );
+            }
+        }
+    __VTPRINTEXIT( "CCVtUiEndCallButton::LayoutIconAndText" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiEndCallButtonPane.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,245 @@
+/*
+* 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:  The container pane of end button.
+*
+*/
+
+#include    <aknenv.h>
+#include    <aknlayoutscalable_apps.cdl.h>
+#include    <AknsBasicBackgroundControlContext.h>
+#include    <AknsDrawUtils.h>
+#include    <AknsSkinInstance.h>
+#include    <videotelui.rsg>
+#include    <cvtlogger.h>
+#include    <featmgr.h>
+
+#include    "CVtUiEndCallButton.h"
+#include    "CVtUiEndCallButtonPane.h"
+#include    "videotelui.hrh"
+#include    "CVtUiAppUi.h"
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButtonPane::CVtUiEndCallButtonPane
+// -----------------------------------------------------------------------------
+//
+CVtUiEndCallButtonPane::CVtUiEndCallButtonPane()
+    {
+    // No implementation required
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButtonPane::NewL
+// -----------------------------------------------------------------------------
+//
+CVtUiEndCallButtonPane* CVtUiEndCallButtonPane::NewL( const TRect& aRect )
+    {
+    CVtUiEndCallButtonPane* self =
+            new (ELeave) CVtUiEndCallButtonPane();
+    CleanupStack::PushL(self);
+    self->ConstructL( aRect );
+    CleanupStack::Pop(); // self;
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButtonPane::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CVtUiEndCallButtonPane::ConstructL( const TRect& aRect )
+    {
+    __VTPRINTENTER( "CVtUiEndCallButtonPane.ConstructL" )
+    // Create a window for this application view
+    CreateWindowL();
+    
+    // Set the windows size
+    SetRect( aRect );
+
+    CreateButtonUsingResourceL();
+    GetButtonLayoutData();
+    
+
+    iBgContext = CAknsBasicBackgroundControlContext::NewL(
+            KAknsIIDQsnBgAreaMain, Rect(), ETrue );
+    
+    // Activate the window, which makes it ready to be drawn
+    ActivateL();
+    
+    // For set non focus and recieve all point event
+    SetNonFocusing();
+    ClaimPointerGrab( ETrue );
+
+    __VTPRINTEXIT( "CVtUiEndCallButtonPane.ConstructL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButtonPane::CVtUiEndCallButtonPane
+// -----------------------------------------------------------------------------
+//
+CVtUiEndCallButtonPane::~CVtUiEndCallButtonPane()
+    {
+    __VTPRINTENTER( "CVtUiEndCallButtonPane.~" )
+    if ( iEndButton )
+        {
+        delete iEndButton;
+        }
+    
+    if ( iBgContext )
+        {
+        delete iBgContext;
+        }
+    __VTPRINTEXIT( "CVtUiEndCallButtonPane.~" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButtonPane::CountComponentControls
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiEndCallButtonPane::CountComponentControls() const
+    {
+    return iEndButton ? 1 : 0;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButtonPane::ComponentControl
+// -----------------------------------------------------------------------------
+//
+CCoeControl* CVtUiEndCallButtonPane::ComponentControl(TInt aIndex) const
+    {
+    return iEndButton;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButtonPane::Draw
+// -----------------------------------------------------------------------------
+//
+void CVtUiEndCallButtonPane::Draw(const TRect& aRect) const
+    {
+    __VTPRINTENTER( "CVtUiEndCallButtonPane.Draw" )
+    CWindowGc& gc = SystemGc();
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
+    AknsDrawUtils::Background( skin, cc, this, gc, Rect() );
+    __VTPRINTEXIT( "CVtUiEndCallButtonPane.Draw" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButtonPane::SizeChanged
+// -----------------------------------------------------------------------------
+//
+void CVtUiEndCallButtonPane::SizeChanged()
+    {
+    __VTPRINTENTER( "CVtUiEndCallButtonPane.SizeChanged" )
+    if( iEndButton )
+        {
+        GetButtonLayoutData();
+        }
+    if( iBgContext )
+        {
+        TRect bgRect;
+        AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, bgRect );
+        iBgContext->SetRect( bgRect );
+        }
+    __VTPRINTEXIT( "CVtUiEndCallButtonPane.SizeChanged" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButtonPane::MopSupplyObject
+// -----------------------------------------------------------------------------
+//
+TTypeUid::Ptr CVtUiEndCallButtonPane::MopSupplyObject(TTypeUid aId)
+    {
+    __VTPRINTENTER( "CVtUiEndCallButtonPane.MopSupplyObject" )
+    // Required during rendering of the background skin in Draw()
+    if (aId.iUid == MAknsControlContext::ETypeId)
+        {
+         __VTPRINTEXIT( "CVtUiEndCallButtonPane.MopSupplyObject.1" )
+        return MAknsControlContext::SupplyMopObject( aId, iBgContext );
+        }
+    __VTPRINTEXIT( "CVtUiEndCallButtonPane.MopSupplyObject.2" )
+    return CCoeControl::MopSupplyObject( aId );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButtonPane::HandleControlEventL
+// -----------------------------------------------------------------------------
+//
+void CVtUiEndCallButtonPane::HandleControlEventL( CCoeControl* aControl, 
+                                                  TCoeEvent aEventType )
+    {
+    __VTPRINTENTER( "CVtUiEndCallButtonPane.HandleControlEventL" )
+    if ( aEventType != EEventStateChanged )
+        {
+        __VTPRINTEXIT( "CVtUiEndCallButtonPane.HandleControlEventL" )
+        return;
+        }
+    CVtUiAppUi* appUi = STATIC_CAST( CVtUiAppUi*, CCoeEnv::Static()->AppUi() );
+    appUi->HandleCommandL( EVtUiCmdEndActiveCall );
+    __VTPRINTEXIT( "CVtUiEndCallButtonPane.HandleControlEventL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButtonPane::CreateButtonUsingResourceL
+// -----------------------------------------------------------------------------
+//
+void CVtUiEndCallButtonPane::CreateButtonUsingResourceL()
+    {
+    __VTPRINTENTER( "CVtUiEndCallButtonPane.CreateButtonUsingResourceL" )
+    iEndButton = CVtUiEndCallButton::NewL();
+    iEndButton->ConstructFromResourceL( R_VIDEOTELUI_END_CALL_BUTTON );
+    iEndButton->SetContainerWindowL( *this );
+    iEndButton->SetRect( Rect() );
+    iEndButton->SetObserver( this );
+    iEndButton->MakeVisible( ETrue );
+    iEndButton->ActivateL();
+    __VTPRINTEXIT( "CVtUiEndCallButtonPane.CreateButtonUsingResourceL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButtonPane::GetButtonLayoutData
+// -----------------------------------------------------------------------------
+//
+void CVtUiEndCallButtonPane::GetButtonLayoutData()
+    {
+    __VTPRINTENTER( "CVtUiEndCallButtonPane.GetButtonLayoutData" )
+    AknLayoutUtils::LayoutControl( 
+            iEndButton, 
+            Rect(), 
+            AknLayoutScalable_Apps::bg_button_pane_cp034( 0, 0, 0) );
+
+    
+    TAknLayoutText text;
+    text.LayoutText( Rect(), 
+            AknLayoutScalable_Apps::vidtel_button_pane_t1( 
+                    0 ).LayoutLine());
+
+    TAknLayoutRect icon;
+    icon.LayoutRect( Rect(), 
+            AknLayoutScalable_Apps::vidtel_button_pane_g1( 
+                    0 ).LayoutLine());
+    
+    iEndButton->SetIconSize( icon.Rect().Size() );
+
+    iEndButton->SetLayout( text, icon.Rect() );
+     __VTPRINTEXIT( "CVtUiEndCallButtonPane.GetButtonLayoutData" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiEndCallButtonPane::SetEnabled
+// -----------------------------------------------------------------------------
+//
+void CVtUiEndCallButtonPane::SetEnabled( TBool aEnabled )
+    {
+    iEndButton->SetDimmed( !aEnabled );
+    DrawNow();
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiExecuteCmdDialog.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,312 @@
+/*
+* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CVtUiExecuteCmdDialog class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "CVtUiExecuteCmdDialog.h"
+#include    "MVtUiEngineCommandManager.h"
+#include    <mvtengcommandhandler.h>
+#include    <cvtlogger.h>
+
+// MODULE DATA STRUCTURES
+
+/**
+* Active object to perform asynchronous commands.
+* @since Series 60 2.6
+*/
+class CVtUiExecuteCmdDialog::CActiveCmd
+    : public CActive
+    {
+    public: // Constructors and destructor
+
+        /**
+        * Constructor.
+        */
+        CActiveCmd(
+            CVtUiExecuteCmdDialog& aDialog,
+            MVtEngCommandHandler& aCommandHandler,
+            TVtEngCommandId aCommand,
+            TDesC8* aParams );
+
+        /**
+        * Destructor.
+        */
+        ~CActiveCmd();
+
+    public: // New functions
+
+        /**
+        * Starts active object. Command will be performed in RunL.
+        */
+        void Start();
+
+        /**
+        * Checks if command has been performed.
+        * @return ETrue if command has been performed.
+        */
+        TBool CommandPerformed() const;
+
+    private:
+
+        /**
+        * @see CActive::RunL
+        */
+        void RunL();
+
+        /**
+        * @see CActive::DoCancel.
+        */
+        void DoCancel();
+
+        /**
+        * @see CActive::RunError.
+        */
+        TInt RunError( TInt aResult );
+
+    private:
+
+        // Ref to dialog.
+        CVtUiExecuteCmdDialog& iDialog;
+
+        // Ref to command handler.
+        MVtEngCommandHandler& iCommandHandler;
+
+        // Command to be executed.
+        TVtEngCommandId iCommand;
+
+        // Owned parameters.
+        TDesC8* iCommandParams;
+
+        // ETrue if command has been performed.
+        TBool iCommandPerformed;
+
+    };
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CVtUiExecuteCmdDialog::CVtUiExecuteCmdDialog
+// -----------------------------------------------------------------------------
+//
+CVtUiExecuteCmdDialog::CVtUiExecuteCmdDialog(
+        CEikDialog** aSelfPtr,
+        MVtEngCommandHandler& aCommandHandler,
+        MVtUiEngineCommandManager& aCommandManager )
+    : CVtUiBlankDialog( aSelfPtr ),
+      iCommandHandler( aCommandHandler ),
+      iCommandManager( aCommandManager )
+    {
+    __VTPRINT2( DEBUG_GEN, "Ui.Dlg.Ctor this=%d", (TInt)this )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiExecuteCmdDialog::~CVtUiExecuteCmdDialog
+// -----------------------------------------------------------------------------
+//
+CVtUiExecuteCmdDialog::~CVtUiExecuteCmdDialog()
+    {
+    __VTPRINTENTER( "VtUiExCmdDlg.~" )
+    __VTPRINT2( DEBUG_GEN, "VtUiExCmdDlg.~ this=%d", (TInt)this )
+    if ( iActiveCmd )
+        {
+        if ( !iCommandCompleted && iActiveCmd->CommandPerformed() )
+            {
+            iCommandHandler.CancelCommand( iCommand ); // ignore error
+            }
+        }
+    delete iCommandParams;
+    delete iActiveCmd;
+
+    iCommandManager.RemoveObserver( *this );
+    __VTPRINTEXIT( "VtUiExCmdDlg.~" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiExecuteCmdDialog::ExecuteCmdLD
+// -----------------------------------------------------------------------------
+//
+void CVtUiExecuteCmdDialog::ExecuteCmdLD(
+        const TVtEngCommandId aCommandId,
+        TDesC8* aParams,
+        TRequestStatus* aRequest )
+    {
+    __VTPRINTENTER( "VtUiExCmdDlg.ExecuteCmd" )
+    __VTPRINT2( DEBUG_GEN, "Ui.Dlg.Exec this=%d", (TInt)this )
+    iCommand = aCommandId;
+    CleanupStack::PushL( this );
+    if ( aParams )
+        {
+        iCommandParams = aParams->AllocL();
+        }
+
+    iCommandManager.AddObserverL( *this );
+    CleanupStack::Pop( this );
+
+    CVtUiBlankDialog::ExecuteDialogLD( aRequest );
+    __VTPRINTEXIT( "VtUiExCmdDlg.ExecuteCmd" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiExecuteCmdDialog::PostLayoutDynInitL
+// -----------------------------------------------------------------------------
+//
+void CVtUiExecuteCmdDialog::PostLayoutDynInitL()
+    {
+    __VTPRINTENTER( "VtUiExCmdDlg.PostL" )
+    iActiveCmd =
+        new ( ELeave ) CActiveCmd(
+            *this, iCommandHandler, iCommand, iCommandParams );
+    iActiveCmd->Start();
+    __VTPRINTEXITR( "VtUiExCmdDlg.PostL this=%d", (TInt)this )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiExecuteCmdDialog::HandleVTCommandPerformedL
+// -----------------------------------------------------------------------------
+//
+void CVtUiExecuteCmdDialog::HandleVTCommandPerformedL(
+        TVtEngCommandId aCommand,
+        const TInt aError )
+    {
+    __VTPRINTENTER( "VtUiExCmdDlg.HandleVTCommandPerformed" )
+    __VTPRINT2( DEBUG_GEN, "VtUiExCmdDlg.cmd.%d", aCommand )
+    __VTPRINT2( DEBUG_GEN, "VtUiExCmdDlg.err.%d", aError )
+    if ( iActiveCmd && ( aCommand == iCommand ) )
+        {
+        if ( iActiveCmd->CommandPerformed() && !iCommandCompleted )
+            {
+            __VTPRINT( DEBUG_GEN, "VtUiExCmdDlg.match" )
+            iCommandCompleted = ETrue;
+            // Corrupted images may leave during initialization, thus we have
+            // to mask out errors when they happen during share initialize.
+            // Error code is handled correctly in CVtUiAppUi::CEventObserver::
+            // HandleVTCommandPerformedL() method, thus it will not be ignored.
+            if ( aCommand == KVtEngInitializeShareImage )
+                {
+                Complete( KErrNone );
+                }
+            else
+                {
+                Complete( aError );
+                }
+            }
+        }
+    __VTPRINTEXIT( "VtUiExCmdDlg.HandleVTCommandPerformed" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiExecuteCmdDialog::HandleExecuteFailed
+// -----------------------------------------------------------------------------
+//
+void CVtUiExecuteCmdDialog::HandleExecuteFailed( TInt aResult )
+    {
+    __VTPRINT3( DEBUG_GEN, "VtUiExCmdDlg.Fail this=%d res=%d",
+        (TInt)this, aResult )
+    Complete( aResult );
+    }
+
+// Implementation of CVtUiExecuteCmdDialog::CActiveCmd:
+
+// -----------------------------------------------------------------------------
+// CVtUiExecuteCmdDialog::CActiveCmd::CActiveCmd
+// -----------------------------------------------------------------------------
+//
+CVtUiExecuteCmdDialog::CActiveCmd::CActiveCmd(
+        CVtUiExecuteCmdDialog& aDialog,
+        MVtEngCommandHandler& aCommandHandler,
+        TVtEngCommandId aCommand,
+        TDesC8* aParams)
+    : CActive( CActive::EPriorityHigh ),
+      iDialog( aDialog ),
+      iCommandHandler( aCommandHandler ),
+      iCommand( aCommand ),
+      iCommandParams( aParams )
+    {
+    CActiveScheduler::Add( this );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiExecuteCmdDialog::CActiveCmd::~CActiveCmd
+// -----------------------------------------------------------------------------
+//
+CVtUiExecuteCmdDialog::CActiveCmd::~CActiveCmd()
+    {
+    __VTPRINT2( DEBUG_GEN, "VtUiExCmdDlgCmd.Dtor this=%d", (TInt)this )
+    Cancel();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiExecuteCmdDialog::CActiveCmd::Start
+// -----------------------------------------------------------------------------
+//
+void CVtUiExecuteCmdDialog::CActiveCmd::Start()
+    {
+    __VTPRINTENTER( "VtUiExCmdDlgCmd.Start" )
+    TRequestStatus* status = &iStatus;
+    User::RequestComplete( status, KErrNone );
+    SetActive();
+    __VTPRINTEXITR( "VtUiExCmdDlgCmd.Start this=%d", (TInt)this )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiExecuteCmdDialog::CActiveCmd::CommandPerformed
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiExecuteCmdDialog::CActiveCmd::CommandPerformed() const
+    {
+    __VTPRINT3( DEBUG_GEN, "VtUiExCmdDlgCmd.Perf this=%d,cmd=%d",
+        (TInt)this, iCommandPerformed )
+    return iCommandPerformed;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiExecuteCmdDialog::CActiveCmd::RunL
+// -----------------------------------------------------------------------------
+//
+void CVtUiExecuteCmdDialog::CActiveCmd::RunL()
+    {
+    __VTPRINTENTER( "VtUiExCmdDlgCmd.RunL" )
+    iCommandHandler.ExecuteL( iCommand, iCommandParams );
+    iCommandPerformed = ETrue;
+    __VTPRINTEXITR( "VtUiExCmdDlgCmd.RunL this=%d", (TInt)this )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiExecuteCmdDialog::CActiveCmd::DoCancel
+// -----------------------------------------------------------------------------
+//
+void CVtUiExecuteCmdDialog::CActiveCmd::DoCancel()
+    {
+    __VTPRINT2( DEBUG_GEN, "VtUiExCmdDlgCmd.DoCnl this=%d", (TInt)this )
+    // Request is completed immediately.
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiExecuteCmdDialog::CActiveCmd::RunError
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiExecuteCmdDialog::CActiveCmd::RunError( TInt aResult )
+    {
+    __VTPRINTENTER( "VtUiExCmdDlgCmd.RunError" )
+    // Exception was raised in RunL. Inform the dialog to close itself.
+    iDialog.HandleExecuteFailed( aResult );
+    __VTPRINTEXITR( "VtUiExCmdDlgCmd.RunError this=%d", (TInt)this )
+    return KErrNone;
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiMainControl.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,278 @@
+/*
+* Copyright (c) 2004 - 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CVtUiMainControl control class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "CVtUiMainControl.h"
+#include    "VtUiLayout.h"
+#include    <AknsUtils.h>
+#include    <AknsDrawUtils.h>
+#include    <cvtlogger.h>
+#include    <featmgr.h>
+#include    "tvtuistates.h"
+#include    "tVtuifeaturevariation.h"
+#include    "CVtUiAppUi.h"
+#include    "CVtUiContextControl.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CVtUiMainControl::NewL
+// -----------------------------------------------------------------------------
+CVtUiMainControl* CVtUiMainControl::NewL( CVtUiBitmapManager& aBitmapManager,
+        CVtUiAppUi& aAppUi,
+        TVtUiStates& aUiStates )
+    {
+    __VTPRINTENTER( "MainCtrl.NewL" )
+    CVtUiMainControl* self =
+        new ( ELeave ) CVtUiMainControl( aBitmapManager, aAppUi, aUiStates );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "MainCtrl.NewL" )
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMainControl::CVtUiMainControl
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CVtUiMainControl::CVtUiMainControl( CVtUiBitmapManager& aBitmapManager,
+        CVtUiAppUi& aAppUi, TVtUiStates& aUiStates ) : 
+        CVtUiVideoControlBase( aBitmapManager ), iAppUi( aAppUi ),
+        iUiStates ( aUiStates ), iMCPointerEvent( EFalse )
+    {
+    __VTPRINTENTER( "MainCtrl.Ctor" )
+    SetRenderingHint( ESkinnedBackground );
+    __VTPRINTEXIT( "MainCtrl.Ctor" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMainControl::ConstructL
+// Symbian 2nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CVtUiMainControl::ConstructL()
+    {
+    __VTPRINTENTER( "MainCtrl.ConstructL" )
+    BaseConstructL();
+    iBlindId =
+        BitmapManager().AddBitmapL(
+            EVtUiBitmap_qgn_indi_call_video_blind_in,
+            EFalse );
+    BitmapManager().SetAspectRatio( iBlindId, EFalse );
+    iBlindMaskId =
+        BitmapManager().AddBitmapL(
+            EVtUiBitmap_qgn_indi_call_video_blind_in_mask_icon,
+            EFalse );
+    BitmapManager().SetAspectRatio( iBlindMaskId, EFalse );
+    
+    // For set non focus and recieve all point event
+    SetNonFocusing();
+    ClaimPointerGrab( ETrue );
+    
+    __VTPRINTEXIT( "MainCtrl.ConstructL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMainControl::~CVtUiMainControl
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CVtUiMainControl::~CVtUiMainControl()
+    {
+    __VTPRINTENTER( "MainCtrl.~" )
+    BitmapManager().RemoveBitmap( iBlindId );
+    BitmapManager().RemoveBitmap( iBlindMaskId );
+    __VTPRINTEXIT( "MainCtrl.~" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMainControl::HandlePointerEventL
+// -----------------------------------------------------------------------------
+//
+void CVtUiMainControl::HandlePointerEventL( const TPointerEvent& aPointerEvent )
+    {
+    __VTPRINTENTER( "MainCtrl.HandlePointerEventL" )
+    // Let context control handle this
+    iMCPointerEvent = ETrue;
+    iAppUi.ContextControl().HandlePointerEventL( aPointerEvent );
+    iMCPointerEvent = EFalse;
+    __VTPRINTEXIT( "MainCtrl.HandlePointerEventL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMainControl::HandleSizeChanged
+// -----------------------------------------------------------------------------
+//
+void CVtUiMainControl::HandleSizeChanged()
+    {
+    __VTPRINTENTER( "MainCtrl.HandleSizeChanged" )
+    const TRect mainPaneRect( Rect() );
+    TRect screen;
+    VtUiLayout::GetApplicationParentRect( screen );
+
+    // blind icon and mask
+    TAknWindowLineLayout blind;
+    VtUiLayout::GetSecondWindowDisabledIconLayout( blind );
+    iBlindLayout.LayoutRect( screen, blind );
+    const TSize blindSize( iBlindLayout.Rect().Size() );
+    BitmapManager().SetSize( iBlindId, blindSize );
+    BitmapManager().SetSize( iBlindMaskId, blindSize );
+
+    // stream
+    TAknWindowLineLayout stream;
+    VtUiLayout::GetSecondWindowStreamWholeLayout( stream,
+         iUiStates.IsToolbarAvailable(), iSQCifRemote );
+
+    iStreamLayoutRect.LayoutRect( mainPaneRect, stream );
+
+    __VTPRINTEXIT( "MainCtrl.HandleSizeChanged" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMainControl::DrawWaitingText
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiMainControl::DrawWaitingText( CWindowGc& aGc ) const
+    {
+    __VTPRINTENTER( "MainCtrl.DrawWaitingText" )
+    TBool wasDrawn( EFalse );
+    if ( !iSQCifRemote)
+        {
+        wasDrawn = CVtUiVideoControlBase::DrawWaitingText( aGc );
+        }
+    __VTPRINTEXITR( "MainCtrl.DrawWaitingText %d", wasDrawn )
+    return wasDrawn;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMainControl::StreamBlitPosition
+// -----------------------------------------------------------------------------
+//
+TPoint CVtUiMainControl::StreamBlitPosition() const
+    {
+    __VTPRINTENTER( "MainCtrl.StreamBlitPosition" )
+    const TSize videoSize( iStreamBitmap->SizeInPixels() );
+    const TSize streamSize( iStreamLayoutRect.Rect().Size() );
+    __VTPRINTEXIT( "MainCtrl.StreamBlitPosition" )
+    return AdjustPointForDP( iStreamLayoutRect.Rect().iTl );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMainControl::StreamClippingRect
+// -----------------------------------------------------------------------------
+//
+TRect CVtUiMainControl::StreamClippingRect() const
+    {
+    __VTPRINTENTER( "MainCtrl.StreamClippingRect" )
+    __VTPRINTEXIT( "MainCtrl.StreamClippingRect" )
+    return AdjustRectForDP( iStreamLayoutRect.Rect() );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMainControl::BlindImage
+// -----------------------------------------------------------------------------
+//
+CFbsBitmap* CVtUiMainControl::BlindImage() const
+    {
+    __VTPRINTENTER( "MainCtrl.BlindImage" )
+    __VTPRINTEXIT( "MainCtrl.BlindImage" )
+    return Bitmap( iBlindId );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMainControl::BlindMask
+// -----------------------------------------------------------------------------
+//
+CFbsBitmap* CVtUiMainControl::BlindMask() const
+    {
+    __VTPRINTENTER( "MainCtrl.BlindMask" )
+    __VTPRINTEXIT( "MainCtrl.BlindMask" )
+    return Bitmap( iBlindMaskId );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiMainControl::BlindBlitPosition
+// ---------------------------------------------------------------------------
+//
+TPoint CVtUiMainControl::BlindBlitPosition() const
+    {
+    __VTPRINTENTER( "CVtUiMainControl.BlindBlitPosition" )
+    __VTPRINTEXIT( "CVtUiMainControl.BlindBlitPosition" )
+    return iBlindLayout.Rect().iTl;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiMainControl::WaitingTextLayout
+// ---------------------------------------------------------------------------
+//
+TAknTextLineLayout CVtUiMainControl::WaitingTextLayout( TInt aLine )
+    {
+    __VTPRINTENTER( "MainCtrl.WaitingTextLayout" )
+    TAknTextLineLayout textLayout;
+    VtUiLayout::GetSecondWindowWaitingTextLayout( textLayout,
+        aLine ? EFalse : ETrue );
+    __VTPRINTEXIT( "MainCtrl.WaitingTextLayout" )
+    return textLayout;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMainControl::SupportSQCif
+// -----------------------------------------------------------------------------
+//
+void CVtUiMainControl::SupportSQCif( TBool aIsSupported )
+    {
+    __VTPRINTENTER( "MainCtrl.SupportSQCif" )
+    const TBool layoutUpdateRequired( aIsSupported != iSQCifRemote );
+    iSQCifRemote = aIsSupported;
+    if ( layoutUpdateRequired )
+        {
+        HandleSizeChanged();
+        }
+    __VTPRINTEXITR( "MainCtrl.SupportSQCif %d", iSQCifRemote )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMainControl::LayoutRemoteVideo
+// -----------------------------------------------------------------------------
+//
+void CVtUiMainControl::LayoutRemoteVideo( )
+    {    
+    __VTPRINTENTER( "MainCtrl.LayoutRemoteVideo" )
+    if ( NULL != iRemoteVideoControl && iRemoteVideoControl->IsVisible() )
+        {
+        TRect rectRemoteVideo(StreamClippingRect());
+        rectRemoteVideo.Move(PositionRelativeToScreen());
+        iRemoteVideoControl->SetExtent(rectRemoteVideo.iTl,rectRemoteVideo.Size());
+        }
+    __VTPRINTEXIT( "MainCtrl.LayoutRemoteVideo" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMainControl::IsMainControlPointerEvent
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiMainControl::IsMainControlPointerEvent()
+    {
+    return iMCPointerEvent;
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiMutedControl.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,159 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CVtUiMutedControl control class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "CVtUiMutedControl.h"
+#include    "VtUiLayout.h"
+#include    <eiklabel.h>
+#include    <AknsUtils.h>
+#include    <AknsDrawUtils.h>
+#include    <StringLoader.h>
+#include    <videotelui.rsg>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CVtUiMutedControl::CVtUiMutedControl
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CVtUiMutedControl::CVtUiMutedControl()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMutedControl::ConstructL
+// Symbian 2nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CVtUiMutedControl::ConstructL()
+    {
+    HBufC* mutedText = 
+        StringLoader::LoadLC( R_VIDEOTELUI_QTN_INCAL_MUTED_PANE );
+
+    iMutedLabel = new ( ELeave ) CEikLabel;
+    iMutedLabel->SetContainerWindowL( *this );
+    iMutedLabel->SetTextL( *mutedText );
+
+    CleanupStack::PopAndDestroy( mutedText );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMutedControl::~CVtUiMutedControl
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CVtUiMutedControl::~CVtUiMutedControl()
+    {
+    AknsUtils::DeregisterControlPosition( this );
+
+    delete iMutedLabel;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMutedControl::HandleResourceChange
+// -----------------------------------------------------------------------------
+//
+void CVtUiMutedControl::HandleResourceChange(
+        TInt aType )
+    {
+    CCoeControl::HandleResourceChange( aType );
+
+    if ( aType == KAknsMessageSkinChange )
+        {
+        SizeChanged();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMutedControl::Draw
+// -----------------------------------------------------------------------------
+//
+void CVtUiMutedControl::Draw( const TRect& /*aRect*/ ) const
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMutedControl::SizeChanged
+// -----------------------------------------------------------------------------
+//
+void CVtUiMutedControl::SizeChanged()
+    {
+    AknsUtils::RegisterControlPosition( this );
+
+    TRect naviPane( Rect() );
+    if ( naviPane.IsEmpty() )
+        {
+        return;
+        }
+
+    TAknTextLineLayout label;
+    VtUiLayout::GetMutedTextLayout( label );
+
+    AknLayoutUtils::LayoutLabel( iMutedLabel, naviPane, label );
+
+    // Update label color
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();        
+    TRgb skinColor;
+
+    TInt error = 
+        AknsUtils::GetCachedColor( 
+            skin, 
+            skinColor, 
+            KAknsIIDQsnTextColors,
+            EAknsCIQsnTextColorsCG2 );
+
+    if ( ( error == KErrNone ) && iMutedLabel )
+        {
+        // Ignore error
+        TRAP_IGNORE(  
+            iMutedLabel->OverrideColorL( EColorLabelText, skinColor ) );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMutedControl::PositionChanged
+// -----------------------------------------------------------------------------
+//
+void CVtUiMutedControl::PositionChanged()
+    {
+    AknsUtils::RegisterControlPosition( this );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMutedControl::CountComponentControls
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiMutedControl::CountComponentControls() const
+    {
+    return 1; // one label
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMutedControl::ComponentControl
+// -----------------------------------------------------------------------------
+//
+CCoeControl* CVtUiMutedControl::ComponentControl(
+        TInt /*aIndex*/ ) const
+    {
+    return iMutedLabel;
+    }
+
+//  End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiNaviPane.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,364 @@
+/*
+* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CVtUiNaviPane class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "CVtUiNaviPane.h"
+#include    "CVtUiNaviPaneControl.h"
+#include    "CVtUiMutedControl.h"
+#include    "CVtUiAppUi.h"
+
+#include    <cvtlogger.h>
+#include    <avkon.rsg>
+#include    <aknnavi.h>
+#include    <aknnavide.h>
+#include    <featmgr.h>
+#include	"tVtuifeaturevariation.h"
+
+// CONSTANTS
+
+// Timeout after which voice volume bar is switched back to indicators.
+const TInt KVtUiVoiceVolumeTimeout = 2000000;
+
+// LOCAL FUNCTION PROTOTYPES
+
+/**
+* Creates navigation decorator.
+* @param aNaviPane reference to navi pane.
+* @param aControl control to be decorated, ownership passed.
+* @return new navigation decorator instance.
+*/
+CAknNavigationDecorator* CreateDecoratorL(
+    CAknNavigationControlContainer& aNaviPane,
+    CCoeControl* aControl );
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CreateDecoratorL Creates navigation decorator.
+// Returns: new navigation decorator instance.
+// -----------------------------------------------------------------------------
+//
+CAknNavigationDecorator* CreateDecoratorL(
+        CAknNavigationControlContainer& aNaviPane,
+        CCoeControl* aControl )
+    {
+    CAknNavigationDecorator* decoratedFolder =
+        CAknNavigationDecorator::NewL(
+            &aNaviPane,
+            aControl,
+            CAknNavigationDecorator::ENotSpecified );
+
+    CleanupStack::PushL( decoratedFolder );
+    decoratedFolder->SetContainerWindowL( aNaviPane );
+    aControl->SetContainerWindowL( *decoratedFolder );
+    CleanupStack::Pop( decoratedFolder );
+
+    decoratedFolder->MakeScrollButtonVisible( EFalse );
+
+    return decoratedFolder;
+    }
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPane::CVtUiNaviPane
+// -----------------------------------------------------------------------------
+//
+CVtUiNaviPane::CVtUiNaviPane(
+        CAknNavigationControlContainer& aNaviPane,
+        CVtUiAppUi& aAppUi )
+    : CActive( CActive::EPriorityStandard ),
+      iNaviPane( aNaviPane ),
+      iAppUi ( aAppUi )
+    {
+    CActiveScheduler::Add( this );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPane::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CVtUiNaviPane::ConstructL( )
+    {
+    // Create the navi pane indicator (call duration).
+        {
+        CVtUiNaviPaneControl* naviControl =
+            new ( ELeave ) CVtUiNaviPaneControl( *this );
+        CleanupStack::PushL( naviControl );
+        naviControl->ConstructL();
+        CleanupStack::Pop( naviControl );
+
+        iMainIndicators =
+            CreateDecoratorL( iNaviPane, naviControl );
+
+        iNaviPaneControl = naviControl;
+        }
+
+    // Create muted indicator.
+        {
+        CVtUiMutedControl* naviControl =
+            new ( ELeave ) CVtUiMutedControl;
+        CleanupStack::PushL( naviControl );
+        naviControl->ConstructL();
+        CleanupStack::Pop( naviControl );
+
+        iMutedIndicator =
+            CreateDecoratorL( iNaviPane, naviControl );
+        iMutedControl = naviControl;
+        }
+
+    User::LeaveIfError( iTimer.CreateLocal() );
+
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPane::NewL
+// -----------------------------------------------------------------------------
+//
+CVtUiNaviPane* CVtUiNaviPane::NewL(
+        CAknNavigationControlContainer& aNaviPane,
+        CVtUiAppUi& aAppUi )
+    {
+    CVtUiNaviPane* self =
+        new ( ELeave ) CVtUiNaviPane(
+            aNaviPane, aAppUi );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPane::~CVtUiNaviPane
+// -----------------------------------------------------------------------------
+//
+CVtUiNaviPane::~CVtUiNaviPane()
+    {
+    Cancel();
+
+    delete iMainIndicators;
+    delete iMutedIndicator;
+
+    iTimer.Close();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPane::SetCurrentSpeaker
+// Parameter aLoudspeaker defines which speaker is used.
+// ETrue for loudspeaker, EFalse for handset.
+// -----------------------------------------------------------------------------
+//
+void CVtUiNaviPane::SetCurrentSpeaker( const TBool aLoudspeaker )
+    {
+    if( iLoudspeaker != aLoudspeaker )
+        {
+        Cancel();
+        if( iCallDurationEnabled || iMicrophoneMuted )
+            {
+            iSliderType = ENone;
+            }
+        }
+    iLoudspeaker = aLoudspeaker;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPane::SetMuted
+// -----------------------------------------------------------------------------
+//
+void CVtUiNaviPane::SetMuted(
+        const TBool aStatus )
+    {
+    __VTPRINT2( DEBUG_GEN, "NaviPane.SetMuted.aStatus=%d", aStatus )
+    if( iMicrophoneMuted != aStatus )
+        {
+        Cancel();
+        // if volume indicator is shown when audio is umuted
+        // volume indicator won't be dismissed and call duration
+        // will not be shown
+        if( iCallDurationEnabled || aStatus )
+            {
+            iSliderType = ENone;
+            }
+        }
+    iMicrophoneMuted = aStatus;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPane::SetCallDuration
+// -----------------------------------------------------------------------------
+//
+void CVtUiNaviPane::SetCallDuration(
+        const TTimeIntervalSeconds& aDuration,
+        const TBool aEnabled )
+    {
+    iCallDurationEnabled = aEnabled;
+    iNaviPaneControl->SetCallDuration( aDuration, aEnabled );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPane::CommitL
+//
+// Priority order of different navi pane elements is the following:
+// 1. Muted indicator
+// 2. Main indicators (call duration)
+//
+// -----------------------------------------------------------------------------
+//
+void CVtUiNaviPane::CommitL()
+    {
+    CAknNavigationDecorator* selected = DefaultIndicator();
+
+    PushL( selected );
+
+    // If current is main indicators, then update now.
+    if ( iCurrent == iMainIndicators )
+        {
+        iNaviPaneControl->CommitL();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPane::GetSpeakerVolume
+// -----------------------------------------------------------------------------
+//
+void CVtUiNaviPane::GetSpeakerVolume(
+        const TBool ,
+        TInt& aValue ) const
+    {
+    aValue = 0;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPane::HandleResourceChange
+// -----------------------------------------------------------------------------
+//
+void CVtUiNaviPane::HandleResourceChange(
+        TInt aType )
+    {
+    // iCurrent will get event through navi pane.
+    if ( iMainIndicators != iCurrent )
+        {
+        iMainIndicators->HandleResourceChange( aType );
+        iNaviPaneControl->HandleResourceChange( aType );
+        }
+    if ( iMutedIndicator != iCurrent )
+        {
+        iMutedIndicator->HandleResourceChange( aType );
+        iMutedControl->HandleResourceChange( aType );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPane::DoCancel
+// -----------------------------------------------------------------------------
+//
+void CVtUiNaviPane::DoCancel()
+    {
+    iTimer.Cancel();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPane::RunL
+// -----------------------------------------------------------------------------
+//
+void CVtUiNaviPane::RunL()
+    {
+    iSliderType = ENone;
+    CAknNavigationDecorator* selected = DefaultIndicator();
+    if ( selected )
+        {
+        PushL( selected );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPane::PushAfterTimeout
+// -----------------------------------------------------------------------------
+//
+void CVtUiNaviPane::PushAfterTimeout()
+    {
+    Cancel();
+    iTimer.After( iStatus, KVtUiVoiceVolumeTimeout );
+    SetActive();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPane::PushL
+// -----------------------------------------------------------------------------
+//
+void CVtUiNaviPane::PushL( CAknNavigationDecorator* aNew )
+    {
+    if ( !aNew )
+        {
+        if ( iCurrent )
+            {
+            iNaviPane.Pop();
+            iCurrent = NULL;
+            }
+        else
+            {
+            iNaviPane.PushDefaultL();
+            }
+        }
+    else if ( iCurrent != aNew )
+        {
+        // If current not defined, then push to navi pane. This should be called
+        // during construction.
+        if ( !iCurrent )
+            {
+            iNaviPane.PushL( *aNew );
+            iCurrent = aNew;
+            }
+        // Otherwise replace the old one.
+        else
+            {
+            iNaviPane.ReplaceL( *iCurrent, *aNew );
+            iCurrent = aNew;
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPane::DefaultIndicator
+// Returns default indicator. Note that this does not include temporary
+// zoom indicator.
+// -----------------------------------------------------------------------------
+//
+CAknNavigationDecorator* CVtUiNaviPane::DefaultIndicator() const
+    {
+    CAknNavigationDecorator* selected = NULL;
+
+    if ( IsActive() )
+        {
+        selected = iMainIndicators;
+        }
+    else if ( iMicrophoneMuted && iSliderType != EVolume && iSliderType != EZoom )
+        {
+        selected = iMutedIndicator;
+        }
+     else if ( iCallDurationEnabled && iSliderType != EVolume && iSliderType != EZoom )
+        {
+        selected = iMainIndicators;
+        }
+
+    return selected;
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiNaviPaneControl.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,256 @@
+/*
+* Copyright (c) 2004, 2005 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CVtUiNaviPaneControl control class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "CVtUiNaviPaneControl.h"
+#include    "CVtUiNaviPane.h"
+#include    "VtUiLayout.h"
+#include    <AknsUtils.h>
+#include    <AknsDrawUtils.h>
+
+// CONSTANTS
+
+// There are sixty seconds in one minute.
+const TInt KVtUiOneMinuteInSeconds = 60;
+
+// There are sixty minutes in one hour.
+const TInt KVtUiOneHourInSeconds = 3600;
+
+// Maximum duration is 99:59:59.
+const TInt KVtUiMaxDurationInSeconds = 
+    99*KVtUiOneHourInSeconds + 
+    59*KVtUiOneMinuteInSeconds +
+    59;
+
+// Amount of digits.
+const TInt KVtUiDigits = 10;
+
+// Index of time separator.
+const TInt KVtUiSeparatorTime = 0;
+
+// Index of hour separator.
+const TInt KVtUiSeparatorHour = 1;
+
+// Index of minute separator.
+const TInt KVtUiSeparatorMinute = 2;
+
+// Index of second separator.
+const TInt KVtUiSeparatorSecond = 3;
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPaneControl::CVtUiNaviPaneControl
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CVtUiNaviPaneControl::CVtUiNaviPaneControl( CVtUiNaviPane& aNaviPane )
+    : iNaviPane ( aNaviPane )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPaneControl::ConstructL
+// Symbian 2nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CVtUiNaviPaneControl::ConstructL()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPaneControl::~CVtUiNaviPaneControl
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CVtUiNaviPaneControl::~CVtUiNaviPaneControl()
+    {
+    AknsUtils::DeregisterControlPosition( this );
+    }
+    
+// -----------------------------------------------------------------------------
+// CVtUiNaviPaneControl::SetCallDuration
+// -----------------------------------------------------------------------------
+//
+void CVtUiNaviPaneControl::SetCallDuration( 
+        const TTimeIntervalSeconds& aDuration,
+        const TBool aEnabled )
+    {
+    iCallDurationEnabled = aEnabled;
+    iCallDuration = aDuration;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPaneControl::CommitL
+// -----------------------------------------------------------------------------
+//
+void CVtUiNaviPaneControl::CommitL()
+    {
+    ReportEventL( MCoeControlObserver::EEventStateChanged ); 
+    }
+    
+// -----------------------------------------------------------------------------
+// CVtUiNaviPaneControl::Draw
+// -----------------------------------------------------------------------------
+//
+void CVtUiNaviPaneControl::Draw( const TRect& /*aRect*/ ) const
+    {
+    CWindowGc& gc = SystemGc();
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    
+    const TDesC& callDurationText = GetCallDurationText();
+    if ( callDurationText.Length() )
+        {
+        TRgb color = iCallDurationLayout.Color();
+        // Color is not updated if it not found from the skin
+        AknsUtils::GetCachedColor(
+            skin,
+            color,
+            KAknsIIDQsnTextColors,
+            EAknsCIQsnTextColorsCG2 );
+        iCallDurationLayout.DrawText( gc, callDurationText, EFalse, color );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPaneControl::SizeChanged
+// -----------------------------------------------------------------------------
+//
+void CVtUiNaviPaneControl::SizeChanged()
+    {
+    AknsUtils::RegisterControlPosition( this );
+    TAknWindowLineLayout rect;
+    TRect parent( Rect() );
+    if ( parent.IsEmpty() )
+        {
+        return;
+        }
+
+    TAknTextLineLayout text;
+    VtUiLayout::GetCallDurationTextLayout( text );
+    iCallDurationLayout.LayoutText( parent, text );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPaneControl::PositionChanged
+// -----------------------------------------------------------------------------
+//
+void CVtUiNaviPaneControl::PositionChanged()
+    {
+    AknsUtils::RegisterControlPosition( this );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPaneControl::GetCallDurationText
+// -----------------------------------------------------------------------------
+//
+const TDesC& CVtUiNaviPaneControl::GetCallDurationText() const
+    {
+    iCallDurationBuffer.Zero();
+
+    if ( iCallDurationEnabled )
+        {
+        TLocale locale;
+    
+        TInt durationInseconds = iCallDuration.Int();
+        if ( durationInseconds > KVtUiMaxDurationInSeconds )
+            {
+            durationInseconds = KVtUiMaxDurationInSeconds;
+            }
+
+        const TInt hours = durationInseconds / KVtUiOneHourInSeconds;
+        const TInt secondsLeft = 
+            durationInseconds - ( hours * KVtUiOneHourInSeconds );
+
+        const TInt minutes = secondsLeft / KVtUiOneMinuteInSeconds;
+        const TInt seconds = 
+            secondsLeft - ( minutes * KVtUiOneMinuteInSeconds );
+
+        AppendChar( 
+            iCallDurationBuffer, 
+            locale.TimeSeparator( KVtUiSeparatorTime ) );
+
+        AppendNum( 
+            iCallDurationBuffer,
+            hours );
+    
+        AppendChar( 
+            iCallDurationBuffer, 
+            locale.TimeSeparator( KVtUiSeparatorHour ) );
+    
+        AppendNum( 
+            iCallDurationBuffer, 
+            minutes );
+
+        AppendChar( 
+            iCallDurationBuffer, 
+            locale.TimeSeparator( KVtUiSeparatorMinute ) );
+
+        AppendNum( 
+            iCallDurationBuffer, 
+            seconds );
+
+        AppendChar( 
+            iCallDurationBuffer, 
+            locale.TimeSeparator( KVtUiSeparatorSecond ) );
+
+        // Convert numbers to display language.
+        AknTextUtils::DisplayTextLanguageSpecificNumberConversion( 
+            iCallDurationBuffer );
+        }
+
+    return iCallDurationBuffer;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPaneControl::AppendChar
+// -----------------------------------------------------------------------------
+//
+void CVtUiNaviPaneControl::AppendChar( 
+        TDes& aBuffer,
+        const TChar& aChar )
+    {
+    if ( aChar )
+        {
+        aBuffer.Append( aChar );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPaneControl::AppendNum
+// -----------------------------------------------------------------------------
+//
+void CVtUiNaviPaneControl::AppendNum(
+        TDes& aBuffer,
+        TInt aNumber )
+    {
+    if ( aNumber < 0 )
+        {
+        aNumber = 0;
+        }
+
+    const TInt firstDigit = ( aNumber / KVtUiDigits ) % KVtUiDigits;
+    const TInt secondDigit = ( aNumber % KVtUiDigits );
+
+    aBuffer.AppendNum( firstDigit );
+    aBuffer.AppendNum( secondDigit );
+    }
+
+//  End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiNumberEntryActivationControl.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,176 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CVtUiNumberEntryActivationControl
+*                control class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "CVtUiNumberEntryActivationControl.h"
+#include    "CVtUiAppUi.h"
+#include    "VtUiUtility.h"
+
+#include    <AknUtils.h>
+#include    <AknsUtils.h>
+#include    <eikenv.h>
+#include    <cvtlogger.h>
+
+// CONSTANTS
+
+// Control priority for the forwarder control. Above all other controls.
+extern const TInt KVtUiNumberEntryActivationPriority =
+    ECoeStackPriorityEnvironmentFilter + 100;
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryActivationControl::CVtUiNumberEntryActivationControl
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CVtUiNumberEntryActivationControl::CVtUiNumberEntryActivationControl(
+        CVtUiAppUi& aAppUi )
+    : iAppUi( aAppUi ), iIsActive ( ETrue )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryActivationControl::ConstructL
+// Symbian 2nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryActivationControl::ConstructL( const TRect& aRect )
+    {
+    // Create invisible control.
+    CreateWindowL();
+    MakeVisible( EFalse );
+    SetRect( aRect );
+
+    iAppUi.AddToStackL(
+        this,
+        KVtUiNumberEntryActivationPriority,
+        ECoeStackFlagRefusesFocus );
+    iAddedToStack = ETrue;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryActivationControl::~CVtUiNumberEntryActivationControl
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CVtUiNumberEntryActivationControl::~CVtUiNumberEntryActivationControl()
+    {
+    AknsUtils::DeregisterControlPosition( this );
+
+    if ( iAddedToStack )
+        {
+        iAppUi.RemoveFromStack( this );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryActivationControl::Draw
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryActivationControl::Draw( const TRect& /*aRect*/ ) const
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryActivationControl::SizeChanged
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryActivationControl::SizeChanged()
+    {
+    AknsUtils::RegisterControlPosition( this );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryActivationControl::PositionChanged
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryActivationControl::PositionChanged()
+    {
+    AknsUtils::RegisterControlPosition( this );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryActivationControl::OfferKeyEventL
+// -----------------------------------------------------------------------------
+//
+TKeyResponse CVtUiNumberEntryActivationControl::OfferKeyEventL(
+        const TKeyEvent& aKeyEvent,
+        TEventCode aType )
+    {
+    __VTPRINTENTER( "VtUiNumberEntryAC.OfferKeyEvent" )
+    TBool numberEntryOpen = EFalse;
+    TChar dtmfTone;
+    TBool playDtmfTone = EFalse;
+    TKeyResponse keyResponse = EKeyWasNotConsumed;
+    if ( aKeyEvent.iScanCode == EStdKeyYes )
+        {
+        // send key is always consumed to prevent event forwarding to telephony
+        // EStdKeyYes is scan code for send key, iCode cannot be used because
+        // it is valid only when event type is EEventKey (not in up/down events)
+        keyResponse = EKeyWasConsumed;
+        }    
+    if ( !iIsActive )
+        {
+        return keyResponse;
+        }
+
+    if ( !aKeyEvent.iRepeats )
+        {
+        if ( VtUiUtility::IsDTMFEvent( aKeyEvent, dtmfTone ) )
+            {
+            numberEntryOpen = iAppUi.OpenNumberEntryL();
+            playDtmfTone = ( aType == EEventKey );
+            }
+        else if ( aKeyEvent.iCode == EKeyPhoneSend )
+            {
+            keyResponse = iAppUi.HandlePhoneSendKeyL( aKeyEvent, aType );
+            }
+        }
+
+    if ( numberEntryOpen )
+        {
+        iEikonEnv->SyncNotifyFocusObserversOfChangeInFocus();
+        }
+
+    // Tone actions are delegated to current state for validation.
+    if ( playDtmfTone )
+        {        
+        iAppUi.State().StartDtmfTone( dtmfTone );
+        }
+    else if ( aType == EEventKeyUp )
+        {
+        iAppUi.State().StopDtmfTone();
+        } 
+    __VTPRINTEXITR( "VtUiNumberEntryAC.OfferKeyEvent %d", keyResponse )
+    return keyResponse;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryActivationControl::SetActive
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryActivationControl::SetActive( TBool aIsActive )
+    {
+    iIsActive = aIsActive;
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiRemoteVideoControl.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,224 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CVtUiRemoteVideoControl
+*                control class.
+*
+*/
+
+
+// INCLUDE FILES
+#include    <cvtlogger.h>
+#include   <eikdef.h>
+#include    <AknIncallBubbleNotify.h>
+#include    <AknsLayeredBackgroundControlContext.h>
+#include    <AknUtils.h>
+#include    <aknnavi.h>
+#include    <akntitle.h>
+#include    <AknDlgShut.h>
+#include    <aknnotedialog.h>
+#include    <aknnotewrappers.h>
+#include    <akncontext.h>
+#include    <eikspane.h>
+#include    <eikmenup.h>
+#include    <eikmenub.h>
+#include    <apgcli.h>
+#include    <featmgr.h>
+#include    <videotelui.rsg>
+#include    <hlplch.h>
+#include    <apgwgnam.h>
+#include    <StringLoader.h>
+#include    <AknDef.h>
+#include    <aknconsts.h>
+#include    "CVtUiRemoteVideoControl.h"
+#include    "CVtUiAppUi.h"
+#include    "CVtUiContextControl.h"
+
+
+// Implementation of CVtUiRemoteVideoControl
+
+// -----------------------------------------------------------------------------
+// CVtUiRemoteVideoControl::NewL
+// -----------------------------------------------------------------------------
+
+CVtUiRemoteVideoControl* CVtUiRemoteVideoControl::NewL( CVtUiAppUi& aAppUi)
+    {
+    __VTPRINTENTER( "RemoteVideoControl.NewL" )
+    CVtUiRemoteVideoControl* self = new ( ELeave ) CVtUiRemoteVideoControl(aAppUi);
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "RemoteVideoControl.NewL" )
+    return self;
+
+    }
+// ---------------------------------------------------------------------------
+// CVtUiRemoteVideoControl::~CVtUiRemoteVideoControl
+// ---------------------------------------------------------------------------
+//
+CVtUiRemoteVideoControl::~CVtUiRemoteVideoControl()
+    {    
+    if ( iAppUi.EventMonitor() )
+        {
+        iAppUi.EventMonitor()->RemoveObserver( this );
+        }
+    __VTPRINTENTER( "RemoteVideoControl.~" )
+    __VTPRINTEXIT( "RemoteVideoControl.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiRemoteVideoControl::CVtUiVideoControlBase
+// ---------------------------------------------------------------------------
+//
+CVtUiRemoteVideoControl::CVtUiRemoteVideoControl( CVtUiAppUi& aAppUi):
+    iAppUi(aAppUi)
+    {
+    __VTPRINTENTER( "RemoteVideoControl.ctor" )
+    __VTPRINTEXIT( "RemoteVideoControl.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiRemoteVideoControl::BaseConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiRemoteVideoControl::ConstructL()
+    {
+    __VTPRINTENTER( "RemoteVideoControl.ConstructL" )
+    CreateWindowL();
+    SetExtent( TPoint(), TSize() );
+    ActivateL();
+	    
+    if ( iAppUi.EventMonitor() )
+        {
+        iAppUi.EventMonitor()->AddObserverL( this );
+        }	
+	
+    __VTPRINTEXIT( "RemoteVideoControl.ConstructL" )
+    }
+
+RWindow& CVtUiRemoteVideoControl::GetRWindow()
+    {
+    __VTPRINTENTER( "RemoteVideoControl.GetRWindow" )
+    __VTPRINTEXIT( "RemoteVideoControl.GetRWindow" )
+    return Window();
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiRemoteVideoControl::HandleSizeChanged
+// ---------------------------------------------------------------------------
+//
+void CVtUiRemoteVideoControl::HandleSizeChanged()
+    {
+    __VTPRINTENTER( "RemoteVideoControl.HandleSizeChanged" )    
+    __VTPRINTEXIT( "RemoteVideoControl.HandleSizeChanged" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiRemoteVideoControl::SizeChanged
+// -----------------------------------------------------------------------------
+//
+void CVtUiRemoteVideoControl::SizeChanged()
+    {
+    __VTPRINTENTER( "RemoteVideoControl.SizeChanged" )
+    TPoint position = Position();
+    TRect rect = Rect();
+    __VTPRINT2( DEBUG_GEN, "CVtUiRemoteVideoControl position x:%d", position.iX )
+    __VTPRINT2( DEBUG_GEN, "CVtUiRemoteVideoControl position y:%d", position.iY )
+    __VTPRINT2( DEBUG_GEN, "CVtUiRemoteVideoControl rect iTl.x:%d", rect.iTl.iX )
+    __VTPRINT2( DEBUG_GEN, "CVtUiRemoteVideoControl rect iTl.y:%d", rect.iTl.iY )
+    __VTPRINT2( DEBUG_GEN, "CVtUiRemoteVideoControl rect iBr.x:%d", rect.iBr.iX )
+    __VTPRINT2( DEBUG_GEN, "CVtUiRemoteVideoControl rect iBr.y:%d", rect.iBr.iY )
+
+    __VTPRINTEXIT( "RemoteVideoControl.SizeChanged" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiRemoteVideoControl::PositionChanged
+// -----------------------------------------------------------------------------
+//
+void CVtUiRemoteVideoControl::PositionChanged()
+    {
+    __VTPRINTENTER( "RemoteVideoControl.PositionChanged" )
+    __VTPRINTEXIT( "RemoteVideoControl.PositionChanged" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiRemoteVideoControl::Draw
+// ---------------------------------------------------------------------------
+//
+void CVtUiRemoteVideoControl::Draw( const TRect& ) const
+    {
+    __VTPRINTENTER( "RemoteVideoControl.Draw" )
+    //DoDraw( SystemGc() );
+    __VTPRINTEXIT( "RemoteVideoControl.Draw" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiRemoteVideoControl::DoDraw
+// ---------------------------------------------------------------------------
+//
+void CVtUiRemoteVideoControl::DoDraw( CWindowGc& aGc ) const
+    {
+    __VTPRINTENTER( "RemoteVideoControl.DoDraw(gc)" )
+ 
+   aGc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+   aGc.SetPenStyle( CGraphicsContext::ENullPen );
+   aGc.SetBrushColor( KRgbRed );
+   aGc.DrawRect( Rect() );
+   aGc.SetBrushStyle( CGraphicsContext::ENullBrush );
+    
+    TPoint position = Position();
+    TRect rect = Rect();
+    __VTPRINT2( DEBUG_GEN, "CVtUiRemoteVideoControl position x:%d", position.iX )
+    __VTPRINT2( DEBUG_GEN, "CVtUiRemoteVideoControl position y:%d", position.iY )
+    __VTPRINT2( DEBUG_GEN, "CVtUiRemoteVideoControl rect iTl.x:%d", rect.iTl.iX )
+    __VTPRINT2( DEBUG_GEN, "CVtUiRemoteVideoControl rect iTl.y:%d", rect.iTl.iY )
+    __VTPRINT2( DEBUG_GEN, "CVtUiRemoteVideoControl rect iBr.x:%d", rect.iBr.iX )
+    __VTPRINT2( DEBUG_GEN, "CVtUiRemoteVideoControl rect iBr.y:%d", rect.iBr.iY )
+
+    __VTPRINTEXIT( "RemoteVideoControl.DoDraw(gc)" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiRemoteVideoControl::HandlePointerEventL
+// -----------------------------------------------------------------------------
+//
+void CVtUiRemoteVideoControl::HandlePointerEventL(
+    const TPointerEvent& aPointerEvent)
+    {
+    __VTPRINTENTER( "RemoteVideoControl.HandlePointerEventL" )
+    
+    if(iAppUi.ContextControl().RemoteVideoControl())
+        {
+        iAppUi.ContextControl().HandlePointerEventL(aPointerEvent);
+        }
+    
+    __VTPRINTEXIT( "RemoteVideoControl.HandlePointerEventL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiRemoteVideoControl::HandleWsEventL
+// -----------------------------------------------------------------------------
+//
+void CVtUiRemoteVideoControl::HandleWsEventL( const TWsEvent& aEvent,
+    CCoeControl* aDestination )
+    {
+    __VTPRINTENTER( "RemoteVideoControl.HandleWsEventL" )
+    
+    if(iAppUi.ContextControl().RemoteVideoControl())
+    {
+    iAppUi.ContextControl().HandleWsEventL( aEvent, aDestination );
+    }    
+    
+    __VTPRINTEXIT( "RemoteVideoControl.HandleWsEventL" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/CVtUiZoomControl.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,856 @@
+/*
+* Copyright (c) 2004, 2005 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CVtUiZoomControl control class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "CVtUiZoomControl.h"
+#include    "VtUiLayout.h"
+#include    <AknsUtils.h>
+#include    <AknsDrawUtils.h>
+#include    "videotelui.hrh"
+
+#include    <cvtlogger.h>
+// CONSTANTS
+
+// Maximum amount of steps.
+const TInt KVtUiZoomControlMaxSteps = 11;
+
+// Minimum amount of steps.
+const TInt KVtUiZoomControlMinSteps = 1;
+
+// Fixed point position.
+const TInt KVtUiZoomControlFixed = 16;
+
+// Fixed point number, corresponds to one.
+const TInt KVtUiZoomControlOne = ( 1 << KVtUiZoomControlFixed );
+
+// Amount of partial bits. It is expected that 
+// KVtUiZoomControlFixed >= KVtUiZoomControlPartial.
+const TInt KVtUiZoomControlPartial = 8;
+
+// Maximum duration of zooming from minimum to maximum, in microseconds.
+const TInt KVtUiZoomDurationMax = 2000000;
+
+// Maximum duration to increase zoom step by one, in microseconds.
+const TInt KVtUiZoomStepDurationMax = 200000;
+
+// Index of transparent color.
+const TInt KVtUiZoomTransparent = 0;
+
+// MODULE DATA STRUCTURES
+
+/**
+* Inner class to hold everything related to one bitmap.
+* @since Series 60 2.6
+*/
+class CVtUiZoomControl::CBitmap
+    : public CBase
+    {
+    public: // Constructors and destructors.
+
+        /**
+        * Constructor.
+        */
+        CBitmap();
+
+        /**
+        * Symbian OS constructor.
+        * @param aSize size of the bitmap.
+        * @param aMode display mode of the bitmap.
+        */
+        void ConstructL( 
+            const TSize& aSize,
+            const TDisplayMode aMode );
+
+        /**
+        * Destructor.
+        */
+        ~CBitmap();
+
+    public:
+
+        /**
+        * Returns bitmap.
+        * @return bitmap, ownership not passed.
+        */
+        inline CFbsBitmap* Bitmap() const;
+
+        /**
+        * Returns bitmap context.
+        * @return bitmap context, ownership not passed.
+        */
+        inline CFbsBitGc* Context() const;
+
+    private:
+
+        // Owned bitmap.
+        CFbsBitmap* iBitmap;
+
+        // Owned device.
+        CFbsBitmapDevice* iDevice;
+
+        // Owned context.
+        CFbsBitGc* iContext;
+
+    };
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::CVtUiZoomControl
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CVtUiZoomControl::CVtUiZoomControl( CVtUiBitmapManager& aBitmapManager )
+    : iBitmapManager( aBitmapManager )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::ConstructL
+// Symbian 2nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CVtUiZoomControl::ConstructL()
+    {
+    iZoomDirId = 
+        iBitmapManager.AddBitmapsL( 
+            EVtUiBitmap_qgn_indi_zoom_dir, 
+            EVtUiBitmap_qgn_indi_zoom_dir_mask,
+            ETrue );
+    iZoomAreaId =
+        iBitmapManager.AddBitmapL( EVtUiBitmap_qgn_graf_zoom_area, EFalse );
+    iBitmapManager.SetAspectRatio( iZoomAreaId, EFalse );
+
+    iZoomMinId =
+        iBitmapManager.AddBitmapL( EVtUiBitmap_qgn_indi_zoom_min, EFalse );
+    iBitmapManager.SetAspectRatio( iZoomMinId, EFalse );
+
+    iZoomMaxId =
+        iBitmapManager.AddBitmapL( EVtUiBitmap_qgn_indi_zoom_max, EFalse );
+    iBitmapManager.SetAspectRatio( iZoomMaxId, EFalse );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::~CVtUiZoomControl
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CVtUiZoomControl::~CVtUiZoomControl()
+    {
+    AknsUtils::DeregisterControlPosition( this );
+
+    iBitmapManager.RemoveBitmap( iZoomDirId );
+    iBitmapManager.RemoveBitmap( iZoomAreaId );
+    iBitmapManager.RemoveBitmap( iZoomMinId );
+    iBitmapManager.RemoveBitmap( iZoomMaxId );
+
+    delete iZoomPartialMask;
+    delete iZoomPartialShade;
+    delete iZoomPartialShadeMask;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::SetZoomParams
+// -----------------------------------------------------------------------------
+//
+void CVtUiZoomControl::SetZoomParams( 
+        const TInt aStepCount, 
+        const TInt aCurrentStep )
+    {
+    iCurrentZoomStep = aCurrentStep;
+    iMaxZoomStep = aStepCount;
+    if ( iMaxZoomStep < 0 )
+        {
+        iMaxZoomStep = 0;
+        }
+    iCurrentZoomStep = Max( Min( iCurrentZoomStep, iMaxZoomStep ), 0 );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::CommitL
+// -----------------------------------------------------------------------------
+//
+void CVtUiZoomControl::CommitL()
+    {
+    ReportEventL( MCoeControlObserver::EEventStateChanged );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::IsZoomEnabled
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiZoomControl::IsZoomEnabled() const
+    {
+    return ( iMaxZoomStep > 0 );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::GetZoomParams
+// -----------------------------------------------------------------------------
+//
+void CVtUiZoomControl::GetZoomParams(
+        TInt& aStepCount,
+        TInt& aCurrentStep ) const
+    {
+    aStepCount = iMaxZoomStep;
+    aCurrentStep = iCurrentZoomStep;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::UpdateZoomL
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiZoomControl::UpdateZoomL()
+    {
+    const TInt oldZoomStep = iCurrentZoomStep;
+    if ( iZoomDirection )
+        {
+        __VTPRINT( DEBUG_GEN, "VtUiZmCtl.UpdZoom" )
+        TTime timeNow;
+        timeNow.UniversalTime();
+
+        const TTimeIntervalMicroSeconds duration = 
+            timeNow.MicroSecondsFrom( iZoomStartTime );
+
+        if ( duration >= TInt64( KVtUiZoomDurationMax ) )
+            {
+            // Duration is over maximum, so we can stop zooming.
+            if ( iZoomDirection > 0 )
+                {
+                iCurrentZoomStep = iMaxZoomStep;
+                }
+            else
+                {
+                iCurrentZoomStep = 0;
+                }
+
+            iZoomDirection = 0;
+            }
+        else if ( duration < TInt64( 0 ) )
+            {
+            // Clock has been changed. Stop zooming.
+            iZoomDirection = 0;
+            }
+        else
+            {
+            // Zoom is increased at least by one step per 0.2 seconds.
+            TInt64 minimum( duration.Int64() );
+            minimum /= KVtUiZoomStepDurationMax;
+
+            // Zoom is increased from minimum to maximum in 2 seconds.
+            TInt64 maximum( duration.Int64() );
+            maximum *= iMaxZoomStep;
+            maximum /= KVtUiZoomDurationMax;
+
+            // Select maximum.
+            TInt zoomStepDelta = 
+                iZoomDirection * Max( I64INT( minimum ), I64INT( maximum ) );
+            TInt zoomStep = iZoomStepStart + zoomStepDelta;
+
+            // If minimum has been reached, zooming can be stopped.
+            if ( zoomStep < 0 )
+                {
+                zoomStep = 0;
+                iZoomDirection = 0;
+                }
+            // If maximum has been reached, zooming can be stopped.
+            if ( zoomStep > iMaxZoomStep )
+                {
+                zoomStep = iMaxZoomStep;
+                iZoomDirection = 0;
+                }
+
+            iCurrentZoomStep = zoomStep;
+            }
+        __VTPRINT( DEBUG_GEN, "VtUiZmCtl.chk" )
+        }
+
+    const TBool updateNeeded = ( oldZoomStep != iCurrentZoomStep );
+    if ( updateNeeded )
+        {
+        __VTPRINT( DEBUG_GEN, "VtUiZmCtl.upd" )
+        ReportEventL( MCoeControlObserver::EEventStateChanged );
+        }
+
+    return updateNeeded;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::StopZoom
+// -----------------------------------------------------------------------------
+//
+void CVtUiZoomControl::StopZoom()
+    {
+    iZoomDirection = 0;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::OfferKeyEventL
+// -----------------------------------------------------------------------------
+//
+TKeyResponse CVtUiZoomControl::OfferKeyEventL(
+        const TKeyEvent& aKeyEvent,
+        TEventCode aType )
+    {
+    TKeyResponse response = EKeyWasNotConsumed;
+
+    if ( aKeyEvent.iScanCode == EStdKeyUpArrow ||
+         aKeyEvent.iScanCode == EStdKeyDownArrow ||
+         aKeyEvent.iCode == EKeyZoomIn ||
+         aKeyEvent.iCode == EKeyZoomOut )
+        {
+        switch ( aType )
+            {
+            case EEventKey:
+                {
+                TInt direction = +1;
+                if ( aKeyEvent.iScanCode == EStdKeyDownArrow ||
+                    aKeyEvent.iCode == EKeyZoomOut )
+                    {
+                    direction = -1;
+                    }
+        
+                if ( !aKeyEvent.iRepeats )
+                    {
+                    // Update start parameters.
+                    iZoomDirection = direction;
+                    iZoomStepStart = iCurrentZoomStep + direction;
+                    iZoomStepStart = Min( iZoomStepStart, iMaxZoomStep );
+                    iZoomStepStart = Max( iZoomStepStart, 0 );
+                    iZoomStartTime.UniversalTime();
+                    }
+                
+                (void)UpdateZoomL();
+                }
+                break;
+
+            case EEventKeyUp:
+                // Stop zooming.
+                iZoomDirection = 0;
+                break;
+
+            default:
+                // Do nothing.
+                break;
+            }
+
+        response = EKeyWasConsumed;
+        }
+
+    return response;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::HandleResourceChange
+// -----------------------------------------------------------------------------
+//
+void CVtUiZoomControl::HandleResourceChange(
+        TInt aType )
+    {
+    if ( aType == KAknsMessageSkinChange ) 
+        {
+        // We must refresh partial bitmap upon next redraw.
+        iZoomMaskPartial = KErrNotFound;
+        iZoomMaskRow = KErrNotFound;
+        }
+
+    CCoeControl::HandleResourceChange( aType );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::Draw
+// -----------------------------------------------------------------------------
+//
+void CVtUiZoomControl::Draw( const TRect& /*aRect*/ ) const
+    {   
+    __VTPRINT( DEBUG_GEN, "VtUiZmCtl.Draw" )   
+    iBitmapManager.SetSizeAndColor( 
+        iZoomDirId, 
+        iZoomDirLayout.Rect().Size(),
+        iZoomDirLayout.Color() );
+    iBitmapManager.SetSize( 
+        iZoomAreaId, 
+        iZoomAreaLayout.Rect().Size() );
+    iBitmapManager.SetSize( 
+        iZoomMinId, 
+        iZoomAreaLayout.Rect().Size() );
+    iBitmapManager.SetSize( 
+        iZoomMaxId, 
+        iZoomAreaLayout.Rect().Size() );
+
+    CFbsBitmap* maxBitmap = NULL;
+    CFbsBitmap* minBitmap = NULL;
+    CFbsBitmap* areaBitmap = NULL;
+    iBitmapManager.GetBitmap( iZoomMaxId, maxBitmap );
+    iBitmapManager.GetBitmap( iZoomMinId, minBitmap );
+    iBitmapManager.GetBitmap( iZoomAreaId, areaBitmap );
+
+    TInt full;
+    TInt partial;
+    TRect drawRect;
+    TPoint drawPos;
+
+    DetermineSteps( full, partial );
+    if ( areaBitmap && partial && ( full < KVtUiZoomControlMaxSteps ) )
+        {
+        // First generate bitmaps, so that drawing can be done 
+        // quickly in sequence.
+        GetPositionAndRect( 
+            drawPos,
+            drawRect,
+            full + 1 );
+
+        if ( !GenerateZoomMaskBitmap( 
+                areaBitmap, 
+                partial, 
+                drawRect.iTl.iY,
+                drawRect.Size() ) )
+            {
+            // If zoom mask generation fails, then we have no choice
+            // than not to draw.
+            partial = 0; 
+            }
+        }
+
+    CWindowGc& gc = SystemGc();
+    gc.SetBrushStyle( CGraphicsContext::ENullBrush );
+
+    // Draw zoom direction indicator:
+
+    CFbsBitmap* zoomDirBitmap = NULL;
+    CFbsBitmap* zoomDirMask = NULL;
+    iBitmapManager.GetBitmaps( iZoomDirId, zoomDirBitmap, zoomDirMask );
+    if ( zoomDirBitmap && zoomDirMask )
+        {
+        iZoomDirLayout.DrawImage( gc, zoomDirBitmap, zoomDirMask );
+        }
+    
+    // Draw zoom indicator:
+    if ( !areaBitmap )
+        {
+        // If area bitmap is invalid, then we have to return.
+        return;
+        }
+
+    if ( maxBitmap )
+        {
+        // First, draw maximum area.
+        for ( TInt index = KVtUiZoomControlMinSteps; 
+              index <= full; 
+              index++ )
+            {
+            GetPositionAndRect( 
+                drawPos, 
+                drawRect, 
+                index );
+            gc.BitBltMasked( 
+                drawPos,
+                maxBitmap, 
+                drawRect, 
+                areaBitmap, 
+                ETrue );
+            }
+        }
+
+    if ( minBitmap && ( full < KVtUiZoomControlMaxSteps ) )
+        {
+        // Then draw minimum area.
+        for ( TInt index = full + 1; 
+              index <= KVtUiZoomControlMaxSteps; 
+              index++ )
+            {
+            GetPositionAndRect( 
+                drawPos, 
+                drawRect, 
+                index );
+            gc.BitBltMasked( 
+                drawPos, 
+                minBitmap, 
+                drawRect, 
+                areaBitmap, 
+                ETrue );
+            }
+
+        if ( maxBitmap && partial && iZoomPartialMask )
+            {
+            // Finally draw partial area.
+            GetPositionAndRect( 
+                drawPos,
+                drawRect,
+                full + 1 );
+            gc.BitBltMasked( 
+                drawPos,
+                maxBitmap,
+                drawRect, 
+                iZoomPartialMask->Bitmap(),
+                ETrue );
+            }
+        }
+    
+    __VTPRINT( DEBUG_GEN, "VtUiZmCtl.Draw.ok" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::SizeChanged
+// -----------------------------------------------------------------------------
+//
+void CVtUiZoomControl::SizeChanged()
+    {
+    AknsUtils::RegisterControlPosition( this );
+
+    TRect parent( Rect() );
+    TAknWindowLineLayout rect;
+    if ( parent.IsEmpty() )
+        {
+        return;
+        }
+
+        {
+        TAknLayoutRect& tmpRect = iZoomDirLayout; 
+        VtUiLayout::GetZoomPaneLayout( rect );
+        tmpRect.LayoutRect( parent, rect );
+        parent = tmpRect.Rect();
+        iZoomPaneRect = parent;
+        }
+
+    VtUiLayout::GetZoomDirLayout( rect );
+    iZoomDirLayout.LayoutRect( parent, rect );
+    iBitmapManager.SetSizeAndColor( 
+        iZoomDirId, 
+        iZoomDirLayout.Rect().Size(),
+        iZoomDirLayout.Color() );
+
+    VtUiLayout::GetZoomAreaLayout( rect );
+    iZoomAreaLayout.LayoutRect( parent, rect );
+    iBitmapManager.SetSize( 
+        iZoomAreaId, 
+        iZoomAreaLayout.Rect().Size() );
+    iBitmapManager.SetSize( 
+        iZoomMinId, 
+        iZoomAreaLayout.Rect().Size() );
+    iBitmapManager.SetSize( 
+        iZoomMaxId, 
+        iZoomAreaLayout.Rect().Size() );
+    (void) CreateBitmaps();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::PositionChanged
+// -----------------------------------------------------------------------------
+//
+void CVtUiZoomControl::PositionChanged()
+    {
+    AknsUtils::RegisterControlPosition( this );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::DetermineSteps
+// -----------------------------------------------------------------------------
+//
+void CVtUiZoomControl::DetermineSteps(
+        TInt& aFullSteps,
+        TInt& aPartialStep ) const
+    {
+    aFullSteps = 1;
+    aPartialStep = 0;
+
+    TInt currentZoomStep = Max( Min( iCurrentZoomStep, iMaxZoomStep ), 0 );
+
+    if ( iMaxZoomStep > 0 )
+        {
+        TInt zoomDeltaSteps = 0;
+        TInt zoomDeltaMaxSteps = 0;
+
+        // Formula equals: x = ( N * ( y - 1 ) ) / 10.
+        
+        aFullSteps = KVtUiZoomControlMinSteps;
+        const TInt divider = 
+            KVtUiZoomControlMaxSteps - KVtUiZoomControlMinSteps;
+        for ( TInt row = KVtUiZoomControlMaxSteps - 1; 
+              row >= KVtUiZoomControlMinSteps - 1;
+              row-- )
+            {
+            const TInt zoomStartSteps = 
+                ( iMaxZoomStep * row ) / divider;
+            const TInt previousZoomStartSteps = 
+                ( iMaxZoomStep * ( row - 1 ) ) / divider;
+
+            if ( ( currentZoomStep >= zoomStartSteps ) &&
+                 ( previousZoomStartSteps != zoomStartSteps ) )
+                {
+                aFullSteps = ( row + 1 );
+                zoomDeltaSteps = currentZoomStep - zoomStartSteps;
+                zoomDeltaMaxSteps = ( iMaxZoomStep * ( row + 1 ) ) / divider;
+                zoomDeltaMaxSteps -= zoomStartSteps;
+                break;
+                }
+            }
+
+        aPartialStep = 0;
+        if ( zoomDeltaSteps && zoomDeltaMaxSteps )
+            {
+            TInt64 partial( zoomDeltaSteps );
+            partial *= KVtUiZoomControlOne;
+            partial /= zoomDeltaMaxSteps;
+            
+            partial >>= ( KVtUiZoomControlFixed - KVtUiZoomControlPartial );
+            aPartialStep = I64INT( partial );
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::GenerateZoomMaskBitmap
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiZoomControl::GenerateZoomMaskBitmap(
+        CFbsBitmap* aMaskBitmap,    
+        const TInt aPartial,
+        const TInt aRow,
+        const TSize& aRowSize ) const
+    {
+    if ( iZoomPartialMask && 
+         ( ( iZoomMaskPartial != aPartial ) || 
+           ( iZoomMaskRow != aRow ) ) )
+        {
+        DoGenerateZoomMaskBitmap( 
+            aMaskBitmap,
+            aPartial, 
+            aRow,
+            aRowSize );
+        }
+    return ( iZoomPartialMask != NULL );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::DoGenerateZoomMaskBitmap
+// -----------------------------------------------------------------------------
+//
+void CVtUiZoomControl::DoGenerateZoomMaskBitmap(
+        CFbsBitmap* aMaskBitmap,
+        const TInt aPartial,
+        const TInt aRow,
+        const TSize& aRowSize ) const
+    {
+    CFbsBitGc* bitmapMaskGc = iZoomPartialMask->Context();
+    
+    CFbsBitmap* shade = iZoomPartialShade->Bitmap();
+    CFbsBitGc* shadeGc = iZoomPartialShade->Context();
+
+    // Fill shade with aPartial.
+    shadeGc->SetPenStyle( CGraphicsContext::ENullPen );
+    shadeGc->SetBrushColor( TRgb::Gray256( aPartial ) );
+    shadeGc->SetBrushStyle( CGraphicsContext::ESolidBrush );
+    shadeGc->Clear(); 
+    
+    // Now grab one row from iZoomAreaBitmap.
+    CFbsBitmap* mask = iZoomPartialShadeMask->Bitmap();
+    CFbsBitGc* maskGc = iZoomPartialShadeMask->Context();
+
+    // Clear with transparency.
+    maskGc->SetPenStyle( CGraphicsContext::ENullPen );
+    maskGc->SetBrushColor( TRgb::Gray2( 1 ) ); // transparency
+    maskGc->SetBrushStyle( CGraphicsContext::ESolidBrush );
+    maskGc->Clear(); 
+
+    maskGc->SetPenStyle( CGraphicsContext::ENullPen );
+    // Blit appropriate region from aMaskBitmap to maskGc.
+    maskGc->BitBlt( 
+        TPoint( 0, aRow ), 
+        aMaskBitmap, 
+        TRect( TPoint( 0, aRow ), aRowSize ) );
+
+    // Now fill bitmapMask with black (= transparency).
+    bitmapMaskGc->SetPenStyle( CGraphicsContext::ENullPen );
+    bitmapMaskGc->SetBrushColor( TRgb::Gray256( KVtUiZoomTransparent ) );
+    bitmapMaskGc->SetBrushStyle( CGraphicsContext::ESolidBrush );
+    bitmapMaskGc->Clear();
+
+    // Then blit shade masked
+    TPoint origin;
+    TRect rect( origin, shade->SizeInPixels() );
+
+    bitmapMaskGc->BitBltMasked( origin, shade, rect, mask, ETrue );
+
+    iZoomMaskPartial = aPartial;
+    iZoomMaskRow = aRow;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::CreateBitmaps
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiZoomControl::CreateBitmaps()
+    {
+    TRAPD( err, CreateBitmapsL() );
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::CreateBitmapsL
+// -----------------------------------------------------------------------------
+//
+void CVtUiZoomControl::CreateBitmapsL()
+    {
+    TBool requiredToCreate = ETrue;
+    TSize requiredSize = SizeOfBitmap();
+    if ( iZoomPartialMask )
+        {
+        requiredToCreate = 
+            ( requiredSize != iZoomPartialMask->Bitmap()->SizeInPixels() );
+        }
+
+    if ( requiredToCreate )
+        {
+        iZoomMaskPartial = KErrNotFound;
+        iZoomMaskRow = KErrNotFound;
+
+        // Delete old ones away.
+        delete iZoomPartialMask;
+        iZoomPartialMask = NULL;
+
+        delete iZoomPartialShade;
+        iZoomPartialShade = NULL;
+
+        delete iZoomPartialShadeMask;
+        iZoomPartialShadeMask = NULL;
+
+        CBitmap* zoomPartialMask = new ( ELeave ) CBitmap;
+        CleanupStack::PushL( zoomPartialMask );
+        zoomPartialMask->ConstructL( requiredSize, EGray256 );
+
+        CBitmap* zoomPartialShade = new ( ELeave ) CBitmap;
+        CleanupStack::PushL( zoomPartialShade );
+        zoomPartialShade->ConstructL( requiredSize, EGray256 );
+
+        CBitmap* zoomPartialShadeMask = new ( ELeave ) CBitmap;
+        CleanupStack::PushL( zoomPartialShadeMask );
+        zoomPartialShadeMask->ConstructL( requiredSize, EGray2 );
+    
+        // Pop zoomPartialShadeMask, zoomPartialShade & zoomPartialMask.
+        CleanupStack::Pop( 3, zoomPartialMask ); 
+        iZoomPartialMask = zoomPartialMask;
+        iZoomPartialShade = zoomPartialShade;
+        iZoomPartialShadeMask = zoomPartialShadeMask;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::SizeOfBitmap
+// -----------------------------------------------------------------------------
+//
+TSize CVtUiZoomControl::SizeOfBitmap() const
+    {
+    // Bitmaps fill the whole zoom area.
+    return iZoomAreaLayout.Rect().Size();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::GetPositionAndRect
+// -----------------------------------------------------------------------------
+//
+void CVtUiZoomControl::GetPositionAndRect(
+        TPoint& aPosition,
+        TRect& aSourceRect,
+        const TInt aZoomStep ) const
+    {
+    TAknWindowLineLayout rect;
+    TAknLayoutRect layout;
+    const TRect zoomAreaRect = iZoomAreaLayout.Rect();
+    const TRect& zoomParentRect = iZoomPaneRect;
+
+    VtUiLayout::GetZoomStepLayout( 
+        rect, 
+        aZoomStep ); 
+    layout.LayoutRect( zoomParentRect, rect );
+    aSourceRect = layout.Rect();
+    aPosition = aSourceRect.iTl;
+
+    aSourceRect.iTl -= zoomAreaRect.iTl;
+    aSourceRect.iBr -= zoomAreaRect.iTl;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::CBitmap::CBitmap
+// -----------------------------------------------------------------------------
+//
+CVtUiZoomControl::CBitmap::CBitmap()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::CBitmap::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CVtUiZoomControl::CBitmap::ConstructL( 
+        const TSize& aSize,
+        const TDisplayMode aMode )
+    {
+    CFbsBitmap* bitmap = new ( ELeave ) CFbsBitmap;
+    CleanupStack::PushL( bitmap );
+
+    User::LeaveIfError(
+        bitmap->Create( aSize, aMode ) );
+
+    CFbsBitmapDevice* device = CFbsBitmapDevice::NewL( bitmap );
+    CleanupStack::PushL( device );
+
+    CFbsBitGc* context = NULL;
+    User::LeaveIfError( device->CreateContext( context ) );
+    User::LeaveIfNull( context );
+
+    CleanupStack::Pop( device );
+    CleanupStack::Pop( bitmap );
+
+    iContext = context;
+    iDevice = device;
+    iBitmap = bitmap;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::CBitmap::~CBitmap
+// -----------------------------------------------------------------------------
+//
+CVtUiZoomControl::CBitmap::~CBitmap()
+    {
+    delete iContext;
+    delete iDevice;
+    delete iBitmap;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::CBitmap::Bitmap
+// -----------------------------------------------------------------------------
+//
+inline CFbsBitmap* CVtUiZoomControl::CBitmap::Bitmap() const
+    {
+    return iBitmap;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiZoomControl::CBitmap::Context
+// -----------------------------------------------------------------------------
+//
+inline CFbsBitGc* CVtUiZoomControl::CBitmap::Context() const
+    {
+    return iContext;
+    }
+
+//  End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/TVtUiCallParameters.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,158 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the TVtUiCallParameters class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "TVtUiCallParameters.h"
+
+// CONSTANTS
+
+// Enumerates call parameter flags.
+enum TVtUiCallParameterFlags
+    {
+    // Audio status has been updated.
+    EVtUiCallParameterFlagHasAudio = 1,
+    // Audio status equals to ETrue.
+    EVtUiCallParameterFlagAudioEnabled = 2,
+    // Video status has been updated.
+    EVtUiCallParameterFlagHasVideo = 4,
+    // Video status equals to ETrue.
+    EVtUiCallParameterFlagVideoEnabled = 8,
+    // Selected camera has been updated.
+    EVtUiCallParameterFlagHasSelectedCamera = 16,
+    // Primary camera has been selected. Otherwise secondary has been selected.
+    EVtUiCallParameterFlagHasSelectedPrimary = 32,
+    };
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// TVtUiCallParameters::TVtUiCallParameters
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+TVtUiCallParameters::TVtUiCallParameters()
+    : iFlags( 0 )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiCallParameters::Reset
+// -----------------------------------------------------------------------------
+//
+void TVtUiCallParameters::Reset()
+    {
+    iFlags = 0;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiCallParameters::SetAudioStatus
+// -----------------------------------------------------------------------------
+//
+void TVtUiCallParameters::SetAudioStatus( const TBool aEnabled )
+    {
+    iFlags |= ( EVtUiCallParameterFlagAudioEnabled + 
+                EVtUiCallParameterFlagHasAudio );
+    if ( !aEnabled )
+        {
+        iFlags &= ~EVtUiCallParameterFlagAudioEnabled;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiCallParameters::GetAudioStatus
+// -----------------------------------------------------------------------------
+//
+TInt TVtUiCallParameters::GetAudioStatus( TBool& aEnabled ) const
+    {
+    TInt err = KErrNotFound;
+    if ( iFlags & EVtUiCallParameterFlagHasAudio )
+        {
+        err = KErrNone;
+        aEnabled = ( iFlags & EVtUiCallParameterFlagAudioEnabled );
+        }
+
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiCallParameters::SetVideoStatus
+// -----------------------------------------------------------------------------
+//
+void TVtUiCallParameters::SetVideoStatus( const TBool aEnabled )
+    {
+    iFlags |= ( EVtUiCallParameterFlagVideoEnabled + 
+                EVtUiCallParameterFlagHasVideo );
+    if ( !aEnabled )
+        {
+        iFlags &= ~EVtUiCallParameterFlagVideoEnabled;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiCallParameters::GetVideoStatus
+// -----------------------------------------------------------------------------
+//
+TInt TVtUiCallParameters::GetVideoStatus( TBool& aEnabled )
+    {
+    TInt err = KErrNotFound;
+    if ( iFlags & EVtUiCallParameterFlagHasVideo )
+        {
+        err = KErrNone;
+        aEnabled = ( iFlags & EVtUiCallParameterFlagVideoEnabled );
+        }
+
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiCallParameters::SetSelectedCamera
+// -----------------------------------------------------------------------------
+//
+void TVtUiCallParameters::SetSelectedCamera( const TBool aPrimary )
+    {
+    iFlags |= EVtUiCallParameterFlagHasSelectedCamera;
+    
+    if ( aPrimary )
+        {
+        iFlags |= EVtUiCallParameterFlagHasSelectedPrimary;
+        }
+    else
+        {
+        iFlags &= ~EVtUiCallParameterFlagHasSelectedPrimary;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiCallParameters::GetSelectedCamera
+// -----------------------------------------------------------------------------
+//
+TInt TVtUiCallParameters::GetSelectedCamera( TBool& aPrimary )
+    {
+    TInt err = KErrNotFound;
+    if ( iFlags & EVtUiCallParameterFlagHasSelectedCamera )
+        {
+        err = KErrNone;
+        aPrimary = ( iFlags & EVtUiCallParameterFlagHasSelectedPrimary );
+        }
+
+    return err;
+    }
+
+//  End of File  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/VtUiLayout.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,736 @@
+/*
+* Copyright (c) 2004, 2005 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the VtUiLayout class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "VtUiLayout.h"
+#include    "VtUiPanic.h"
+#include    <fbs.h>
+#include    <avkon.mbg>
+#include    <videotelui.mbg>
+#include    <AknsConstants.h>
+#include    <aknconsts.h>
+#include    <AknIconUtils.h>
+#include    <AknUtils.h>
+
+#include    <aknlayout.cdl.h>
+#include    <applayout.cdl.h>
+#include    <aknlayoutscalable_apps.cdl.h>
+#include    <aknlayoutscalable_avkon.cdl.h>
+#include    <layoutmetadata.cdl.h>
+
+
+// DATA TYPES
+
+// Enumerates files in which there can be bitmaps.
+enum TVtUiBitmapFiles
+    {
+    // Video Telephone bitmap file.
+    EVtUiVideoBitmapFile,
+    // AVKON bitmap file.
+    EVtUiAvkonBitmapFile
+    };
+
+// Video Telephone application bitmaps
+_LIT( KVtUiVideoBitmapFileName,
+    "z:\\resource\\apps\\videotelui.mbm" );
+// Minimum step for zoom.
+const TInt KVtUiZoomMinStep = 1;
+
+// Maximum step for zoom.
+const TInt KVtUiZoomMaxStep = 11;
+
+// ============================ LOCAL FUNCTIONS ===============================
+
+inline TAknWindowComponentLayout DoCompose( TAknWindowComponentLayout aLine1,
+    TAknWindowComponentLayout aLine2 )
+    {
+    return TAknWindowComponentLayout::Compose( aLine1, aLine2 );
+    }
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::GetApplicationParentRect
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::GetApplicationParentRect(
+        TRect& aRect )
+    {
+    // Calculate screen rectangle.
+    TSize screenSize = CCoeEnv::Static()->ScreenDevice()->SizeInPixels();
+    TRect screenRect( screenSize );
+
+    // Calculate application window.
+    TAknLayoutRect appRect;
+    appRect.LayoutRect(
+        screenRect,
+        AknLayout::application_window( screenRect ) );
+    aRect = appRect.Rect();
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::GetMainPaneLayout
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::GetMainPaneLayout(
+        TAknWindowLineLayout& aLayout )
+    {
+    TRect parent;
+    GetApplicationParentRect( parent );
+    // Calculate main pane layout.
+    // First 1 = normal status pane, second 1 = control pane.
+    aLayout = AknLayout::main_pane( parent, 0, 1, 1 );
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::GetFirstWindowBackgroundLayout
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::GetFirstWindowBackgroundLayout(
+        TAknWindowLineLayout& aLayout )
+    {
+    //aLayout = AppLayout::Uplink_video_image__large__Line_1();
+    TInt main_pane_variety( 0 );
+    TInt vid_upl_variety( 18 );
+    if ( Layout_Meta_Data::IsLandscapeOrientation() )
+        {
+        main_pane_variety = 4;
+        vid_upl_variety = 17;
+        }
+
+    TAknWindowComponentLayout layout1 =
+        AknLayoutScalable_Apps::main_pane( main_pane_variety );
+    TAknWindowComponentLayout layout2 =
+        AknLayoutScalable_Apps::main_video_tele_pane();
+    TAknWindowComponentLayout layout3 =
+        AknLayoutScalable_Apps::
+            call_video_uplink_pane_cp1( vid_upl_variety );
+    TAknWindowComponentLayout layout4 =
+        AknLayoutScalable_Apps::call_video_uplink_pane_g1();
+    aLayout =
+        DoCompose(
+            DoCompose( layout1, layout2 ),
+                DoCompose( layout3, layout4 ) ).LayoutLine();
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::GetFirstWindowStreamLayout
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::GetFirstWindowStreamLayout(
+        TAknWindowLineLayout& aLayout )
+    {
+    TInt main_pane_variety( 0 );
+    TInt vid_upl_variety( 18 );
+    if ( Layout_Meta_Data::IsLandscapeOrientation() )
+        {
+        main_pane_variety = 4;
+        vid_upl_variety = 17;
+        }
+
+    TAknWindowComponentLayout layout1 =
+        AknLayoutScalable_Apps::main_pane( main_pane_variety );
+    TAknWindowComponentLayout layout2 =
+        AknLayoutScalable_Apps::main_video_tele_pane();
+    TAknWindowComponentLayout layout3 =
+        AknLayoutScalable_Apps::
+            call_video_uplink_pane_cp1( vid_upl_variety );
+    TAknWindowComponentLayout layout4 =
+        AknLayoutScalable_Apps::video_uplink_pane();
+    aLayout =
+        DoCompose(
+            DoCompose( layout1, layout2 ),
+                DoCompose( layout3, layout4 ) ).LayoutLine();
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::GetFirstWindowStreamDisabledIconLayout
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::GetFirstWindowStreamDisabledIconLayout(
+        TAknWindowLineLayout& aLayout )
+    {
+    //aLayout = AppLayout::Uplink_video_image__large__Line_3();
+    TInt main_pane_variety( 0 );
+    TInt vid_upl_variety( 18 );
+    if ( Layout_Meta_Data::IsLandscapeOrientation() )
+        {
+        main_pane_variety = 4;
+        vid_upl_variety = 17;
+        }
+
+    TAknWindowComponentLayout layout1 =
+        AknLayoutScalable_Apps::main_pane( main_pane_variety );
+    TAknWindowComponentLayout layout2 =
+        AknLayoutScalable_Apps::main_video_tele_pane();
+    TAknWindowComponentLayout layout3 =
+        AknLayoutScalable_Apps::
+            call_video_uplink_pane_cp1( vid_upl_variety );
+    TAknWindowComponentLayout layout4 =
+        AknLayoutScalable_Apps::call_video_uplink_pane_g2();
+    aLayout =
+        DoCompose(
+            DoCompose( layout1, layout2 ),
+                DoCompose( layout3, layout4 ) ).LayoutLine();
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::GetSecondWindowBackgroundLayout
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::GetSecondWindowBackgroundLayout(
+        TAknWindowLineLayout& aLayout )
+    {
+    aLayout = AppLayout::Downlink_video_image_Line_1();
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::GetSecondWindowStreamLayout
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::GetSecondWindowStreamLayout(
+    TAknWindowLineLayout& aLayout, TBool aIsToolbar, TBool aIsSubQCIF )
+    {
+    if( aIsSubQCIF )
+        {
+        aLayout = AppLayout::video_down_subqcif_pane();
+        }
+    else
+        {
+        if ( aIsToolbar )
+            {
+            TInt varietyPr = 27; // portrait
+            TInt varietyLs = 26; // landscape
+
+            TInt varietyIndex = Layout_Meta_Data::IsLandscapeOrientation()
+	           ? varietyLs : varietyPr ;
+            TAknWindowComponentLayout layout1 = AknLayoutScalable_Apps::
+                main_video_tele_pane();
+            TAknWindowComponentLayout layout2 = AknLayoutScalable_Apps::
+                video_down_crop_pane( varietyIndex );
+            aLayout = TAknWindowComponentLayout::Compose( layout1, layout2 ).
+                LayoutLine();
+
+            }
+        else
+            {
+            aLayout = AppLayout::downlink_stream();
+            }
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::GetSecondWindowStreamWholeLayout
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::GetSecondWindowStreamWholeLayout(
+    TAknWindowLineLayout& aLayout, TBool aIsToolbar, TBool aIsSubQCIF )
+    {
+    if( aIsSubQCIF )
+        {
+        aLayout = AppLayout::video_down_subqcif_pane();
+        }
+    else
+        {
+        if ( aIsToolbar )
+            {
+            TInt varietyPr = 24; // portrait
+            TInt varietyLs = 22; // landscape
+
+            TInt varietyIndex = Layout_Meta_Data::IsLandscapeOrientation()
+	           ? varietyLs : varietyPr;
+            TAknWindowComponentLayout layout1 = AknLayoutScalable_Apps::
+                main_video_tele_pane();
+            TAknWindowComponentLayout layout2 = AknLayoutScalable_Apps::
+                video_down_pane( varietyIndex );
+            aLayout = TAknWindowComponentLayout::Compose( layout1, layout2 )
+                .LayoutLine();
+            }
+        else
+            {
+            aLayout = AppLayout::downlink_stream_area();
+            }
+        }
+    }
+// -----------------------------------------------------------------------------
+// VtUiLayout::GetSecondWindowDisabledIconLayout
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::GetSecondWindowDisabledIconLayout(
+        TAknWindowLineLayout& aLayout )
+    {
+    TInt blind_icon_variety( 4 );
+    if ( Layout_Meta_Data::IsLandscapeOrientation() )
+        {
+        blind_icon_variety = 3;
+        }
+
+    TAknWindowComponentLayout layout2 =
+        AknLayoutScalable_Apps::main_video_tele_pane();
+    TAknWindowComponentLayout layout4 =
+        AknLayoutScalable_Apps::
+        call_video_g2( blind_icon_variety );
+    
+    aLayout =
+        DoCompose( layout2 , layout4 ).LayoutLine();
+    
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::GetSecondWindowWaitingTextLayout
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::GetSecondWindowWaitingTextLayout(
+        TAknTextLineLayout& aLayout,
+        const TBool aFirstLine )
+    {
+    TBool layoutFound = EFalse;
+    if ( Layout_Meta_Data::IsLandscapeOrientation() )
+        {
+        layoutFound = ETrue;
+
+        TAknWindowComponentLayout layout1 =
+            AknLayoutScalable_Apps::main_video_tele_pane();
+
+        TAknTextComponentLayout layout2 =
+            aFirstLine ?
+                AknLayoutScalable_Apps::call_video_pane_t1(2) :
+                AknLayoutScalable_Apps::call_video_pane_t2(2);
+
+        aLayout =
+            TAknWindowComponentLayout::ComposeText(
+                layout1, layout2 ).LayoutLine();
+        }
+
+    if ( !layoutFound )
+        {
+        const TInt line( ( aFirstLine ) ? 0 : 1 );
+        TAknWindowComponentLayout l1 = AknLayoutScalable_Apps::
+            main_video_tele_pane();
+        TAknTextComponentLayout l2;
+        if ( !line )
+            {
+            l2 = AknLayoutScalable_Apps::call_video_pane_t1( 3 );
+            }
+        else
+            {
+            l2 = AknLayoutScalable_Apps::call_video_pane_t2( 3 );
+            }
+        aLayout = TAknWindowComponentLayout::ComposeText( l1, l2 );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::GetNumberEntryAreaLayout
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::GetNumberEntryAreaLayout(
+        TAknWindowLineLayout& aLayout )
+    {
+    TInt variety = Layout_Meta_Data::IsLandscapeOrientation() ? 2 : 0;
+
+    TAknWindowComponentLayout layout1 =
+        AknLayoutScalable_Apps::main_call_pane();
+    TAknWindowComponentLayout layout2 =
+        AknLayoutScalable_Apps::popup_number_entry_window( variety );
+
+    aLayout =
+        TAknWindowComponentLayout::Compose( layout1, layout2 ).LayoutLine();
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::GetAudioRoutingIconLayout
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::GetAudioRoutingIconLayout(
+        TAknWindowLineLayout& aLayout )
+    {
+    aLayout = AppLayout::Navipane_elements_and_descendant_panes_Line_1();
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::GetCallDurationTextLayout
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::GetCallDurationTextLayout(
+        TAknTextLineLayout& aLayout )
+    {
+    aLayout = AppLayout::Navipanetexts_Line_1();
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::GetMutedTextLayout
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::GetMutedTextLayout(
+        TAknTextLineLayout& aLayout )
+    {
+    aLayout = AppLayout::Navipanetexts_Line_2();
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::GetZoomPaneLayout
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::GetZoomPaneLayout(
+        TAknWindowLineLayout& aLayout )
+    {
+    aLayout = AppLayout::zooming_pane();
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::GetZoomDirLayout
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::GetZoomDirLayout(
+        TAknWindowLineLayout& aLayout )
+    {
+    aLayout = AppLayout::Zooming_pane_elements_Line_1();
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::GetZoomAreaLayout
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::GetZoomAreaLayout(
+        TAknWindowLineLayout& aLayout )
+    {
+    aLayout = AppLayout::Zooming_pane_elements_Line_2();
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::GetZoomStepLayout
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::GetZoomStepLayout(
+        TAknWindowLineLayout& aLayout,
+        TInt aZoomStep )
+    {
+    aZoomStep = Max( Min( aZoomStep, KVtUiZoomMaxStep ), KVtUiZoomMinStep );
+    aZoomStep--; // 1 .. 11 is mapped to 0 .. 10.
+
+    // Function pointer table would be more efficient, but AppLayout methods
+    // are inline.
+
+    switch ( aZoomStep )
+        {
+        case 0:
+            aLayout = AppLayout::Zooming_steps_sizes_Line_1();
+            break;
+
+        case 1:
+            aLayout = AppLayout::Zooming_steps_sizes_Line_2();
+            break;
+
+        case 2:
+            aLayout = AppLayout::Zooming_steps_sizes_Line_3();
+            break;
+
+        case 3:
+            aLayout = AppLayout::Zooming_steps_sizes_Line_4();
+            break;
+
+        case 4:
+            aLayout = AppLayout::Zooming_steps_sizes_Line_5();
+            break;
+
+        case 5:
+            aLayout = AppLayout::Zooming_steps_sizes_Line_6();
+            break;
+
+        case 6:
+            aLayout = AppLayout::Zooming_steps_sizes_Line_7();
+            break;
+
+        case 7:
+            aLayout = AppLayout::Zooming_steps_sizes_Line_8();
+            break;
+
+        case 8:
+            aLayout = AppLayout::Zooming_steps_sizes_Line_9();
+            break;
+
+        case 9:
+            aLayout = AppLayout::Zooming_steps_sizes_Line_10();
+            break;
+
+        case 10:
+        default:
+            aLayout = AppLayout::Zooming_steps_sizes_Line_11();
+            break;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::MapBitmapToSkinId
+// -----------------------------------------------------------------------------
+//
+TAknsItemID VtUiLayout::MapBitmapToSkinId( TVtUiBitmapId aId )
+    {
+    TAknsItemID skinId = KAknsIIDNone;
+
+    switch ( aId )
+        {
+        case EVtUiBitmap_qgn_graf_call_video_out_bg:
+            skinId = KAknsIIDQgnGrafCallVideoOutBg;
+            break;
+
+        case EVtUiBitmap_qgn_indi_call_video_blind_in:
+            skinId = KAknsIIDQgnIndiCallVideoBlindIn;
+            break;
+
+        case EVtUiBitmap_qgn_indi_call_video_blind_out:
+            skinId = KAknsIIDQgnIndiCallVideoBlindOut;
+            break;
+
+        case EVtUiBitmap_qgn_indi_call_video_blind_in_mask_icon:
+            skinId = KAknsIIDQgnIndiCallVideoBlindInMaskIcon;
+            break;
+
+        case EVtUiBitmap_qgn_indi_call_video_blind_out_mask_icon:
+            skinId = KAknsIIDQgnIndiCallVideoBlindOutMaskIcon;
+            break;
+
+        case EVtUiBitmap_qgn_indi_earpiece:
+            skinId = KAknsIIDQgnIndiEarpiece;
+            break;
+
+        case EVtUiBitmap_qgn_indi_speaker:
+            skinId = KAknsIIDQgnIndiSpeaker;
+            break;
+
+        case EVtUiBitmap_qgn_indi_zoom_dir:
+            skinId = KAknsIIDQgnIndiZoomDir;
+            break;
+
+        case EVtUiBitmap_qgn_graf_zoom_area:
+            skinId = KAknsIIDQgnGrafZoomArea;
+            break;
+
+        case EVtUiBitmap_qgn_indi_zoom_min:
+            skinId = KAknsIIDQgnIndiZoomMin;
+            break;
+
+        case EVtUiBitmap_qgn_indi_zoom_max:
+            skinId = KAknsIIDQgnIndiZoomMax;
+            break;
+
+        case EVtUiBitmap_qgn_prop_sub_current:
+        case EVtUiBitmap_qgn_prop_sub_current_mask:
+            skinId = KAknsIIDQgnPropSubCurrent;
+            break;
+            
+        case EVtUiBitmap_qgn_indi_button_end_active_call:
+        case EVtUiBitmap_qgn_indi_button_end_active_call_mask:
+            skinId = KAknsIIDQgnIndiButtonEndCall;
+            break;
+
+        default:
+            // Default value is OK.
+            break;
+        }
+
+    return skinId;
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::MapBitmapToColorId
+// -----------------------------------------------------------------------------
+//
+TBool VtUiLayout::MapBitmapToColorId(
+        TVtUiBitmapId aId,
+        TAknsItemID& aColorId,
+        TInt& aColorIndex )
+    {
+    TBool result = EFalse;
+
+    aColorId = KAknsIIDNone;
+    aColorIndex = KErrNotFound;
+
+    switch ( aId )
+        {
+        case EVtUiBitmap_qgn_indi_earpiece:
+        case EVtUiBitmap_qgn_indi_earpiece_mask:
+        case EVtUiBitmap_qgn_indi_speaker:
+        case EVtUiBitmap_qgn_indi_speaker_mask:
+        case EVtUiBitmap_qgn_indi_zoom_dir:
+        case EVtUiBitmap_qgn_indi_zoom_dir_mask:
+            result = ETrue;
+            aColorId = KAknsIIDQsnIconColors;
+            aColorIndex = EAknsCIQsnIconColorsCG7;
+            break;
+
+        default:
+            // Default value is OK.
+            break;
+        }
+
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::Resolve
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::Resolve(
+        TVtUiBitmapId aId,
+        TFileName& aFileName,
+        TInt& aIndex )
+    {
+    TInt index = KErrNotFound;
+    TVtUiBitmapFiles file = EVtUiVideoBitmapFile;
+
+    switch ( aId )
+        {
+        case EVtUiBitmap_qgn_graf_call_video_out_bg:
+            index = EMbmVideoteluiQgn_graf_call_video_out_bg;
+            break;
+
+        case EVtUiBitmap_qgn_graf_call_video_out_bg_mask:
+            index = EMbmVideoteluiQgn_graf_call_video_out_bg_mask;
+            break;
+
+        case EVtUiBitmap_qgn_indi_call_video_blind_in:
+            index = EMbmVideoteluiQgn_indi_call_video_blind_in;
+            break;
+
+        case EVtUiBitmap_qgn_indi_call_video_blind_out:
+            index = EMbmVideoteluiQgn_indi_call_video_blind_out;
+            break;
+
+        case EVtUiBitmap_qgn_indi_earpiece:
+            file = EVtUiAvkonBitmapFile;
+            index = EMbmAvkonQgn_indi_earpiece;
+            break;
+
+        case EVtUiBitmap_qgn_indi_earpiece_mask:
+            file = EVtUiAvkonBitmapFile;
+            index = EMbmAvkonQgn_indi_earpiece_mask;
+            break;
+
+        case EVtUiBitmap_qgn_indi_speaker:
+            file = EVtUiAvkonBitmapFile;
+            index = EMbmAvkonQgn_indi_speaker;
+            break;
+
+        case EVtUiBitmap_qgn_indi_speaker_mask:
+            file = EVtUiAvkonBitmapFile;
+            index = EMbmAvkonQgn_indi_speaker_mask;
+            break;
+
+        case EVtUiBitmap_qgn_graf_zoom_area:
+            index = EMbmVideoteluiQgn_graf_zoom_area;
+            break;
+
+        case EVtUiBitmap_qgn_indi_zoom_dir:
+            index = EMbmVideoteluiQgn_indi_zoom_dir;
+            break;
+
+        case EVtUiBitmap_qgn_indi_zoom_dir_mask:
+            index = EMbmVideoteluiQgn_indi_zoom_dir_mask;
+            break;
+
+        case EVtUiBitmap_qgn_indi_zoom_min:
+            index = EMbmVideoteluiQgn_indi_zoom_min;
+            break;
+
+        case EVtUiBitmap_qgn_indi_zoom_max:
+            index = EMbmVideoteluiQgn_indi_zoom_max;
+            break;
+
+        case EVtUiBitmap_qgn_indi_call_video_blind_in_mask_icon:
+            index = EMbmVideoteluiQgn_indi_call_video_blind_in_mask_icon;
+            break;
+
+        case EVtUiBitmap_qgn_indi_call_video_blind_out_mask_icon:
+            index = EMbmVideoteluiQgn_indi_call_video_blind_out_mask_icon;
+            break;
+
+        case EVtUiBitmap_qgn_prop_sub_current:
+            file = EVtUiAvkonBitmapFile;
+            index = EMbmAvkonQgn_prop_sub_current;
+            break;
+
+        case EVtUiBitmap_qgn_prop_sub_current_mask:
+            file = EVtUiAvkonBitmapFile;
+            index = EMbmAvkonQgn_prop_sub_current_mask;
+            break;
+        case EVtUiBitmap_qgn_indi_button_end_active_call:
+            index = EMbmVideoteluiQgn_indi_button_end_active_call;
+            break;
+            
+        case EVtUiBitmap_qgn_indi_button_end_active_call_mask:
+            index = EMbmVideoteluiQgn_indi_button_end_active_call_mask;
+            break;
+
+        default:
+            VtUiPanic::Panic( EVtUiPanicInvalidBitmapId );
+            break;
+        }
+
+    aIndex = index;
+    switch ( file )
+        {
+        case EVtUiVideoBitmapFile:
+            aFileName = KVtUiVideoBitmapFileName;
+            break;
+
+        case EVtUiAvkonBitmapFile:
+            aFileName = AknIconUtils::AvkonIconFileName();
+            break;
+
+        default:
+            VtUiPanic::Panic( EVtUiPanicInvalidBitmapFile );
+            break;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::IsLandscapeOrientation
+// -----------------------------------------------------------------------------
+//
+TBool VtUiLayout::IsLandscapeOrientation()
+    {
+    return Layout_Meta_Data::IsLandscapeOrientation();
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiLayout::GetButtonPaneLayout
+// -----------------------------------------------------------------------------
+//
+void VtUiLayout::GetButtonPaneLayout( TAknWindowLineLayout& aLayout )
+    {
+//    TInt main_pane_variety = IsLandscapeOrientation() ? 1 : 2;
+    TInt main_pane_variety( 0 );
+    TInt vid_btn_variety( 2 );
+    if ( Layout_Meta_Data::IsLandscapeOrientation() )
+        {
+        main_pane_variety = 4;
+        vid_btn_variety = 1;
+        }
+    
+    
+    TAknWindowComponentLayout layout1 = AknLayoutScalable_Apps::main_pane( main_pane_variety );
+    
+    TAknWindowComponentLayout layout2 = AknLayoutScalable_Apps::vidtel_button_pane( vid_btn_variety );
+    
+    aLayout = DoCompose( layout1, layout2 ).LayoutLine();
+    }
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/VtUiPanic.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the VtUiPanic class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "VtUiPanic.h"
+
+// CONSTANTS
+
+// Panic category for Video Telephone application.
+_LIT( KVtUiPanicCategory, "Videotelui" );
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// VtUiPanic::Panic
+// -----------------------------------------------------------------------------
+//
+void VtUiPanic::Panic( TVtUiPanicReason aReason )
+    {
+    User::Panic( KVtUiPanicCategory, aReason );
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/VtUiUtility.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,336 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the VtUiUtility class.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "VtUiUtility.h"
+#include    "VtUiPanic.h"
+#include    <featmgr.h>
+#include    <mvtengmedia.h>
+#include    <cvtlogger.h>
+#include    <AknUtils.h>
+#include 	"tVtuifeaturevariation.h"
+
+// Characters to open number entry.
+_LIT( KVtUiDTMFCharacters, "0123456789*#" );
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// VtUiUtility::GetAudioRoutingAvailability
+// -----------------------------------------------------------------------------
+//
+void VtUiUtility::GetAudioRoutingAvailability(
+        MVtEngAudio& aAudio,
+        TInt& aAvailable )
+    {
+    aAvailable = 0;
+    TVtUiBTVariation btvariation;
+    const TBool bluetoothAudioSupported =
+        btvariation.IsBTSupported();
+
+    MVtEngAudio::TAudioRoutingState routingState;
+    if ( aAudio.GetRoutingState( routingState ) == KErrNone )
+        {
+        // Deactivate BT handsfree.
+        if ( bluetoothAudioSupported &&
+             IsAudioRoutingAvailable(
+                aAudio,
+                routingState,
+                MVtEngAudio::EAudioBT,
+                MVtEngAudio::EAudioHandset ) )
+            {
+            aAvailable |= EDeactivateBtHandsfree;
+            }
+
+        // Activate BT handsfree.
+        if ( bluetoothAudioSupported &&
+             ( IsAudioRoutingAvailable(
+                 aAudio,
+                 routingState,
+                 MVtEngAudio::EAudioHandset,
+                 MVtEngAudio::EAudioBT ) ||
+               IsAudioRoutingAvailable(
+                aAudio,
+                routingState,
+                MVtEngAudio::EAudioLoudspeaker,
+                MVtEngAudio::EAudioBT ) ) )
+            {
+            aAvailable |= EActivateBtHandsfree;
+            }
+
+        // Deactivate loudspeaker
+        if ( IsAudioRoutingAvailable(
+                aAudio,
+                routingState,
+                MVtEngAudio::EAudioLoudspeaker,
+                MVtEngAudio::EAudioHandset ) )
+            {
+            aAvailable |= EDeactivateLoudspeaker;
+            }
+
+        // Activate loudspeaker
+        if ( IsAudioRoutingAvailable(
+                aAudio,
+                routingState,
+                MVtEngAudio::EAudioHandset,
+                MVtEngAudio::EAudioLoudspeaker ) ||
+             ( bluetoothAudioSupported && 
+               IsAudioRoutingAvailable( 
+                   aAudio,
+                   routingState, 
+                   MVtEngAudio::EAudioBT, 
+                   MVtEngAudio::EAudioLoudspeaker ) ) )
+            {
+            aAvailable |= EActivateLoudspeaker;
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiUtility::GetOutgoingMediaState
+// -----------------------------------------------------------------------------
+//
+void VtUiUtility::GetOutgoingMediaState(
+        MVtEngMedia& aMedia,
+        TInt& aAvailable )
+    {
+    TInt outgoingMediaState;
+    const TInt err =
+        aMedia.GetMediaState(
+            MVtEngMedia::EMediaOutgoing,
+            outgoingMediaState );
+    if ( err == KErrNone )
+        {
+        // If source is still image, then video sending is off.
+        MVtEngMedia::TMediaSource source;
+        if ( aMedia.GetSource( source ) == KErrNone )
+            {
+            if ( source == MVtEngMedia::EMediaStillImage )
+                {
+                outgoingMediaState &= ~MVtEngMedia::EMediaVideo;
+                }
+            }
+        TBool freezeSupported;
+        if( aMedia.GetFreezeSupported( freezeSupported ) == KErrNone )
+            {
+            TBool isFrozen;
+            if( freezeSupported && aMedia.GetFreezeState( isFrozen ) == KErrNone )
+                {
+                if( isFrozen )
+                    {
+                    outgoingMediaState &= ~MVtEngMedia::EMediaVideo;
+                    }
+                }
+            }
+        }
+    else
+        {
+        outgoingMediaState =
+            ( MVtEngMedia::EMediaAudio | MVtEngMedia::EMediaVideo );
+        }
+    aAvailable = outgoingMediaState;
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiUtility::GetIncomingMediaState
+// -----------------------------------------------------------------------------
+//
+void VtUiUtility::GetIncomingMediaState(
+        MVtEngMedia& aMedia,
+        TInt& aAvailable )
+    {
+    TInt mediaState;
+    const TInt err =
+        aMedia.GetMediaState(
+            MVtEngMedia::EMediaIncoming,
+            mediaState );
+    if ( err != KErrNone )
+        {
+        mediaState =
+            ( MVtEngMedia::EMediaAudio | MVtEngMedia::EMediaVideo );
+        }
+
+    aAvailable = mediaState;
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiUtility::HasStillImage
+// -----------------------------------------------------------------------------
+//
+TBool VtUiUtility::HasStillImage(
+        MVtEngMedia& aMedia )
+    {
+    TInt caps;
+    const TInt capsErr = aMedia.GetSourcesCaps( caps );
+    return ( capsErr == KErrNone ) &&
+           ( caps & MVtEngMedia::ESourceCapsStillImage );
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiUtility::GetFreezeState
+// -----------------------------------------------------------------------------
+//
+TBool VtUiUtility::GetFreezeState(
+        MVtEngMedia& aMedia )
+    {
+    TBool isFrozen;
+    const TInt err = aMedia.GetFreezeState( isFrozen );
+    if ( err == KErrNone )
+        {
+        return isFrozen;
+        }
+    else //provider was not ready
+        {
+        return EFalse;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiUtility::IsFreezeSupported
+// -----------------------------------------------------------------------------
+//
+TBool VtUiUtility::IsFreezeSupported(
+        MVtEngMedia& aMedia )
+    {
+    TBool isFreezeSupported;
+    const TInt err = aMedia.GetFreezeSupported( isFreezeSupported );
+    if ( err == KErrNone )
+        {
+        return isFreezeSupported;
+        }
+    else //provider was not ready
+        {
+        return EFalse;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiUtility::GetVideoQuality
+// -----------------------------------------------------------------------------
+//
+void VtUiUtility::GetVideoQuality(
+        	MVtEngMedia& aMedia,
+        	MVtEngMedia::TVideoQuality& aVideoQuality )
+    {
+    aMedia.GetVideoQuality( aVideoQuality );
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiUtility::GetObjectSharingState
+// -----------------------------------------------------------------------------
+//
+void VtUiUtility::GetObjectSharingState(
+    MVtEngMedia& aMedia,
+    MVtEngMedia::TShareObjectState& aShareObjectState )
+    {
+    aMedia.GetObjectSharingState( aShareObjectState );
+    }
+
+
+// -----------------------------------------------------------------------------
+// VtUiUtility::IsZoomAllowed
+// -----------------------------------------------------------------------------
+//
+TBool VtUiUtility::IsZoomAllowed(
+        MVtEngMedia& aMedia )
+    {
+    TBool result = EFalse;
+
+    TInt currentStep;
+    if ( aMedia.GetCurrentZoomStep( currentStep ) == KErrNone )
+        {
+        TInt max;
+        if ( aMedia.GetMaxZoomStep( max ) == KErrNone )
+            {
+            // Zooming is allowed if maximum zoom step is greater than
+            // zero and camera is in use (and not still image / none).
+            TInt avail;
+            GetOutgoingMediaState( aMedia, avail );
+
+            result = ( max > 0 ) && ( avail & MVtEngMedia::EMediaVideo );
+            }
+        }
+
+    __VTPRINT2( DEBUG_GEN, "Ui.AllowZoom.%d", result )
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiUtility::HasCameras
+// -----------------------------------------------------------------------------
+//
+TBool VtUiUtility::HasCameras( MVtEngMedia& aMedia )
+    {
+    TInt sourceCaps;
+    if ( aMedia.GetSourcesCaps( sourceCaps ) != KErrNone )
+        {
+        sourceCaps = 0;
+        }
+    return ( sourceCaps & MVtEngMedia::ESourceCapsPrimaryCamera ) ||
+           ( sourceCaps & MVtEngMedia::ESourceCapsSecondaryCamera );
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiUtility::IsAudioRoutingAvailable
+// -----------------------------------------------------------------------------
+//
+TBool VtUiUtility::IsAudioRoutingAvailable(
+        MVtEngAudio& aAudio,
+        const MVtEngAudio::TAudioRoutingState aCurrent,
+        const MVtEngAudio::TAudioRoutingState aSource,
+        const MVtEngAudio::TAudioRoutingState aTarget )
+    {
+    TBool result = EFalse;
+    if ( aCurrent == aSource )
+        {
+        TBool available = EFalse;
+        TInt err = aAudio.GetRoutingAvailability( aTarget, available );
+
+        result = ( ( err == KErrNone ) && ( available ) );
+        }
+
+    return result;
+    }
+
+
+// -----------------------------------------------------------------------------
+// VtUiUtility::IsDTMFEvent
+// -----------------------------------------------------------------------------
+//
+TBool VtUiUtility::IsDTMFEvent( const TKeyEvent& aKeyEvent, TChar& aDtmfTone )
+    {
+    TBuf<1> buffer; // one character
+    buffer.Append( aKeyEvent.iCode );
+    AknTextUtils::ConvertDigitsTo( buffer, EDigitTypeWestern );
+    aDtmfTone = buffer[ 0 ];
+    return
+        ( KVtUiDTMFCharacters().Locate( buffer[ 0 ] ) != KErrNotFound );
+    }
+
+// -----------------------------------------------------------------------------
+// VtUiUtility::IsDTMFCharacter
+// -----------------------------------------------------------------------------
+//
+TBool VtUiUtility::IsDTMFCharacter( const TChar aChar )
+    {
+    return
+        ( KVtUiDTMFCharacters().Locate( aChar ) != KErrNotFound );
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/commands/cvtuicmdbase.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,76 @@
+/*
+* 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:  UI command bases class implementation.
+*
+*/
+
+
+#include "cvtuicmdbase.h"
+
+// ======== LOCAL FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// FindCVtUiCmdBaseById
+// ---------------------------------------------------------------------------
+//
+TInt FindCVtUiCmdBaseById( const CVtUiCmdBase& aC1, const CVtUiCmdBase& aC2 )
+    {
+    return ( aC1.CommandId() - aC2.CommandId() );
+    }
+
+// ---------------------------------------------------------------------------
+// FindCVtUiCmdBaseByKey
+// ---------------------------------------------------------------------------
+//
+TInt FindCVtUiCmdBaseByKey( const TInt* aKey, const CVtUiCmdBase& aC )
+    {
+    return ( *aKey - aC.CommandId() );
+    }
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdBase::CommandId
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiCmdBase::CommandId() const
+    {
+    return iCommandId;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdBase::LinearOrder
+// ---------------------------------------------------------------------------
+//
+TLinearOrder< CVtUiCmdBase > CVtUiCmdBase::LinearOrder()
+    {
+    return TLinearOrder< CVtUiCmdBase >( ::FindCVtUiCmdBaseById );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdBase::LinearOrder
+// ---------------------------------------------------------------------------
+//
+CVtUiCmdBase::TKeyOrder CVtUiCmdBase::KeyOrder()
+    {
+    return ::FindCVtUiCmdBaseByKey;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdBase::CVtUiCmdBase
+// ---------------------------------------------------------------------------
+//
+CVtUiCmdBase::CVtUiCmdBase( TInt aCommandId ) : iCommandId( aCommandId )
+    {
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/commands/cvtuicmdcontext.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,209 @@
+/*
+* 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:  Command context base class.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "cvtuicmdcontext.h"
+#include "cvtuicmdvalidatorbase.h"
+#include "cvtuicmdvalidationactionbase.h"
+#include "mvtuicommandmanager.h"
+
+// ======== LOCAL FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Compare routine used by InsertInOrder() and FindInOrder() to sort validator
+// instances by priority.
+// ---------------------------------------------------------------------------
+//
+TInt ValidatorPriCmpFunc( const CVtUiCmdValidatorBase& aV1,
+    const CVtUiCmdValidatorBase& aV2 )
+    {
+    return aV1.Priority() - aV2.Priority();
+    }
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdContext::~CVtUiCmdContext
+// ---------------------------------------------------------------------------
+//
+CVtUiCmdContext::~CVtUiCmdContext()
+    {
+    __VTPRINTENTER( "CmdCtx.~" )
+    iValidators.Reset();
+    __VTPRINTEXIT( "CmdCtx.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdContext::ReferencePriority
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiCmdContext::ReferencePriority() const
+    {
+    __VTPRINTENTER( "CmdCtx.ReferencePriority" )
+    __VTPRINTEXITR( "CmdCtx.ReferencePriority %d", iReferencePriority )
+    return iReferencePriority;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdContext::ContextType
+// ---------------------------------------------------------------------------
+//
+TVtUiCmdContextType CVtUiCmdContext::ContextType() const
+    {
+    __VTPRINTENTER( "CmdCtx.ContextType" )
+    __VTPRINTEXITR( "CmdCtx.ContextType %d", iContextType )
+    return iContextType;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdContext::AddValidator
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiCmdContext::AddValidator( CVtUiCmdValidatorBase& aValidator )
+    {
+    __VTPRINTENTER( "CmdCtx.AddValidator" )
+    TInt result( KErrNone );
+    if ( !aValidator.ValidatesContext( iContextType ) )
+        {
+        result = KErrNotSupported;
+        }
+    else
+        {
+        result = iValidators.InsertInOrderAllowRepeats( &aValidator,
+            TLinearOrder< CVtUiCmdValidatorBase >( ::ValidatorPriCmpFunc ) );
+        }
+    __VTPRINTEXITR( "CmdCtx.AddValidator %d", result )
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdContext::RemoveValidator
+// ---------------------------------------------------------------------------
+//
+void CVtUiCmdContext::RemoveValidator( const CVtUiCmdValidatorBase& aValidator )
+    {
+    __VTPRINTENTER( "CmdCtx.RemoveValidator" )
+    TInt idx( iValidators.FindInOrder( &aValidator,
+        TLinearOrder< CVtUiCmdValidatorBase >( ::ValidatorPriCmpFunc ) ) );
+
+    if ( idx != KErrNotFound )
+        {
+        iValidators.Remove( idx );
+        }
+    __VTPRINTEXIT( "CmdCtx.RemoveValidator" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdContext::CVtUiCmdContext
+// ---------------------------------------------------------------------------
+//
+CVtUiCmdContext::CVtUiCmdContext( MVtUiCommandManager& aCommandManager,
+    TVtUiCmdContextType aCtxType, TInt aReferencePriority )
+    : iCommandManager( aCommandManager ),
+      iReferencePriority( aReferencePriority ), iContextType( aCtxType )
+    {
+    __VTPRINTENTER( "CmdCtx.ctor" )
+    __VTPRINTEXIT( "CmdCtx.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdContext::ValidateMenuItemsL
+// ---------------------------------------------------------------------------
+//
+void CVtUiCmdContext::ValidateMenuItemsL(
+    CVtUiCmdValidationActionBase& aAction )
+    {
+    __VTPRINTENTER( "CmdCtx.ValidateMenuItemsL" )
+    __VTPRINT2( DEBUG_GEN, "    count = %d", iValidators.Count() )
+    for ( TInt i = iValidators.Count() - 1; i >= 0; i-- )
+        {
+        iValidators[ i ]->ValidateMenuItemsL( aAction, iReferencePriority );
+        }
+    __VTPRINTEXIT( "CmdCtx.ValidateMenuItemsL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdContext::ValidateSoftkeyItemsL
+// ---------------------------------------------------------------------------
+//
+void CVtUiCmdContext::ValidateSoftkeyItemsL(
+    CVtUiCmdValidationActionBase& aAction )
+    {
+    __VTPRINTENTER( "CmdCtx.ValidateSoftkeyItemsL" )
+    __VTPRINT2( DEBUG_GEN, "    count = %d", iValidators.Count() )
+    for ( TInt i = iValidators.Count() - 1; i >= 0; i-- )
+        {
+        iValidators[ i ]->ValidateSoftkeyItemsL( aAction, iReferencePriority );
+        }
+    __VTPRINTEXIT( "CmdCtx.ValidateSoftkeyItemsL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdContext::ValidateToolbarItemsL
+// ---------------------------------------------------------------------------
+//
+void CVtUiCmdContext::ValidateToolbarItemsL(
+    CVtUiCmdValidationActionBase& aAction )
+    {
+    __VTPRINTENTER( "CmdCtx.ValidateToolbarItemsL" )
+    __VTPRINT2( DEBUG_GEN, "    count = %d", iValidators.Count() )
+    for ( TInt i = iValidators.Count() - 1; i >= 0; i-- )
+        {
+        iValidators[ i ]->ValidateToolbarItemsL( aAction, iReferencePriority );
+        }
+    __VTPRINTEXIT( "CmdCtx.ValidateToolbarItemsL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdContext::CustomValidationL
+// ---------------------------------------------------------------------------
+//
+void CVtUiCmdContext::CustomValidationL(
+    CVtUiCmdCustomValidationActionBase& aAction )
+    {
+    __VTPRINTENTER( "CmdCtx.CustomValidationL" )
+    __VTPRINT2( DEBUG_GEN, "    count = %d", iValidators.Count() )
+    for ( TInt i = iValidators.Count() - 1; i >= 0; i-- )
+        {
+        iValidators[ i ]->CustomValidationL( aAction, iReferencePriority );
+        }
+    __VTPRINTEXIT( "CmdCtx.CustomValidationL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdContext::RegisterCommandContextL
+// ---------------------------------------------------------------------------
+//
+void CVtUiCmdContext::RegisterCommandContextL()
+    {
+    __VTPRINTENTER( "CmdCtx.RegisterCommandContextL" )
+    User::LeaveIfError( iCommandManager.RegisterCommandContext( *this ) );
+    __VTPRINTEXIT( "CmdCtx.RegisterCommandContextL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdContext::UnregisterCommandContext
+// ---------------------------------------------------------------------------
+//
+void CVtUiCmdContext::UnregisterCommandContext()
+    {
+    __VTPRINTENTER( "CmdCtx.UnregisterCommandContext" )
+    iCommandManager.UnregisterCommandContext( *this );
+    __VTPRINTEXIT( "CmdCtx.UnregisterCommandContext" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/commands/cvtuicmdcustomvalidationactionbase.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,43 @@
+/*
+* 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:  Custom command validation action base class.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "cvtuicmdcustomvalidationactionbase.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdCustomValidationActionBase::CustomTypeId
+// ---------------------------------------------------------------------------
+//
+CVtUiCmdCustomValidationActionBase::TCustomTypeId
+CVtUiCmdCustomValidationActionBase::CustomTypeId() const
+    {
+    return iCustomTypeId;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdCustomValidationActionBase::BeginProcess
+// ---------------------------------------------------------------------------
+//
+CVtUiCmdCustomValidationActionBase::CVtUiCmdCustomValidationActionBase(
+    TCustomTypeId aCustomTypeId )
+    : iCustomTypeId( aCustomTypeId )
+    {
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/commands/cvtuicmdstatecheckaction.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,89 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Menu item dimmer action class.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "cvtuicmdstatecheckaction.h"
+#include "tvtuicmdvalidatorcallback.h"
+#include "tvtuicmdcontexttype.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdStateCheckAction::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiCmdStateCheckAction* CVtUiCmdStateCheckAction::NewL()
+    {
+    __VTPRINTENTER( "CmdStChkAct.NewL" )
+    CVtUiCmdStateCheckAction* self =
+        new ( ELeave ) CVtUiCmdStateCheckAction();
+    __VTPRINTEXIT( "CmdStChkAct.NewL" )
+    return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdStateCheckAction::SetCommand
+// ---------------------------------------------------------------------------
+//
+void CVtUiCmdStateCheckAction::SetCommand( TInt aCommandId )
+    {
+    __VTPRINTENTER( "CmdStChkAct.SetCommand" )
+    iCommandId = aCommandId;
+    iIsCommandAllowed = EFalse;
+    __VTPRINTEXIT( "CmdStChkAct.SetCommand" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdStateCheckAction::IsCommandAllowed
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiCmdStateCheckAction::IsCommandAllowed() const
+    {
+    return iIsCommandAllowed;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdStateCheckAction::ProcessL
+// ---------------------------------------------------------------------------
+//
+void CVtUiCmdStateCheckAction::ProcessL(
+    const MVtUiCmdValidatorCallBack& aCallBack )
+    {
+    __VTPRINTENTER( "CmdStChkAct.ProcessL" )
+	if ( !IsCommandHandled( iCommandId ) )
+	    {
+        if ( aCallBack.Call( iCommandId ) )
+            {
+    	    CommandHandledL( iCommandId );
+    	    iIsCommandAllowed = ETrue;
+            }
+	    }
+    __VTPRINTEXIT( "CmdStChkAct.ProcessL" )
+	}
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdStateCheckAction::CVtUiCmdStateCheckAction
+// ---------------------------------------------------------------------------
+//
+CVtUiCmdStateCheckAction::CVtUiCmdStateCheckAction()
+    : CVtUiCmdCustomValidationActionBase( EVtUiCmdContextTypeExecution )
+    {
+    __VTPRINTENTER( "CmdStChkAct.ctor" )
+    __VTPRINTEXIT( "CmdStChkAct.ctor" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/commands/cvtuicmdvalidationactionbase.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,79 @@
+/*
+* 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:  Command validation action base class.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "cvtuicmdvalidationactionbase.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdValidationActionBase::~CVtUiCmdValidationActionBase
+// ---------------------------------------------------------------------------
+//
+CVtUiCmdValidationActionBase::~CVtUiCmdValidationActionBase()
+    {
+    __VTPRINTENTER( "ValActBase.~" )
+    iHandledCommands.Reset();
+    __VTPRINTEXIT( "ValActBase.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdValidationActionBase::BeginProcess
+// ---------------------------------------------------------------------------
+//
+void CVtUiCmdValidationActionBase::BeginProcess()
+    {
+    __VTPRINTENTER( "ValActBase.BeginProcess" )
+    iHandledCommands.Reset();
+    __VTPRINTEXIT( "ValActBase.BeginProcess" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdValidationActionBase::EndProcess
+// ---------------------------------------------------------------------------
+//
+void CVtUiCmdValidationActionBase::EndProcess()
+    {
+    __VTPRINTENTER( "ValActBase.EndProcess" )
+    __VTPRINTEXIT( "ValActBase.EndProcess" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdValidationActionBase::CommandHandledL
+// ---------------------------------------------------------------------------
+//
+void CVtUiCmdValidationActionBase::CommandHandledL( TInt aCommandId )
+    {
+    __VTPRINTENTER( "ValActBase.CommandHandledL" )
+    __VTPRINT2( DEBUG_GEN, "    cmdId = %d", aCommandId );
+    User::LeaveIfError( iHandledCommands.InsertInOrder( aCommandId ) );
+    __VTPRINTEXIT( "ValActBase.CommandHandledL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdValidationActionBase::IsCommandHandled
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiCmdValidationActionBase::IsCommandHandled( TInt aCommandId ) const
+    {
+    __VTPRINTENTER( "ValActBase.IsCommandHandled" )
+    TBool result( iHandledCommands.FindInOrder( aCommandId ) != KErrNotFound );
+    __VTPRINTEXITR( "ValActBase.IsCommandHandled %d", result )
+    return result;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/commands/cvtuicmdvalidatorbase.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,45 @@
+/*
+* 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:  Command validator base class.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "cvtuicmdvalidatorbase.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdValidatorBase::Priority
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiCmdValidatorBase::Priority() const
+    {
+    __VTPRINTENTER( "ValidatorBase.Priority" )
+    __VTPRINTEXITR( "ValidatorBase.Priority %d", iPriority )
+    return iPriority;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdValidatorBase::CVtUiCmdValidatorBase
+// ---------------------------------------------------------------------------
+//
+CVtUiCmdValidatorBase::CVtUiCmdValidatorBase( TInt aPriority )
+    : iPriority( aPriority )
+    {
+    __VTPRINTENTER( "ValidatorBase.ctor" )
+    __VTPRINTEXIT( "ValidatorBase.ctor" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/commands/cvtuicommandmanager.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,421 @@
+/*
+* 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:  Command manager class.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "cvtuicmdbase.h"
+#include "cvtuicommandmanager.h"
+#include "cvtuicommandpolicymanager.h"
+#include "cvtuiprimarycmdpolicy.h"
+#include "cvtuiexecutioncontext.h"
+#include "cvtuimenuitemdimmeraction.h"
+#include "tvtuistates.h"
+#include "mvtuicommandui.h"
+#include "cvtuicommandmodifybase.h"
+#include "cvtuicmdstatecheckaction.h"
+
+// Default array granularity.
+static const TInt KVtUiArrayGranularity = 1;
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::NewL
+// -----------------------------------------------------------------------------
+//
+CVtUiCommandManager* CVtUiCommandManager::NewL( const TVtUiStates& aUiStates,
+    CVtUiAppUi& aAppUi )
+    {
+    __VTPRINTENTER( "CmdMgr.NewL" )
+    CVtUiCommandManager* self = new ( ELeave ) CVtUiCommandManager( aUiStates,
+        aAppUi );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "CmdMgr.NewL" )
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::~CVtUiCommandManager
+// -----------------------------------------------------------------------------
+//
+CVtUiCommandManager::~CVtUiCommandManager()
+    {
+    __VTPRINTENTER( "CmdMgr.~" )
+    iCommands.Reset();
+    iCommandUis.Reset();
+    iCommandModifiers.Reset();
+    delete iExecutionContext;
+    delete iCmdStateCheckAction;
+    delete iCmdPolicyMgr;
+    __VTPRINTEXIT( "CmdMgr.~" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::UiStates
+// -----------------------------------------------------------------------------
+//
+const TVtUiStates& CVtUiCommandManager::UiStates() const
+    {
+    return iUiStates;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::AppUi
+// -----------------------------------------------------------------------------
+//
+const CVtUiAppUi& CVtUiCommandManager::AppUi() const
+    {
+    return iAppUi;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::VideoTelephonyVariation
+// -----------------------------------------------------------------------------
+//
+const TVtUiVideoTelephonyVariation&
+CVtUiCommandManager::VideoTelephonyVariation() const
+    {
+    return iVtVariation;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::HandleCommandL
+// -----------------------------------------------------------------------------
+//
+void CVtUiCommandManager::HandleCommandL( TInt aCommandId )
+    {
+    TInt index( iCommands.FindInOrder( aCommandId, CVtUiCmdBase::KeyOrder() ) );
+    if ( index != KErrNotFound )
+        {
+        iCommands[ index ]->HandleL();
+        }
+    /*
+
+    This was commented out, because current CVtUiAppUi silently ignores
+    commands that are not handled, changed this to emulate same kind of
+    behaviour.
+
+    else
+        {
+        User::Leave( KErrNotFound );
+        }
+    */
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::AddCommandUi
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiCommandManager::AddCommandUi( MVtUiCommandUi& aCommandUi )
+    {
+    __VTPRINTENTER( "CmdMgr.AddCommandUi" )
+    TInt result( KErrAlreadyExists );
+    TInt idx( iCommandUis.Find( &aCommandUi ) );
+    if ( idx == KErrNotFound )
+        {
+        result = iCommandUis.Append( &aCommandUi );
+        if ( result == KErrNone )
+            {
+            result = CommandUiAdded( aCommandUi );
+            }
+        }
+    __VTPRINTEXITR( "CmdMgr.AddCommandUi %d", result )
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::RemoveCommandUi
+// -----------------------------------------------------------------------------
+//
+void CVtUiCommandManager::RemoveCommandUi( MVtUiCommandUi& aCommandUi )
+    {
+    __VTPRINTENTER( "CmdMgr.RemoveCommandUi" )
+    TInt idx( iCommandUis.Find( &aCommandUi ) );
+    if ( idx != KErrNotFound )
+        {
+        iCommandUis.Remove( idx );
+        CommandUiRemoved( aCommandUi );
+        }
+    __VTPRINTEXIT( "CmdMgr.RemoveCommandUi" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::ValidateMenuItemsL
+// -----------------------------------------------------------------------------
+//
+void CVtUiCommandManager::ValidateMenuItemsL(
+    CVtUiCmdValidationActionBase& aAction )
+    {
+    __VTPRINTENTER( "CmdMgr.ValidateMenuItemsL" )
+    iCmdPolicyMgr->ValidateMenuItemsL( aAction );
+    __VTPRINTEXIT( "CmdMgr.ValidateMenuItemsL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::ValidateSoftkeyItemsL
+// -----------------------------------------------------------------------------
+//
+void CVtUiCommandManager::ValidateSoftkeyItemsL(
+    CVtUiCmdValidationActionBase& aAction )
+    {
+    __VTPRINTENTER( "CmdMgr.ValidateSoftkeyItemsL" )
+    iCmdPolicyMgr->ValidateSoftkeyItemsL( aAction );
+    __VTPRINTEXIT( "CmdMgr.ValidateSoftkeyItemsL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::ValidateToolbarItemsL
+// -----------------------------------------------------------------------------
+//
+void CVtUiCommandManager::ValidateToolbarItemsL(
+    CVtUiCmdValidationActionBase& aAction )
+    {
+    __VTPRINTENTER( "CmdMgr.ValidateToolbarItemsL" )
+    iCmdPolicyMgr->ValidateToolbarItemsL( aAction );
+    __VTPRINTEXIT( "CmdMgr.ValidateToolbarItemsL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::IsCommandAllowedL
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiCommandManager::IsCommandAllowedL( TInt aCommandId )
+    {
+    __VTPRINTENTER( "CmdMgr.IsCommandAllowedL" )
+    TInt index( iCommands.FindInOrder( aCommandId, CVtUiCmdBase::KeyOrder() ) );
+    if ( index == KErrNotFound )
+        {
+        iCmdStateCheckAction->SetCommand( aCommandId );
+        iCmdPolicyMgr->CustomValidateL( *iCmdStateCheckAction );
+        }
+    else
+        {
+        return iCommands[ index ]->IsEnabled();
+        }
+    __VTPRINTEXIT( "CmdMgr.IsCommandAllowedL" )
+    return iCmdStateCheckAction->IsCommandAllowed();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::RegisterCommandContext
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiCommandManager::RegisterCommandContext( CVtUiCmdContext& aContext )
+    {
+    __VTPRINTENTER( "CmdMgr.RegisterCommandContext" )
+    TInt result( iCmdPolicyMgr->RegisterCommandContext( aContext ) );
+    __VTPRINTEXITR( "CmdMgr.RegisterCommandContext %d", result )
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::UnregisterCommandContext
+// -----------------------------------------------------------------------------
+//
+void CVtUiCommandManager::UnregisterCommandContext( CVtUiCmdContext& aContext )
+    {
+    __VTPRINTENTER( "CmdMgr.UnregisterCommandContext" )
+    iCmdPolicyMgr->UnregisterCommandContext( aContext );
+    __VTPRINTEXIT( "CmdMgr.UnregisterCommandContext" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::AddValidator
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiCommandManager::AddValidator( CVtUiCmdValidatorBase& aValidator )
+    {
+    __VTPRINTENTER( "CmdMgr.AddValidator" )
+    TInt result( iCmdPolicyMgr->AddValidator( aValidator ) );
+    __VTPRINTEXITR( "CmdMgr.AddValidator %d", result )
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::RemoveValidator
+// -----------------------------------------------------------------------------
+//
+void CVtUiCommandManager::RemoveValidator(
+    CVtUiCmdValidatorBase& aValidator )
+    {
+    __VTPRINTENTER( "CmdMgr.RemoveValidator" )
+    iCmdPolicyMgr->RemoveValidator( aValidator );
+    __VTPRINTEXIT( "CmdMgr.RemoveValidator" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::RefreshL
+// -----------------------------------------------------------------------------
+//
+void CVtUiCommandManager::RefreshL()
+    {
+    __VTPRINTENTER( "CmdMgr.RefreshL" )
+    for ( TInt i = iCommandUis.Count() - 1; i >= 0; i-- )
+        {
+        iCommandUis[ i ]->RefreshL();
+        }
+    __VTPRINTEXIT( "CmdMgr.RefreshL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::AddCommandModifier
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiCommandManager::AddCommandModifier(
+    CVtUiCommandModifyBase& aModifier )
+    {
+    __VTPRINTENTER( "CmdMgr.AddCommandModifier" )
+    TInt result(
+        iCommandModifiers.InsertInOrder( &aModifier,
+            CVtUiCommandModifyBase::PriorityOrder() ) );
+    if ( result == KErrNone )
+        {
+        result = CommandModifierAdded( aModifier );
+        }
+    __VTPRINTEXITR( "CmdMgr.AddCommandModifier %d", result )
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::RemoveCommandModifier
+// -----------------------------------------------------------------------------
+//
+void CVtUiCommandManager::RemoveCommandModifier(
+    CVtUiCommandModifyBase& aModifier )
+    {
+    __VTPRINTENTER( "CmdMgr.RemoveCommandModifier" )
+    TInt idx( iCommandModifiers.FindInOrder( &aModifier,
+        CVtUiCommandModifyBase::PriorityOrder() ) );
+    if ( idx != KErrNotFound )
+        {
+        iCommandModifiers.Remove( idx );
+        CommandModifierRemoved( aModifier );
+        }
+    __VTPRINTEXIT( "CmdMgr.RemoveCommandModifier" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::RegisterCommandL
+// -----------------------------------------------------------------------------
+//
+void CVtUiCommandManager::RegisterCommandL( CVtUiCmdBase& aCommand )
+    {
+    __VTPRINTENTER( "CmdMgr.RegisterCommandL" )
+    iCommands.InsertInOrderL( &aCommand, CVtUiCmdBase::LinearOrder() );
+    __VTPRINTEXIT( "CmdMgr.RegisterCommandL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::UnregisterCommand
+// -----------------------------------------------------------------------------
+//
+void CVtUiCommandManager::UnregisterCommand( const CVtUiCmdBase& aCommand )
+    {
+    __VTPRINTENTER( "CmdMgr.UnregisterCommand" )
+    TInt index( iCommands.FindInOrder( &aCommand,
+        CVtUiCmdBase::LinearOrder() ) );
+    if ( index != KErrNotFound )
+        {
+        iCommands.Remove( index );
+        }
+    __VTPRINTEXIT( "CmdMgr.UnregisterCommand" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::CVtUiCommandManager
+// -----------------------------------------------------------------------------
+//
+CVtUiCommandManager::CVtUiCommandManager( const TVtUiStates& aUiStates, 
+    CVtUiAppUi& aAppUi )
+: iCommandUis( KVtUiArrayGranularity ),
+  iCommandModifiers( KVtUiArrayGranularity ),
+  iCommands( KVtUiArrayGranularity ),
+  iUiStates( aUiStates ),
+  iAppUi( aAppUi )
+    {
+    __VTPRINTENTER( "CmdMgr.ctor" )
+    __VTPRINTEXIT( "CmdMgr.ctor" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CVtUiCommandManager::ConstructL()
+    {
+    __VTPRINTENTER( "CmdMgr.ConstructL" )
+    iVtVariation.ReadL();
+    iCmdPolicyMgr = CVtUiCommandPolicyManager::NewL( *this );
+    iCmdStateCheckAction = CVtUiCmdStateCheckAction::NewL();
+    iExecutionContext = CVtUiExecutionContext::NewL( *this );
+    __VTPRINTEXIT( "CmdMgr.ConstructL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::CommandModifierAdded
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiCommandManager::CommandModifierAdded(
+    CVtUiCommandModifyBase& aModifier )
+    {
+    TInt error( KErrNone );
+    for ( TInt i = iCommandUis.Count() - 1; !error && i >= 0; i-- )
+        {
+        error = iCommandUis[ i ]->AddCommandModifier( aModifier );
+        }
+    return error;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::CommandModifierRemoved
+// -----------------------------------------------------------------------------
+//
+void CVtUiCommandManager::CommandModifierRemoved(
+    CVtUiCommandModifyBase& aModifier )
+    {
+    for ( TInt i = iCommandUis.Count() - 1; i >= 0; i-- )
+        {
+        iCommandUis[ i ]->RemoveCommandModifier( aModifier );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::CommandUiAdded
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiCommandManager::CommandUiAdded( MVtUiCommandUi& aCommandUi )
+    {
+    TInt error( KErrNone );
+    for ( TInt i = iCommandModifiers.Count() - 1; !error && i >= 0; i-- )
+        {
+        error = aCommandUi.AddCommandModifier( *iCommandModifiers[ i ] );
+        }
+    return error;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiCommandManager::CommandUiRemoved
+// -----------------------------------------------------------------------------
+//
+void CVtUiCommandManager::CommandUiRemoved( MVtUiCommandUi& aCommandUi )
+    {
+    for ( TInt i = iCommandModifiers.Count() - 1; i >= 0; i-- )
+        {
+        aCommandUi.RemoveCommandModifier( *iCommandModifiers[ i ] );
+        }
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/commands/cvtuicommandmodifybase.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,52 @@
+/*
+* 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:  Command context base class.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "cvtuicommandmodifybase.h"
+
+// ======== LOCAL FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandModifyBase::CVtUiCommandModifyBase
+// ---------------------------------------------------------------------------
+//
+CVtUiCommandModifyBase::CVtUiCommandModifyBase( TInt aPriority )
+    : iPriority( aPriority )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandModifyBase::PriorityOrder
+// ---------------------------------------------------------------------------
+//
+TLinearOrder< CVtUiCommandModifyBase > CVtUiCommandModifyBase::PriorityOrder()
+    {
+    return TLinearOrder< CVtUiCommandModifyBase >( PriorityOrderFunc );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandModifyBase::PriorityOrderFunc
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiCommandModifyBase::PriorityOrderFunc(
+    const CVtUiCommandModifyBase& aM1, const CVtUiCommandModifyBase& aM2 )
+    {
+    return aM1.iPriority - aM2.iPriority;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/commands/cvtuicommandpolicymanager.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,334 @@
+/*
+* 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:  Command policy manager class.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "cvtuicommandpolicymanager.h"
+#include "cvtuicmdcontext.h"
+#include "cvtuicmdvalidatorbase.h"
+#include "cvtuicmdvalidationactionbase.h"
+#include "cvtuicmdcustomvalidationactionbase.h"
+#include "cvtuiprimarycmdpolicy.h"
+#include "cvtuicommandmanager.h"
+
+// ======== LOCAL FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Used in InsertInOrder() method to compare two instances of CVtUiCmdContext.
+// ---------------------------------------------------------------------------
+//
+TInt ContextTypeCmpFunc( const CVtUiCmdContext& aV1,
+    const CVtUiCmdContext& aV2 )
+    {
+    return static_cast< TInt >( aV1.ContextType() ) -
+        static_cast< TInt >( aV2.ContextType() );
+    }
+
+// ---------------------------------------------------------------------------
+// Used in FindInOrder() method to compare instances of CVtUiCmdContext versus
+// given key value.
+// ---------------------------------------------------------------------------
+//
+TInt ContextTypeCmpFuncVsKey( const TVtUiCmdContextType* aKey,
+    const CVtUiCmdContext& aValue )
+    {
+    return static_cast< TInt > ( *aKey ) -
+        static_cast< TInt >( aValue.ContextType() );
+    }
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandPolicyManager::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiCommandPolicyManager*
+CVtUiCommandPolicyManager::NewL( const CVtUiCommandManager& aCmdManager )
+    {
+    CVtUiCommandPolicyManager* self =
+        new ( ELeave ) CVtUiCommandPolicyManager( aCmdManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandPolicyManager::~CVtUiCommandPolicyManager
+// ---------------------------------------------------------------------------
+//
+CVtUiCommandPolicyManager::~CVtUiCommandPolicyManager()
+    {
+    __VTPRINTENTER( "CmdPolicyMgr.~" )
+    iContexts.Reset();
+    iValidators.Reset();
+    delete iPrimaryCommandPolicy;
+    __VTPRINTEXIT( "CmdPolicyMgr.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandPolicyManager::RegisterCommandContext
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiCommandPolicyManager::RegisterCommandContext(
+    CVtUiCmdContext& aContext )
+    {
+    __VTPRINTENTER( "CmdPolicyMgr.RegisterCommandContext" )
+    TLinearOrder< CVtUiCmdContext > cmpFunc( ::ContextTypeCmpFunc );
+    TInt result( KErrNone );
+    TInt index( iContexts.FindInOrder( &aContext, cmpFunc ) );
+    if ( index == KErrNotFound )
+        {
+        TInt error( iContexts.InsertInOrder( &aContext, cmpFunc ) );
+        if ( !error )
+            {
+            CommandContextRegistered( aContext );
+            }
+        result = error;
+        }
+    else
+        {
+        result = KErrAlreadyExists;
+        }
+    __VTPRINTEXITR( "CmdPolicyMgr.RegisterCommandContext %d", result )
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandPolicyManager::UnregisterCommandContext
+// ---------------------------------------------------------------------------
+//
+void CVtUiCommandPolicyManager::UnregisterCommandContext(
+    CVtUiCmdContext& aContext )
+    {
+    __VTPRINTENTER( "CmdPolicyMgr.UnregisterCommandContext" )
+    TLinearOrder< CVtUiCmdContext > cmpFunc( ::ContextTypeCmpFunc );
+    TInt index( iContexts.FindInOrder( &aContext, cmpFunc ) );
+    if ( index != KErrNotFound )
+        {
+        iContexts.Remove( index );
+        CommandContextUnregistered( aContext );
+        }
+    __VTPRINTEXIT( "CmdPolicyMgr.UnregisterCommandContext" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandPolicyManager::AddValidator
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiCommandPolicyManager::AddValidator(
+    CVtUiCmdValidatorBase& aValidator )
+    {
+    __VTPRINTENTER( "CmdPolicyMgr.AddValidator" )
+    TInt error( iValidators.Append( &aValidator ) );
+    if ( !error )
+        {
+        ValidatorAdded( aValidator );
+        }
+    __VTPRINTEXITR( "CmdPolicyMgr.AddValidator %d", error )
+    return error;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandPolicyManager::RemoveValidator
+// ---------------------------------------------------------------------------
+//
+void CVtUiCommandPolicyManager::RemoveValidator(
+    CVtUiCmdValidatorBase& aValidator )
+    {
+    __VTPRINTENTER( "CmdPolicyMgr.RemoveValidator" )
+    TInt index( iValidators.Find( &aValidator ) );
+    if ( index != KErrNotFound )
+        {
+        iValidators.Remove( index );
+        ValidatorRemoved( aValidator );
+        }
+    __VTPRINTEXIT( "CmdPolicyMgr.RemoveValidator" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandPolicyManager::ValidateMenuItemsL
+// ---------------------------------------------------------------------------
+//
+void CVtUiCommandPolicyManager::ValidateMenuItemsL(
+    CVtUiCmdValidationActionBase& aAction )
+    {
+    __VTPRINTENTER( "CmdPolicyMgr.ValidateMenuItemsL" )
+    ValidateL( EVtUiCmdContextTypeMenu, aAction );
+    __VTPRINTEXIT( "CmdPolicyMgr.ValidateMenuItemsL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandPolicyManager::ValidateSoftkeyItemsL
+// ---------------------------------------------------------------------------
+//
+void CVtUiCommandPolicyManager::ValidateSoftkeyItemsL(
+    CVtUiCmdValidationActionBase& aAction )
+    {
+    __VTPRINTENTER( "CmdPolicyMgr.ValidateSoftkeyItemsL" )
+    ValidateL( EVtUiCmdContextTypeSoftkey, aAction );
+    __VTPRINTEXIT( "CmdPolicyMgr.ValidateSoftkeyItemsL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandPolicyManager::ValidateToolbarItemsL
+// ---------------------------------------------------------------------------
+//
+void CVtUiCommandPolicyManager::ValidateToolbarItemsL(
+    CVtUiCmdValidationActionBase& aAction )
+    {
+    __VTPRINTENTER( "CmdPolicyMgr.ValidateToolbarItemsL" )
+    ValidateL( EVtUiCmdContextTypeToolbar, aAction );
+    __VTPRINTEXIT( "CmdPolicyMgr.ValidateToolbarItemsL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandPolicyManager::CustomValidateL
+// ---------------------------------------------------------------------------
+//
+void CVtUiCommandPolicyManager::CustomValidateL(
+    CVtUiCmdCustomValidationActionBase& aAction )
+    {
+    __VTPRINTENTER( "CmdPolicyMgr.CustomValidateL" )
+    ValidateL( EVtUiCmdContextTypeExecution, aAction );
+    __VTPRINTEXIT( "CmdPolicyMgr.CustomValidateL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandPolicyManager::CVtUiCommandPolicyManager
+// ---------------------------------------------------------------------------
+//
+CVtUiCommandPolicyManager::CVtUiCommandPolicyManager(
+    const CVtUiCommandManager& aCmdManager ) : iCommandManager( aCmdManager )
+    {
+    __VTPRINTENTER( "CmdPolicyMgr.ctor" )
+    __VTPRINTEXIT( "CmdPolicyMgr.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandPolicyManager::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiCommandPolicyManager::ConstructL()
+    {
+    __VTPRINTENTER( "CmdPolicyMgr.ConstructL" )
+    iPrimaryCommandPolicy =
+        CVtUiPrimaryCmdPolicy::NewL( iCommandManager.UiStates(),
+        iCommandManager.AppUi() );
+    User::LeaveIfError( AddValidator( *iPrimaryCommandPolicy ) );
+    __VTPRINTEXIT( "CmdPolicyMgr.ConstructL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandPolicyManager::CommandContextRegistered
+// ---------------------------------------------------------------------------
+//
+void CVtUiCommandPolicyManager::CommandContextRegistered(
+    CVtUiCmdContext& aContext )
+    {
+    __VTPRINTENTER( "CmdPolicyMgr.CommandContextRegistered" )
+    for ( TInt i = iValidators.Count() - 1 ; i >= 0; i-- )
+        {
+        aContext.AddValidator( *iValidators[ i ] );
+        }
+    __VTPRINTEXIT( "CmdPolicyMgr.CommandContextRegistered" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandPolicyManager::CommandContextUnregistered
+// ---------------------------------------------------------------------------
+//
+void CVtUiCommandPolicyManager::CommandContextUnregistered(
+    CVtUiCmdContext& aContext )
+    {
+    __VTPRINTENTER( "CmdPolicyMgr.CommandContextUnregistered" )
+    for ( TInt i = iValidators.Count() - 1 ; i >= 0; i-- )
+        {
+        aContext.RemoveValidator( *iValidators[ i ] );
+        }
+    __VTPRINTEXIT( "CmdPolicyMgr.CommandContextUnregistered" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandPolicyManager::ValidatorAdded
+// ---------------------------------------------------------------------------
+//
+void CVtUiCommandPolicyManager::ValidatorAdded(
+    CVtUiCmdValidatorBase& aValidator )
+    {
+    __VTPRINTENTER( "CmdPolicyMgr.ValidatorAdded" )
+    for ( TInt i = iContexts.Count() - 1 ; i >= 0; i-- )
+        {
+        iContexts[ i ]->AddValidator( aValidator );
+        }
+    __VTPRINTEXIT( "CmdPolicyMgr.ValidatorAdded" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandPolicyManager::ValidatorRemoved
+// ---------------------------------------------------------------------------
+//
+void CVtUiCommandPolicyManager::ValidatorRemoved(
+    CVtUiCmdValidatorBase& aValidator )
+    {
+    __VTPRINTENTER( "CmdPolicyMgr.ValidatorRemoved" )
+    for ( TInt i = iContexts.Count() - 1 ; i >= 0; i-- )
+        {
+        iContexts[ i ]->RemoveValidator( aValidator );
+        }
+    __VTPRINTEXIT( "CmdPolicyMgr.ValidatorRemoved" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandPolicyManager::FindCommandContextByType
+// ---------------------------------------------------------------------------
+//
+CVtUiCmdContext* CVtUiCommandPolicyManager::FindCommandContextByType(
+        TVtUiCmdContextType aContextType )
+    {
+    __VTPRINTENTER( "CmdPolicyMgr.FindCommandContextByType" )
+    CVtUiCmdContext* result = NULL;
+    TInt index( iContexts.FindInOrder( aContextType,
+        ::ContextTypeCmpFuncVsKey ) );
+    if ( index != KErrNotFound )
+        {
+        result = iContexts[ index ];
+        }
+    __VTPRINTEXIT( "CmdPolicyMgr.FindCommandContextByType" )
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCommandPolicyManager::ValidateL
+// ---------------------------------------------------------------------------
+//
+void CVtUiCommandPolicyManager::ValidateL( TVtUiCmdContextType aContextType,
+    CVtUiCmdValidationActionBase& aAction )
+    {
+    __VTPRINTENTER( "CmdPolicyMgr.ValidateL" )
+    CVtUiCmdContext* context =
+        FindCommandContextByType( aContextType );
+    if ( context )
+        {
+        aAction.BeginProcess();
+        context->ValidateL( aAction );
+        aAction.EndProcess();
+        }
+    __VTPRINTEXIT( "CmdPolicyMgr.ValidateL" )
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/commands/cvtuiexecutioncontext.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,91 @@
+/*
+* 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:  Execution context class.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "cvtuiexecutioncontext.h"
+#include "cvtuicmdcustomvalidationactionbase.h"
+
+/** Execution context reference priority */
+static const TInt KVtUiExecutionContextPriority = 1000;
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiExecutionContext::~CVtUiExecutionContext
+// ---------------------------------------------------------------------------
+//
+CVtUiExecutionContext::~CVtUiExecutionContext()
+    {
+    __VTPRINTENTER( "ExecCtx.~" )
+    UnregisterCommandContext();
+    __VTPRINTEXIT( "ExecCtx.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiExecutionContext::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiExecutionContext* CVtUiExecutionContext::NewL(
+    MVtUiCommandManager& aCommandManager )
+    {
+    __VTPRINTENTER( "ExecCtx.NewL" )
+    CVtUiExecutionContext* self =
+        new ( ELeave ) CVtUiExecutionContext( aCommandManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "ExecCtx.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiExecutionContext::ValidateL
+// ---------------------------------------------------------------------------
+//
+void CVtUiExecutionContext::ValidateL( CVtUiCmdValidationActionBase& aAction )
+    {
+    __VTPRINTENTER( "ExecCtx.ValidateL" )
+    CustomValidationL(
+        static_cast< CVtUiCmdCustomValidationActionBase& >( aAction ) );
+    __VTPRINTEXIT( "ExecCtx.ValidateL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiExecutionContext::CVtUiExecutionContext
+// ---------------------------------------------------------------------------
+//
+CVtUiExecutionContext::CVtUiExecutionContext(
+    MVtUiCommandManager& aCommandManager )
+    : CVtUiCmdContext( aCommandManager, EVtUiCmdContextTypeExecution,
+      KVtUiExecutionContextPriority )
+    {
+    __VTPRINTENTER( "ExecCtx.ctor" )
+    __VTPRINTEXIT( "ExecCtx.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiExecutionContext::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiExecutionContext::ConstructL()
+    {
+    __VTPRINTENTER( "ExecCtx.ConstructL" )
+    RegisterCommandContextL();
+    __VTPRINTEXIT( "ExecCtx.ConstructL" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/commands/cvtuifeaturecmdbase.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,48 @@
+/*
+* 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:  Feature based UI command base class implementation.
+*
+*/
+
+
+#include "cvtuifeaturecmdbase.h"
+#include "mvtuifeature.h"
+
+// ---------------------------------------------------------------------------
+// CVtUiFeatureCmdBase::HandleL
+// ---------------------------------------------------------------------------
+//
+void CVtUiFeatureCmdBase::HandleL()
+    {
+    iFeature.StartL();
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiFeatureCmdBase::IsEnabled
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiFeatureCmdBase::IsEnabled() const
+    {
+    return ( iFeature.State() == MVtUiFeature::EReady ) ||
+        ( iFeature.State() == MVtUiFeature::EUnprepared );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiFeatureCmdBase::CVtUiFeatureCmdBase
+// ---------------------------------------------------------------------------
+//
+CVtUiFeatureCmdBase::CVtUiFeatureCmdBase( MVtUiFeature& aFeature,
+    TInt aCommandId ) : CVtUiCmdBase( aCommandId ), iFeature( aFeature )
+    {
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/commands/cvtuiprimarycmdpolicy.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,534 @@
+/*
+* 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:  Primary policy class.
+*
+*/
+
+
+#include <featmgr.h>
+#include <avkon.hrh>
+#include <cvtlogger.h>
+#include <videotelui.rsg>
+#include <avkon.rsg>
+
+#include "cvtuiprimarycmdpolicy.h"
+#include "cvtuicmdvalidationactionbase.h"
+#include "cvtuicmdcustomvalidationactionbase.h"
+#include "tvtuicmdvalidatorcallback.h"
+#include "tvtuistates.h"
+#include "videotelui.hrh"
+#include "tVtuifeaturevariation.h"
+#include "CVtUiAppUi.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiPrimaryCmdPolicy::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiPrimaryCmdPolicy* CVtUiPrimaryCmdPolicy::NewL(
+    const TVtUiStates& aUiStates, const CVtUiAppUi& aAppUi )
+    {
+    __VTPRINTENTER( "PrimaryCmdPolicy.NewL" )
+    CVtUiPrimaryCmdPolicy* self =
+        new ( ELeave ) CVtUiPrimaryCmdPolicy( aUiStates, aAppUi );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "PrimaryCmdPolicy.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrimaryCmdPolicy::~CVtUiPrimaryCmdPolicy
+// ---------------------------------------------------------------------------
+//
+CVtUiPrimaryCmdPolicy::~CVtUiPrimaryCmdPolicy()
+    {
+    __VTPRINTENTER( "PrimaryCmdPolicy.~" )
+    __VTPRINTEXIT( "PrimaryCmdPolicy.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrimaryCmdPolicy::ValidateMenuItemsL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrimaryCmdPolicy::ValidateMenuItemsL(
+    CVtUiCmdValidationActionBase& aAction, TInt )
+    {
+    __VTPRINTENTER( "PrimaryCmdPolicy.ValidateMenuItemsL" )
+    aAction.ProcessL(
+        TVtUiCmdValidatorCallBack< CVtUiPrimaryCmdPolicy >( *this,
+            ValidateMenuCommand ) );
+    __VTPRINTEXIT( "PrimaryCmdPolicy.ValidateMenuItemsL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrimaryCmdPolicy::ValidateSoftkeyItemsL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrimaryCmdPolicy::ValidateSoftkeyItemsL(
+    CVtUiCmdValidationActionBase& aAction, TInt )
+    {
+    __VTPRINTENTER( "PrimaryCmdPolicy.ValidateSoftkeyItemsL" )
+    aAction.ProcessL(
+        TVtUiCmdValidatorCallBack< CVtUiPrimaryCmdPolicy >( *this,
+            ValidateSoftkey ) );
+    __VTPRINTEXIT( "PrimaryCmdPolicy.ValidateSoftkeyItemsL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrimaryCmdPolicy::ValidateSoftkeyItemsL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrimaryCmdPolicy::ValidateToolbarItemsL(
+    CVtUiCmdValidationActionBase& aAction, TInt )
+    {
+    __VTPRINTENTER( "PrimaryCmdPolicy.ValidateToolbarItemsL" )
+    aAction.ProcessL(
+        TVtUiCmdValidatorCallBack< CVtUiPrimaryCmdPolicy >( *this,
+            ValidateToolbarCommand ) );
+    __VTPRINTEXIT( "PrimaryCmdPolicy.ValidateToolbarItemsL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrimaryCmdPolicy::CustomValidationL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrimaryCmdPolicy::CustomValidationL(
+    CVtUiCmdCustomValidationActionBase& aAction, TInt )
+    {
+    __VTPRINTENTER( "PrimaryCmdPolicy.CustomValidationL" )
+    switch ( aAction.CustomTypeId() )
+        {
+    // Command state validation
+    case EVtUiCmdContextTypeExecution:
+        aAction.ProcessL( TVtUiCmdValidatorCallBack< CVtUiPrimaryCmdPolicy >(
+            *this, ValidateCommandState ) );
+        break;
+
+    default:
+        __VTPRINT2( DEBUG_GEN,
+            "PrimaryCmdPolicy.CustomValidationL unknown typeId = %d",
+            aAction.CustomTypeId() );
+        break;
+        }
+    __VTPRINTEXIT( "PrimaryCmdPolicy.CustomValidationL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrimaryCmdPolicy::ValidatesContext
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiPrimaryCmdPolicy::ValidatesContext(
+    const TVtUiCmdContextType& aCtxType ) const
+    {
+    __VTPRINTENTER( "PrimaryCmdPolicy.ValidatesContext" )
+
+    TBool result( EFalse );
+
+    switch ( aCtxType )
+        {
+    case EVtUiCmdContextTypeMenu:
+    case EVtUiCmdContextTypeSoftkey:
+    case EVtUiCmdContextTypeToolbar:
+    case EVtUiCmdContextTypeExecution:
+        result = ETrue;
+        break;
+
+    default:
+        break;
+        }
+
+    __VTPRINTEXITR( "PrimaryCmdPolicy.ValidatesContext %d", result )
+
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrimaryCmdPolicy::CVtUiPrimaryCmdPolicy
+// ---------------------------------------------------------------------------
+//
+CVtUiPrimaryCmdPolicy::CVtUiPrimaryCmdPolicy( const TVtUiStates& aUiStates,
+    const  CVtUiAppUi& aAppUi )
+    : CVtUiCmdValidatorBase( EVtUiCmdPolicyPriorityPrimary ),
+      iUiStates( aUiStates ), iAppUi( aAppUi )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrimaryCmdPolicy::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrimaryCmdPolicy::ConstructL()
+    {
+    TVtUiActiveIdleVariation activeIdleVariation;
+    iAIEnabled = activeIdleVariation.IsActiveIdleEnabled();
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrimaryCmdPolicy::ValidateMenuCommand
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiPrimaryCmdPolicy::ValidateMenuCommand( TInt aCommandId ) const
+    {
+    TBool handled;
+    return ValidateCommand( aCommandId, handled );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrimaryCmdPolicy::ValidateSoftkey
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiPrimaryCmdPolicy::ValidateSoftkey( TInt aResourceId ) const
+    {
+    __VTPRINTENTER( "PrimaryCmdPolicy.ValidateSoftkey" )
+    TBool result( EFalse );
+    switch ( aResourceId )
+        {
+    case R_VIDEOTELUI_SOFTKEYS_EMPTY_ACTIVE_COMMAND:
+        result = iUiStates.IsCommandActivating();
+        break;
+
+    case R_VIDEOTELUI_SOFTKEYS_EMPTY_DIALEREXIT:
+        result = iUiStates.IsDialerActivating();
+        break;
+
+    case R_VIDEOTELUI_SOFTKEYS_SHARE_OBJECT_IMAGE:
+        result = iUiStates.MediaState().IsSharing();
+        break;
+
+    case R_VIDEOTELUI_SOFTKEYS_CAPTURE_VIDEO:
+        result = iUiStates.IsCaptureModeOn();
+        break;
+
+    case R_VIDEOTELUI_SOFTKEYS_ENABLE_AUDIO:
+        result = !iUiStates.AudioState().IsAudio();
+        break;
+
+    case R_VIDEOTELUI_SOFTKEYS_ENABLE_VIDEO:
+        result = !iUiStates.MediaState().IsVideo() &&
+            iUiStates.MediaState().HasCamera() &&
+            ( iUiStates.ExecState() == TVtUiStates::EExecStateRunning );
+        break;
+
+    case R_VIDEOTELUI_SOFTKEYS_DIALER:
+    case R_VIDEOTELUI_SOFTKEYS_BT_HANDSFREE:
+    case R_VIDEOTELUI_SOFTKEYS_LOUDSPEAKER:
+    case R_VIDEOTELUI_SOFTKEYS_HANDSET_B:
+        {
+        if ( FeatureManager::FeatureSupported( KFeatureIdOnScreenDialer ) &&
+             ( iUiStates.ExecState() == TVtUiStates::EExecStateRunning ) )
+            {
+            switch ( aResourceId )
+                {
+            case R_VIDEOTELUI_SOFTKEYS_DIALER:
+                result = ETrue;
+                break;
+                }
+            }
+        else
+            {
+            switch ( aResourceId )
+                {
+            case R_VIDEOTELUI_SOFTKEYS_BT_HANDSFREE:
+                result = iUiStates.AudioState().CanActivateBtHf();
+                break;
+
+            case R_VIDEOTELUI_SOFTKEYS_LOUDSPEAKER:
+                result = iUiStates.AudioState().CanActivateLoudspeaker();
+                break;
+
+            case R_VIDEOTELUI_SOFTKEYS_HANDSET_B:
+                result = iUiStates.AudioState().CanDeactivateLoudspeaker();
+                break;
+                }
+            }
+        }
+        break;
+
+    case R_VIDEOTELUI_SOFTKEYS_END_CALL:
+        result = ETrue;
+        break;
+        }
+    __VTPRINTEXITR( "PrimaryCmdPolicy.ValidateSoftkey %d", result )
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrimaryCmdPolicy::ValidateToolbarCommand
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiPrimaryCmdPolicy::ValidateToolbarCommand( TInt aCommandId ) const
+    {
+     __VTPRINTENTER( "PrimaryCmdPolicy.ValidateToolbarCommand" )
+    __VTPRINT2( DEBUG_GEN, "cmdId = %d", aCommandId )
+    TBool result( ETrue );
+    switch( aCommandId )
+        {
+        case EVtUiCmdZoom:
+        case EVtUiCmdShareObjectImage:
+        case EVtUiCmdSwapImagesPlaces:
+        //case EVtUiCmdSnapshot:
+
+            result = EFalse;
+            break;
+
+        default:
+            result = ValidateMenuCommand( aCommandId );
+            break;
+        }
+    __VTPRINTEXITR( "PrimaryCmdPolicy.ValidateToolbarCommand %d", result )
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrimaryCmdPolicy::ValidateCommandState
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiPrimaryCmdPolicy::ValidateCommandState( TInt aCommandId ) const
+    {
+     __VTPRINTENTER( "PrimaryCmdPolicy.ValidateCommandState" )
+    TBool handled;
+    TBool allowed( !ValidateCommand( aCommandId, handled ) );
+    if ( !handled )
+        {
+        switch ( aCommandId )
+            {
+        case EVtUiCmdCapture:
+        case EVtUiCmdCancelCapture:
+            allowed = iUiStates.IsCaptureModeOn();
+            break;
+
+        case EVtUiCmdStopSharingObjectImage:
+            allowed = iUiStates.MediaState().IsSharing() &&
+                !iUiStates.MediaState().IsVideoPermanentlyStopped();
+            break;
+
+        default:
+            allowed = ETrue;
+            break;
+            }
+        }
+    __VTPRINTEXITR( "PrimaryCmdPolicy.ValidateCommandState %d", allowed )
+    return allowed;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrimaryCmdPolicy::ValidateCommand
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiPrimaryCmdPolicy::ValidateCommand( TInt aCommandId,
+    TBool& aHandled ) const
+    {
+    __VTPRINTENTER( "PrimaryCmdPolicy.ValidateCommand" )
+
+    __VTPRINT2( DEBUG_GEN, "    cmdId = %d", aCommandId )
+
+    TBool result( ETrue );
+
+    aHandled = ETrue;
+
+    const TVtUiMediaState& mediaState( iUiStates.MediaState() );
+    const TVtUiAudioState& audioState( iUiStates.AudioState() );
+    const TBool disabledVideo( !mediaState.IsVideo() ||
+        mediaState.IsSharing() );
+    const TBool disabledAudio( !audioState.IsAudio() );
+    const TBool disableVideoOptions( !mediaState.HasCamera() );
+    const TBool freezeSupported( mediaState.IsFreezeSupported() );
+    const TBool frozen( mediaState.IsFrozen() );
+
+    const TBool videoPermStopped( mediaState.IsVideoPermanentlyStopped() );
+    const TBool audioPermStopped( audioState.IsAudioPermanentlyStopped() );
+
+    switch( aCommandId )
+        {
+    case EVtUiCmdSnapshot:
+        result = ( disabledVideo && !frozen ) ||
+                   disableVideoOptions ||
+                   !freezeSupported;
+        break;
+
+    case EVtUiCmdUsePrimaryCamera:
+        result = mediaState.IsPrimaryCameraInUse() || frozen ||
+            !mediaState.HasPrimaryCamera() || mediaState.IsSharing() ||
+            videoPermStopped;
+        break;
+
+    case EVtUiCmdUseSecondaryCamera:
+        result = mediaState.IsSecondaryCameraInUse() || frozen ||
+            !mediaState.HasSecondaryCamera() || mediaState.IsSharing() ||
+            videoPermStopped;
+        break;
+
+    case EVtUiCmdDeactivateBT:
+        result = !audioState.CanDeactivateBtHf();
+        break;
+
+    case EVtUiCmdSwitchFromBTToIHF:
+        result = !audioState.CanDeactivateBtHf() ||
+            !audioState.CanActivateLoudspeaker();
+        break;
+
+    case EVtUiCmdActivateBT:
+        result = !audioState.CanActivateBtHf();
+        break;
+
+    case EVtUiCmdDeactivateLoudspeaker:
+        result = !audioState.CanDeactivateLoudspeaker();
+        break;
+
+    case EVtUiCmdActivateLoudspeaker:
+        result = !audioState.CanActivateLoudspeaker();
+        break;
+
+    case EVtUiCmdSwapImagesPlaces:
+        // Swap image places is always shown in menu.
+        result = EFalse;
+        break;
+
+    case EVtUiCmdAdjustVideo:
+        // Adjust video is always shown in menu.
+        result = EFalse;
+        break;
+
+    case EVtUiCmdAdjustVideoVideoQuality:
+        result = EFalse;
+        break;
+
+    case EVtUiCmdAdjustVideoWhiteBalance:
+        result = !iUiStates.IsWhiteBalanceSettingAvailable() || frozen;
+        break;
+
+    case EVtUiCmdAdjustVideoBrightness:
+          result =!iUiStates.IsBrightnessSettingAvailable() || frozen;
+        break;
+
+    case EVtUiCmdAdjustVideoContrast:
+        result =!iUiStates.IsContrastSettingAvailable() || frozen;
+        break;
+
+    case EVtUiCmdAdjustVideoColourTone:
+        result = !iUiStates.IsColorToneSettingAvailable() || frozen;
+
+        break;
+    case EVtUiCmdZoom:
+        result = frozen || disableVideoOptions || disabledVideo;
+        break;
+
+    case EVtUiCmdCreateVoice:
+        // Downgrading to voice call is not possible if remote end MSISDN
+        // is unavailable or there is waiting call.
+        result = !iUiStates.IsCLIReceived() || iUiStates.IsWaitingCall();
+        break;
+
+    case EVtUiCmdGoToIdle:
+#ifndef RD_BOOT_CUSTOMIZABLE_AI
+        result = !iAIEnabled;
+#else
+        // When RD_BOOT_CUSTOMIZABLE_AI is defined, active idle is always
+        // shown in menu
+        // result = EFalse;
+        // disable the go to idle when autolock is on.
+        result = iUiStates.IsDeviceLockOn();
+#endif //RD_BOOT_CUSTOMIZABLE_AI
+        break;
+
+    case EAknCmdHelp:
+    	{
+    	TVtUiHelpVariation hlpvariation;
+        result = !hlpvariation.IsHelpSupported();
+        }
+        break;
+
+    case EAknCmdExit:
+        // Exit option is disabled by default. Change ETrue to EFalse
+        // and it is in the menu.
+        break;
+
+    case EVtUiCmdEndActiveCall:
+        // End active call always shown in menu.
+        result = EFalse;
+        break;
+
+    case EVtUiCmdShareObjectImage:
+        result = frozen || mediaState.IsNotAbleToShare() ||
+            mediaState.IsInitializingShare() || videoPermStopped ||
+            iAppUi.IsActiveCommand( EVtUiCmdShareObjectImage );
+        break;
+
+    case EVtUiCmdEnableMain:
+        result = (  iAppUi.IsActiveCommand( EVtUiCmdEnableVideo ) ||
+                    iAppUi.IsActiveCommand( EVtUiCmdDisableVideo ) ||
+                 !disabledVideo || disableVideoOptions || videoPermStopped )
+                  && ( iAppUi.IsActiveCommand ( EVtUiCmdEnableAudio ) ||
+                  !disabledAudio || audioPermStopped );
+        break;
+
+    case EVtUiCmdEnableVideo:
+        result = !disabledVideo || disableVideoOptions ||
+            videoPermStopped;
+        break;
+
+    case EVtUiCmdEnableAudio:
+        result = !disabledAudio || audioPermStopped;
+        break;
+
+    case EVtUiCmdEnableBoth:
+        result = !disabledVideo || !disabledAudio || disableVideoOptions ||
+            videoPermStopped || audioPermStopped;
+        break;
+
+    case EVtUiCmdDisableMain:
+        result = ( iAppUi.IsActiveCommand( EVtUiCmdDisableVideo ) ||
+                   iAppUi.IsActiveCommand( EVtUiCmdEnableVideo ) ||
+                 disabledVideo || disableVideoOptions || videoPermStopped ) &&
+                ( iAppUi.IsActiveCommand( EVtUiCmdDisableAudio ) ||
+                disabledAudio || audioPermStopped );
+        break;
+
+    case EVtUiCmdDisableVideo:
+        result = disabledVideo || disableVideoOptions || videoPermStopped;
+        break;
+
+    case EVtUiCmdDisableAudio:
+        result = disabledAudio || audioPermStopped;
+        break;
+
+    case EVtUiCmdDisableBoth:
+        result = disableVideoOptions || disabledVideo || disabledAudio ||
+            videoPermStopped || audioPermStopped;
+        break;
+
+    case EVtUiCmdSendDTMF:
+        if ( FeatureManager::FeatureSupported( KFeatureIdOnScreenDialer ) )
+            {
+            result = EFalse;
+            }
+        else
+            {
+            result = ETrue;
+            }
+        break;
+
+    default:
+        aHandled = EFalse;
+        break;
+        }
+
+    __VTPRINTEXITR( "PrimaryCmdPolicy.ValidateCommand %d", result )
+
+    return result;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/commands/tVtuifeaturevariation.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,117 @@
+/*
+* 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:  Video Telephone feature variation class definition.
+*
+*/
+
+
+#include "tVtuifeaturevariation.h"
+
+// TVtUiFeatureVariationBase
+
+// -----------------------------------------------------------------------------
+// TVtUiFeatureVariationBase::IsFeatureSupported
+// -----------------------------------------------------------------------------
+//   
+TBool TVtUiFeatureVariationBase::IsFeatureSupported( const TUint32 aId ) const
+		{
+		return FeatureManager::FeatureSupported( aId );		
+		}
+
+//TVtUiHelpVariation
+// -----------------------------------------------------------------------------
+// TVtUiHelpVariation::FeatureId
+// -----------------------------------------------------------------------------
+//  	
+TUint32 TVtUiHelpVariation::FeatureId() const
+		{
+		return KFeatureIdHelp;	
+		}
+// -----------------------------------------------------------------------------
+// TVtUiHelpVariation::IsHelpSupported
+// -----------------------------------------------------------------------------
+//		
+TBool TVtUiHelpVariation::IsHelpSupported() const
+		{
+		return IsFeatureSupported( FeatureId() );	
+		}
+//TVtUiDPVariation
+// -----------------------------------------------------------------------------
+// TVtUiDPVariation::FeatureId
+// -----------------------------------------------------------------------------
+//  	
+TUint32 TVtUiDPVariation::FeatureId() const
+		{
+		return KFeatureIdDisplayPost;	
+		}
+// -----------------------------------------------------------------------------
+// TVtUiDPVariation::IsDPSupported
+// -----------------------------------------------------------------------------
+//		
+TBool TVtUiDPVariation::IsDPSupported() const
+		{
+		return IsFeatureSupported( FeatureId() );	
+		}
+//TVtUiBTVariation
+// -----------------------------------------------------------------------------
+// TVtUiBTVariation::FeatureId
+// -----------------------------------------------------------------------------
+//  	
+TUint32 TVtUiBTVariation::FeatureId() const
+		{
+		return KFeatureIdBt;	
+		}
+// -----------------------------------------------------------------------------
+// TVtUiBTVariation::IsBTSupported
+// -----------------------------------------------------------------------------
+//		
+TBool TVtUiBTVariation::IsBTSupported() const
+		{
+		return IsFeatureSupported( FeatureId() );	
+		}		
+//TVtUiSideVolumeKeysVariation
+// -----------------------------------------------------------------------------
+// TVtUiSideVolumeKeysVariation::FeatureId
+// -----------------------------------------------------------------------------
+//  	
+TUint32 TVtUiSideVolumeKeysVariation::FeatureId() const
+		{
+		return KFeatureIdSideVolumeKeys;	
+		}
+// -----------------------------------------------------------------------------
+// TVtUiSideVolumeKeysVariation::IsSideVolumeKeysSupported
+// -----------------------------------------------------------------------------
+//		
+TBool TVtUiSideVolumeKeysVariation::IsSideVolumeKeysSupported() const
+		{
+		return IsFeatureSupported( FeatureId() );	
+		}
+//TVtUiActiveIdleFetManVariation
+// -----------------------------------------------------------------------------
+// TVtUiActiveIdleFetManVariation::FeatureId
+// -----------------------------------------------------------------------------
+//  	
+TUint32 TVtUiActiveIdleFetManVariation::FeatureId() const
+		{
+		return KFeatureIdActiveIdle;	
+		}
+// -----------------------------------------------------------------------------
+// TVtUiActiveIdleFetManVariation::IsActiveIdleFetManSupported
+// -----------------------------------------------------------------------------
+//		
+TBool TVtUiActiveIdleFetManVariation::IsActiveIdleFetManSupported() const
+		{
+		return IsFeatureSupported( FeatureId() );	
+		}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/commands/tvtuiaudiostate.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,74 @@
+/*
+* 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:  Audio state class.
+*
+*/
+
+#include <cvtlogger.h>
+#include <cvtengmodel.h>
+
+#include "tvtuiaudiostate.h"
+#include "VtUiUtility.h"
+
+// -----------------------------------------------------------------------------
+// TVtUiAudioState::UpdateFlags
+// -----------------------------------------------------------------------------
+//
+void TVtUiAudioState::UpdateFlags()
+    {
+    __VTPRINTENTER( "AudioState.UpdateFlags" )
+    TInt avail( 0 );
+
+    VtUiUtility::GetAudioRoutingAvailability( iModel.Audio(), avail );
+
+    const TBool videoCallConnected ( iModel.Media().VideoCallConnected());
+    //Before update AudioRouting, video call state must to be checked.
+    //AudioRouting can not be changed if call is not in EConnected state.
+    if ( videoCallConnected )
+        {
+        __VTPRINT( DEBUG_GEN, " videoCallConnected " )
+        if ( avail & VtUiUtility::EDeactivateBtHandsfree )
+            {
+            SetFlag( ECanDeactivateBtHf );
+            }
+        if ( avail & VtUiUtility::EActivateBtHandsfree )
+            {
+            SetFlag( ECanActivateBtHf );
+            }
+        if ( avail & VtUiUtility::EDeactivateLoudspeaker )
+            {
+            SetFlag( ECanDeactivateLoudspeaker );
+            }
+        if ( avail & VtUiUtility::EActivateLoudspeaker )
+            {
+            SetFlag( ECanActivateLoudspeaker );
+            }
+        }
+
+    VtUiUtility::GetOutgoingMediaState( iModel.Media(), avail );
+
+    if ( avail & MVtEngMedia::EMediaAudio )
+        {
+        SetFlag( EIsAudio );
+        }
+
+    TInt status ( 0 );
+    iModel.Media().GetMediaState( MVtEngMedia::EMediaOutgoing, status );
+    if ( !(status & MVtEngMedia::EMediaAudioChannelOpen ) )
+        {
+        SetFlag( EIsAudioPermanentlyStopped );
+        }
+
+    __VTPRINTEXITR( "AudioState.UpdateFlags bits = %b", Value() )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/commands/tvtuilocalvariation.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,181 @@
+/*
+* 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:  Video Telephone local variation class.
+*
+*/
+
+
+#include <centralrepository.h>
+#include <settingsinternalcrkeys.h>
+#include <cvtlogger.h>
+
+#include "VideoTelephonyInternalCRKeys.h"
+#include "tvtuilocalvariation.h"
+#include "tVtuifeaturevariation.h"
+
+// TVtUiVariationBase
+
+// -----------------------------------------------------------------------------
+// TVtUiVariationBase::ReadL
+// -----------------------------------------------------------------------------
+//    
+void TVtUiVariationBase::ReadL( const TInt adefault ) 
+    {
+    __VTPRINTENTER( "VtUi.LocalVariation.ReadL" )
+    CRepository* repository = CRepository::NewL( Uid() );
+    TInt value( 0 );
+    if ( !repository->Get( Key(), value ) )
+        {
+        SetValue( value );
+        }
+    // incase of error    
+    else
+    	{ 
+    	// If default is set
+    	if ( adefault != -1 )
+    		{
+    		__VTPRINT2( DEBUG_GEN, "VtUi.LocalVariation.ReadL def=%d", adefault )    
+    		SetValue( adefault );    
+    		}
+    	}
+    delete repository;
+    __VTPRINTEXIT( "VtUi.LocalVariation.ReadL" )
+    }    
+// -----------------------------------------------------------------------------
+// TVtUiVariationBase::Value
+// -----------------------------------------------------------------------------
+//
+TUint32 TVtUiVariationBase::ReceiveValue() const
+	{
+	__VTPRINTENTER( "VtUi.LocalVariation.ReceiveValue" )
+	__VTPRINTEXIT( "VtUi.LocalVariation.ReceiveValue" )
+	return Value();
+	}
+	
+// TVtUiVideoTelephonyVariation
+// -----------------------------------------------------------------------------
+// TVtUiVideoTelephonyVariation::Uid
+// -----------------------------------------------------------------------------
+//
+const TUid& TVtUiVideoTelephonyVariation::Uid() const
+    {
+    return KCRUidVTVariation;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiVideoTelephonyVariation::Key
+// -----------------------------------------------------------------------------
+//
+TUint32 TVtUiVideoTelephonyVariation::Key() const
+    {
+    return KVTLocalVariationFlags;
+    }
+
+// TVtUiActiveIdleVariation
+// -----------------------------------------------------------------------------
+// TVtUiActiveIdleVariation::IsActiveIdleEnabled
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiActiveIdleVariation::IsActiveIdleEnabled() 
+    {
+    __VTPRINTENTER( "VtUi.LocalVariation.AI.IsActiveIdleEnabled" )
+    #ifndef RD_BOOT_CUSTOMIZABLE_AI
+    	TVtUiActiveIdleFetManVariation featman;
+    	TRAP_IGNORE( ReadL() );
+    	__VTPRINTEXIT( "VtUi.LocalVariation.AI.IsActiveIdleEnabled" )
+    	return featman.IsActiveIdleFetManSupported() && Value();
+    	// AI 2 implementation always true
+    #else
+    	__VTPRINTEXIT( "VtUi.LocalVariation.AI.IsActiveIdleEnabled" )
+    	return ETrue;
+    #endif // RD_BOOT_CUSTOMIZABLE_AI
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiActiveIdleVariation::Uid
+// -----------------------------------------------------------------------------
+//
+const TUid& TVtUiActiveIdleVariation::Uid() const
+    {
+    return KCRUidPersonalizationSettings;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiActiveIdleVariation::Key
+// -----------------------------------------------------------------------------
+//
+TUint32 TVtUiActiveIdleVariation::Key() const
+    {
+    return KSettingsActiveIdleState;
+    }
+    
+// TVtUiGsMuteVariation
+// -----------------------------------------------------------------------------
+// TVtUiGsMuteVariation::GsMuteState
+// -----------------------------------------------------------------------------
+//
+TUint32 TVtUiGsMuteVariation::GsMuteState() 
+    {
+    __VTPRINTENTER( "VtUi.LocalVariation.Gs.GsMuteState" )
+    TRAP_IGNORE( ReadL( KAllwaysQuery ) );
+    __VTPRINTEXIT( "VtUi.LocalVariation.Gs.GsMuteState" )
+    return ReceiveValue();
+    }
+// -----------------------------------------------------------------------------
+// TVtUiGsMuteVariation::Uid
+// -----------------------------------------------------------------------------
+//
+const TUid& TVtUiGsMuteVariation::Uid() const
+    {
+    return KCRUidTelephonySettings;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiActiveIdleVariation::Key
+// -----------------------------------------------------------------------------
+//
+TUint32 TVtUiGsMuteVariation::Key() const
+    {
+    return KSettingsVTVideoSending;
+    }
+// TVtUiToolbarVariation
+// -----------------------------------------------------------------------------
+// TVtUiToolbarVariation::NumberOfButtons
+// -----------------------------------------------------------------------------
+//
+TUint32 TVtUiToolbarVariation::NumberOfButtons() 
+    {
+    __VTPRINTENTER( "VtUi.LocalVariation.Tb.NumberOfButtons" )
+    TRAP_IGNORE( ReadL( KNumberOfTbButtons ) );
+    __VTPRINTEXIT( "VtUi.LocalVariation.Tb.NumberOfButtons" )
+    return ReceiveValue();
+    }
+// -----------------------------------------------------------------------------
+// TVtUiToolbarVariation::Uid
+// -----------------------------------------------------------------------------
+//
+const TUid& TVtUiToolbarVariation::Uid() const
+    {
+    return KCRUidVTConfiguration;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiActiveIdleVariation::Key
+// -----------------------------------------------------------------------------
+//
+TUint32 TVtUiToolbarVariation::Key() const
+    {
+    return KVTToolbarCommands;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/commands/tvtuimediastate.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,132 @@
+/*
+* 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:  Media state class.
+*
+*/
+
+
+#include <cvtlogger.h>
+#include <mvtengmedia.h>
+#include <mvtengcommandhandler.h>
+
+#include "tvtuimediastate.h"
+#include "VtUiUtility.h"
+
+// -----------------------------------------------------------------------------
+// TVtUiMediaState::UpdateFlags
+// -----------------------------------------------------------------------------
+//
+void TVtUiMediaState::UpdateFlags()
+    {
+    __VTPRINTENTER( "MediaState.UpdateFlags" )
+    TInt avail( 0 );
+
+    VtUiUtility::GetOutgoingMediaState( iMedia, avail );
+
+    if ( avail & MVtEngMedia::EMediaVideo )
+        {
+        SetFlag( EIsVideo );
+        }
+
+    if ( VtUiUtility::HasCameras( iMedia ) )
+        {
+        SetFlag( EHasCamera );
+        }
+
+    if ( VtUiUtility::IsFreezeSupported( iMedia ) )
+        {
+        SetFlag( EIsFreezeSupported );
+        }
+
+    if ( VtUiUtility::GetFreezeState( iMedia ) )
+        {
+        SetFlag( EIsFrozen );
+        }
+
+    MVtEngMedia::TShareObjectState shareObjectState;
+    VtUiUtility::GetObjectSharingState( iMedia, shareObjectState );
+
+    if ( shareObjectState == MVtEngMedia::ESharingImage )
+        {
+        SetFlag( EIsSharing );
+        }
+    else if ( ( shareObjectState == MVtEngMedia::EInitializingShareImage ) ||
+         ( shareObjectState == MVtEngMedia::EInitializingShareVideoClip ) )
+        {
+        SetFlag( EIsInitializingShare );
+        }
+    else if ( shareObjectState == MVtEngMedia::ENotAbleToShare )
+        {
+        SetFlag( EIsNotAbleToShare );
+        }
+    // Camera configuration
+
+    MVtEngMedia::TCameraId cameraId;
+    TInt err = iMedia.GetCurrentCameraId( cameraId );
+
+    // Don't care if camera is not ready, just what is selected camera
+    if ( err == KErrNone || err == KErrNotReady )
+        {
+        SetFlag( ( cameraId == MVtEngMedia::EPrimaryCamera ) ?
+            EIsPrimaryCameraInUse : EIsSecondaryCameraInUse );
+        }
+
+    TInt sourcesCaps( 0 );
+    iMedia.GetSourcesCaps( sourcesCaps );
+    if ( sourcesCaps & MVtEngMedia::ESourceCapsPrimaryCamera )
+        {
+        SetFlag( EHasPrimaryCamera );
+        }
+    if ( sourcesCaps & MVtEngMedia::ESourceCapsSecondaryCamera )
+        {
+        SetFlag( EHasSecondaryCamera );
+        }
+       
+    TInt status ( 0 ); 
+    iMedia.GetMediaState( MVtEngMedia::EMediaOutgoing, status );
+    if ( !( status & MVtEngMedia::EMediaVideoChannelOpen ) )
+        {        
+        SetFlag( EIsVideoPermanentlyStopped );
+        }      
+
+    __VTPRINTEXITR( "MediaState.UpdateFlags bits = %b", Value() )
+
+    // Video preferences
+/*
+    TInt caps( iCommandHandler.GetCommandCaps( KVtEngSetContrast ) );
+    if ( caps & MVtEngCommandHandler::EAttribEnabled )
+        {
+        SetFlag( EIsContrastSupported );
+        }
+
+    caps = iCommandHandler.GetCommandCaps( KVtEngSetBrightness );
+    if ( caps & MVtEngCommandHandler::EAttribEnabled )
+        {
+        SetFlag( EIsBrightnessSupported );
+        }
+
+    caps = iCommandHandler.GetCommandCaps( KVtEngSetWhiteBalance );
+    if ( caps & MVtEngCommandHandler::EAttribEnabled )
+        {
+        SetFlag( EIsWhiteBalanceSupported );
+        }
+
+    caps = iCommandHandler.GetCommandCaps( KVtEngSetColorTone );
+    if ( caps & MVtEngCommandHandler::EAttribEnabled )
+        {
+        SetFlag( EIsColorToneSupported );
+        }
+
+*/
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/commands/tvtuistates.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,168 @@
+/*
+* 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:  Video UI states class.
+*
+*/
+
+
+#include <cvtengmodel.h>
+#include <mvtengcamerapreferences.h>
+#include <cvtlogger.h>
+
+#include "tvtuistates.h"
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::TVtUiStates
+// -----------------------------------------------------------------------------
+//
+TVtUiStates::TVtUiStates( CVtEngModel& aModel )
+    : iMediaState( aModel.Media(), aModel.CommandHandler() ), iAudioState( aModel ),
+    iModel( aModel ), iExecState( EExecStateStarting),
+    iCommandActivatingRefCount( 0 )
+    {
+    // get camera preferences
+    iCameraPref = static_cast<MVtEngCameraPreferences*>
+        ( iModel.Extension( KVtEngExtensionCameraPreferences ) );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::Update
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::Update()
+    {
+    iMediaState.Update();
+    iAudioState.Update();
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsColorToneSettingAvailable
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsColorToneSettingAvailable() const
+    {
+    __VTPRINTENTER( "TVtUiStates.IsColorToneSettingAvailable" )
+    TUint32 supportedModes;
+    // Get supported whitebalance modes
+    if ( iCameraPref )
+    	{
+	    if ( iCameraPref->GetSupportedColorTones( supportedModes ) )
+	        {
+	        // error occured
+	        __VTPRINTEXIT( "TVtUiStates.IsColorToneSettingAvailableErr" )
+	        return EFalse;
+	        }
+    	}
+
+    // Clean the flag, flags that are possible are
+    // A bitfield of suported colortones
+    // ENormal         = 0x00,
+    // ESepia          = 0x01,
+    // EGrayscale      = 0x02,
+    // ENegative       = 0x04
+    supportedModes &= 0x07;
+
+    // If supported modes is 0 automatic,then return EFalse
+    return supportedModes;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsWhiteBalanceSettingAvailable
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsWhiteBalanceSettingAvailable() const
+    {
+    __VTPRINTENTER( "TVtUiStates.IsWhiteBalanceSettingAvailable" )
+    TUint32 supportedModes;
+    // Get supported whitebalance modes
+    if ( iCameraPref )
+    	{
+	    if ( iCameraPref->GetSupportedWhiteBalanceModes( supportedModes ) )
+	        {
+	        // error occured
+	        __VTPRINTEXIT( "TVtUiStates.IsWhiteBalanceSettingAvailableErr" )
+	        return EFalse;
+	        }
+    	}
+    __VTPRINT2( DEBUG_GEN, "IsWhiteBalanceSettingAvailable=%d", supportedModes )
+    // If supported modes is 0 ,then return EFalse
+    __VTPRINTEXIT( "TVtUiStates.IsWhiteBalanceSettingAvailable2" )
+ 	return supportedModes;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsContrastSettingAvailable
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsContrastSettingAvailable() const
+    {
+    __VTPRINTENTER( "TVtUiStates.IsContrastSettingAvailable" )
+    TBool ret( ETrue );
+    if ( iCameraPref )
+        {
+        TInt temp;
+	    ret = !iCameraPref->GetContrast( temp );
+        }
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::IsBrightnessSettingAvailable
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStates::IsBrightnessSettingAvailable() const
+    {
+    __VTPRINTENTER( "TVtUiStates.IsBrightnessSettingAvailable" )
+    TBool ret( ETrue );
+    if ( iCameraPref )
+	     {
+	     TInt temp;
+	     ret = !iCameraPref->GetBrightness( temp );
+         }
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetExecState
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetExecState( const TVtUiExecState aState )
+    {
+    iExecState = aState;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::SetIsCommandActivating
+// -----------------------------------------------------------------------------
+//
+void TVtUiStates::SetIsCommandActivating( TBool aSet )
+    {
+    if ( aSet )
+        {
+        iCommandActivatingRefCount++;
+        }
+    else if ( iCommandActivatingRefCount > 0 )
+        {
+        iCommandActivatingRefCount--;    
+        }    
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStates::ExecState
+// -----------------------------------------------------------------------------
+//
+TVtUiStates::TVtUiExecState TVtUiStates::ExecState() const
+    {
+    return iExecState;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/compman/cvtuicomponentmanager.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,777 @@
+/*
+* 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:  Component manager implementation.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "cvtuicomponentmanager.h"
+#include "mvtuiwindowservereventobserver.h"
+#include "mvtuiresourcechangeobserver.h"
+#include "mvtuikeyeventobserver.h"
+#include "mvtuilayoutchangeobserver.h"
+
+// ======== LOCAL FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CmpByPtr
+// ---------------------------------------------------------------------------
+//
+template < class T >
+TInt CmpByPtr( const T& aObj1, const T& aObj2 )
+    {
+    return reinterpret_cast< TInt >( &aObj1 ) -
+        reinterpret_cast< TInt >( &aObj2 );
+    }
+
+// ---------------------------------------------------------------------------
+// FindByPtr
+// ---------------------------------------------------------------------------
+//
+template < class T >
+TInt FindByPtr( const TInt* aPtr, const T& aObj )
+    {
+    return *aPtr - reinterpret_cast< TInt >( &aObj );
+    }
+
+// ---------------------------------------------------------------------------
+// CmpMVtUiComponent
+// ---------------------------------------------------------------------------
+//
+TInt CmpMVtUiComponent( const MVtUiComponent& aC1, const MVtUiComponent& aC2 )
+    {
+    return ( aC1.ComponentId() - aC2.ComponentId() );
+    }
+
+// ---------------------------------------------------------------------------
+// CmpTVtUiComponentState
+// ---------------------------------------------------------------------------
+//
+TInt CmpTVtUiComponentState( const TVtUiComponentState& aC1,
+    const TVtUiComponentState& aC2 )
+    {
+    return ( aC1.Component().ComponentId() - aC2.Component().ComponentId() );
+    }
+
+// ---------------------------------------------------------------------------
+// CmpTVtUiComponentStateByKey
+// ---------------------------------------------------------------------------
+//
+TInt CmpTVtUiComponentStateByKey( const MVtUiComponent::TComponentId* aKey,
+    const TVtUiComponentState& aC )
+    {
+    return ( *aKey - aC.Component().ComponentId() );
+    }
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiComponentManager* CVtUiComponentManager::NewL()
+    {
+    __VTPRINTENTER( "CompMgr.NewL" )
+    CVtUiComponentManager* self = new ( ELeave ) CVtUiComponentManager();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "CompMgr.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::~CVtUiComponentManager
+// ---------------------------------------------------------------------------
+//
+CVtUiComponentManager::~CVtUiComponentManager()
+    {
+    __VTPRINTENTER( "CompMgr.~" )
+    iWsEventObservers.Close();
+    iResourceChangeObservers.Close();
+    iKeyEventObservers.Close();
+    iLayoutChangeObservers.Close();
+    iComponents.Close();
+    __VTPRINTEXIT( "CompMgr.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::HandleWsEventL
+// ---------------------------------------------------------------------------
+//
+void CVtUiComponentManager::HandleWsEventL( const TWsEvent& aEvent,
+    CCoeControl* aDestination )
+    {
+    for ( TInt i = iWsEventObservers.Count() - 1; i >= 0; i-- )
+        {
+        iWsEventObservers[ i ]->HandleWsEventL( aEvent, aDestination );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::HandleResourceChangeL
+// ---------------------------------------------------------------------------
+//
+void CVtUiComponentManager::HandleResourceChangeL( TInt aType )
+    {
+    for ( TInt i = iResourceChangeObservers.Count() - 1; i >= 0; i-- )
+        {
+        iResourceChangeObservers[ i ]->HandleResourceChangeL( aType );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager:OfferKeyEventL
+// ---------------------------------------------------------------------------
+//
+TKeyResponse CVtUiComponentManager::OfferKeyEventL(
+    const TKeyEvent& aEvent, TEventCode aCode )
+    {
+    TKeyResponse response( EKeyWasNotConsumed );
+    for ( TInt i = iKeyEventObservers.Count() - 1; i >= 0; i-- )
+        {
+        response = iKeyEventObservers[ i ]->OfferKeyEventL( aEvent, aCode );
+        if ( response == EKeyWasConsumed )
+            {
+            break;
+            }
+        }
+    return response;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::HandleLayoutChangeL
+// ---------------------------------------------------------------------------
+//
+void CVtUiComponentManager::HandleLayoutChangeL()
+    {
+    for ( TInt i = iLayoutChangeObservers.Count() - 1; i >= 0; i-- )
+        {
+        iLayoutChangeObservers[ i ]->HandleLayoutChangeL();
+        }    
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::ChangeWsEventRegistration
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiComponentManager::ChangeWsEventRegistration(
+    MVtUiWindowServerEventObserver& aObserver, TAction aAction )
+    {
+    return AddOrRemoveComponent( iWsEventObservers, &aObserver, aAction );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::ChangeResourceChangeRegistration
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiComponentManager::ChangeResourceChangeRegistration(
+    MVtUiResourceChangeObserver& aObserver, TAction aAction )
+    {
+    return AddOrRemoveComponent( iResourceChangeObservers, &aObserver,
+        aAction );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::ChangeKeyEventRegistration
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiComponentManager::ChangeKeyEventRegistration(
+    MVtUiKeyEventObserver& aObserver, TAction aAction )
+    {
+    return AddOrRemoveComponent( iKeyEventObservers, &aObserver, aAction );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::ChangeLayoutChangeRegistration
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiComponentManager::ChangeLayoutChangeRegistration(
+    MVtUiLayoutChangeObserver& aObserver, TAction aAction )
+    {
+    return AddOrRemoveComponent( iLayoutChangeObservers, &aObserver, aAction );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::ChangeComponentRegistration
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiComponentManager::ChangeComponentRegistration(
+    TVtUiComponentState& aComponentState, TAction aAction )
+    {
+    __VTPRINTENTER( "CompMgr.ChangeComponentRegistrationL" )
+    TInt result( KErrNone );
+    if ( aAction == ERegister )
+        {
+        result =
+            iComponents.InsertInOrder( &aComponentState,
+                ComponentStateOrder() );
+        }
+    else
+        {
+        TInt index( iComponents.FindInOrder(
+            &aComponentState, ComponentStateOrder() ) );
+        if ( index != KErrNotFound )
+            {
+            iComponents.Remove( index );
+            }
+        }
+    __VTPRINTEXITR( "CompMgr.ChangeComponentRegistrationL %d", result )
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::RequestActivationL
+// ---------------------------------------------------------------------------
+//
+void CVtUiComponentManager::RequestActivationL(
+    MVtUiComponent::TComponentId aId )
+    {
+    __VTPRINTENTER( "CompMgr.RequestActivationL" )
+    TInt index( iComponents.FindInOrder( aId, ::CmpTVtUiComponentStateByKey ) );
+    if ( index == KErrNotFound )
+        {
+        User::Leave( index );
+        }
+    else
+        {
+        TVtUiComponentState& state( *iComponents[ index ] );
+        if ( state.State() == TVtUiComponentState::EActive )
+            {
+            User::Leave( KErrNotReady );
+            }
+        else
+            {
+            DoActivationL( state, TVtUiComponentState::EActive );
+            }
+        }
+    __VTPRINTEXIT( "CompMgr.RequestActivationL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::DeActivateComponentL
+// ---------------------------------------------------------------------------
+//
+void CVtUiComponentManager::DeActivateComponentL(
+    MVtUiComponent::TComponentId aId )
+    {
+    __VTPRINTENTER( "CompMgr.DeActivateComponentL" )
+    TInt index( iComponents.FindInOrder( aId, ::CmpTVtUiComponentStateByKey ) );
+    if ( index == KErrNotFound )
+        {
+        User::Leave( index );
+        }
+    else
+        {
+        TVtUiComponentState& state( *iComponents[ index ] );
+        if ( state.State() == TVtUiComponentState::EInactive )
+            {
+            User::Leave( KErrNotReady );
+            }
+        else
+            {
+            DoDeactivationL( state, TVtUiComponentState::EInactive );
+            }
+        }
+    __VTPRINTEXIT( "CompMgr.DeActivateComponentL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::DoActivationL
+// ---------------------------------------------------------------------------
+//
+void CVtUiComponentManager::DoActivationL(
+	TVtUiComponentState& aComponentState,
+	TVtUiComponentState::TState aNewState )
+    {
+    __VTPRINTENTER( "CompMgr.DoActivationL" )
+    TStateList stateList;
+    ConstructStateListL( stateList );
+    TInt index( stateList.FindItem(
+    	aComponentState.Component().ComponentId() ) );
+    if ( index != KErrNotFound )
+        {
+        TStateListItem& sli( stateList.At( index ) );
+        TVtUiBlockListBitField exclList;
+        for ( TInt i = stateList.ItemCount() - 1; i >= 0; i-- )
+        	{
+        	TStateListItem& sli2( stateList.At( i ) );
+        	if ( sli2.ComponentId() != sli.ComponentId() )
+        		{
+        		if ( sli2.State() == TVtUiComponentState::EActive &&
+        			 !sli.BlockList().Contains( sli2.ComponentId() ) )
+        			{
+        			exclList.Union( sli2.BlockList() );
+        			}
+        		}
+        	}
+       	sli.SetRoot();
+        sli.SetState( aNewState );
+        CalculateActivationL( sli.BlockList(), exclList, stateList, EHide );
+        }
+    CommitStateListL( stateList );
+    __VTPRINTEXIT( "CompMgr.DoActivationL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::DoDeactivationL
+// ---------------------------------------------------------------------------
+//
+void CVtUiComponentManager::DoDeactivationL(
+    TVtUiComponentState& aComponentState,
+    TVtUiComponentState::TState aNewState )
+    {
+    __VTPRINTENTER( "CompMgr.DoDeactivationL" )
+    TStateList stateList;
+    ConstructStateListL( stateList );
+    TInt index( stateList.FindItem(
+        aComponentState.Component().ComponentId() ) );
+    if ( index != KErrNotFound )
+        {
+        TStateListItem& sli( stateList.At( index ) );
+        TVtUiBlockListBitField exclList;
+        if ( sli.State() == TVtUiComponentState::EActive )
+        	{
+	        for ( TInt i = stateList.ItemCount() - 1; i >= 0; i-- )
+	        	{
+	        	TStateListItem& sli2( stateList.At( i ) );
+	        	if ( sli2.ComponentId() != sli.ComponentId() )
+	        		{
+	        		if ( sli2.State() == TVtUiComponentState::EActive )
+	        			{
+	        			exclList.Union( sli2.BlockList() );
+	        			}
+	        		}
+	        	}
+        	}
+        sli.SetRoot();
+        sli.SetState( aNewState );
+        CalculateActivationL( sli.BlockList(), exclList, stateList, EShow );
+        }
+    CommitStateListL( stateList );
+    __VTPRINTEXIT( "CompMgr.DoDeactivationL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::CommitStateListL
+// ---------------------------------------------------------------------------
+//
+void CVtUiComponentManager::CommitStateListL( TStateList& aList )
+    {
+    __VTPRINTENTER( "CompMgr.CommitStateListL" )
+    // Sort list by component state. Components will first deactivated, then
+    // blocked and finally activated.
+    aList.Sort( TStateListItem::StateOrder() );
+    for ( TInt i = 0; i < aList.ItemCount(); i++ )
+        {
+        const TStateListItem& sli( aList.At( i ) );
+        TInt index( iComponents.FindInOrder( sli.ComponentId(),
+            ::CmpTVtUiComponentStateByKey ) );
+        if ( index != KErrNotFound )
+            {
+            TVtUiComponentState& cs( *iComponents[ index ] );
+            if ( cs.State() != sli.State() )
+                {
+                switch ( sli.State() )
+                    {
+                case TVtUiComponentState::EInactive:
+                    cs.DeActivateComponentL();
+                    break;
+
+                case TVtUiComponentState::EActive:
+                    cs.ActivateComponentL();
+                    break;
+
+                case TVtUiComponentState::EWaiting:
+                    cs.BlockComponentL();
+                    break;
+
+                default:
+                    User::Leave( KErrArgument );
+                    break;
+                    }
+                }
+            }
+        }
+    __VTPRINTEXIT( "CompMgr.CommitStateListL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::CalculateActivationL
+// ---------------------------------------------------------------------------
+//
+void CVtUiComponentManager::CalculateActivationL(
+    const TVtUiBlockList& aBlockList,
+    const TVtUiBlockList& aExclList,
+    TStateList& aStateList, TActivationAction aAction )
+    {
+    __VTPRINTENTER( "CompMgr.CalculateActivationL" )
+    __VTPRINT2( DEBUG_GEN, "aAction = %d", (TInt)aAction )
+    TVtUiBlockListBitField blockList;
+    CVtUiBlockListIterator* iterator = aBlockList.IteratorLC();
+    while ( iterator->HasNext() )
+        {
+        MVtUiComponent::TComponentId cid( iterator->Next() );
+		if ( aExclList.Contains( cid ) )
+			{
+			continue;
+			}
+        TInt index( aStateList.FindItem( cid ) );
+        if ( index != KErrNotFound )
+            {
+            TStateListItem& sli( aStateList.At( index ) );
+            __VTPRINT3( DEBUG_GEN, "@1, Id = %d, state = %d", (TInt)sli.ComponentId(), (TInt)sli.State() )
+            if ( !sli.IsRoot() )
+                {
+                if ( aAction == EShow )
+                    {
+                    // if action == EShow and component is being blocked,
+                    // then activate component
+                    if ( sli.State() == TVtUiComponentState::EWaiting )
+                        {
+                        sli.SetState( TVtUiComponentState::EActive );
+                        if ( !sli.IsVisited() )
+                            {
+                            blockList.Union( sli.BlockList() );
+                            }
+                        sli.SetVisited();
+                        }
+                    }
+                else // aAction == EHide
+                    {
+                    // if action == EHide and component is active, then
+                    // block component
+                    if ( sli.State() == TVtUiComponentState::EActive )
+                        {
+                        sli.SetState( TVtUiComponentState::EWaiting );
+                        if ( !sli.IsVisited() )
+                            {
+                            blockList.Union( sli.BlockList() );
+                            }
+                        sli.SetVisited();
+                        }
+                    }
+                }
+			__VTPRINT3( DEBUG_GEN, "@2, Id = %d, state = %d", (TInt)sli.ComponentId(), (TInt)sli.State() )
+            }
+        }
+    CleanupStack::PopAndDestroy(); // iterator
+    if ( !blockList.IsEmpty() )
+        {
+        CalculateActivationL( blockList, aExclList, aStateList,
+            ( aAction == EShow ) ? EHide : EShow );
+        }
+    __VTPRINTEXIT( "CompMgr.CalculateActivationL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::ConstructStateListL
+// ---------------------------------------------------------------------------
+//
+void CVtUiComponentManager::ConstructStateListL( TStateList& aList )
+    {
+    for ( TInt i = iComponents.Count() - 1; i >= 0; i-- )
+        {
+        TStateListItem sli( *iComponents[ i ] );
+        aList.AddItemL( sli );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::CVtUiComponentManager
+// ---------------------------------------------------------------------------
+//
+CVtUiComponentManager::CVtUiComponentManager()
+    : iWsEventObservers( 1 ), iResourceChangeObservers( 1 ),
+      iKeyEventObservers( 1 ),iLayoutChangeObservers( 1 ), iComponents( 1 )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiComponentManager::ConstructL()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::AddOrRemoveComponent
+// ---------------------------------------------------------------------------
+//
+template < class T >
+TInt CVtUiComponentManager::AddOrRemoveComponent( RPointerArray< T >& aArray,
+    T* aComponent, TAction aAction )
+    {
+    __VTPRINTENTER( "CompMgr.AddOrRemoveComponent" )
+    TInt result( KErrNone );
+    if ( aAction == ERegister )
+        {
+        result = aArray.InsertInOrder( aComponent, ::CmpByPtr );
+        }
+    else
+        {
+        TInt index( aArray.FindInOrder( aComponent, ::CmpByPtr ) );
+        if ( index != KErrNotFound )
+            {
+            aArray.Remove( index );
+            }
+        }
+    __VTPRINTEXITR( "CompMgr.AddOrRemoveComponent %d", result )
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::ComponentOrder
+// ---------------------------------------------------------------------------
+//
+TLinearOrder< MVtUiComponent > CVtUiComponentManager::ComponentOrder()
+    {
+    return TLinearOrder< MVtUiComponent >( ::CmpMVtUiComponent );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::ComponentStateOrder
+// ---------------------------------------------------------------------------
+//
+TLinearOrder< TVtUiComponentState > CVtUiComponentManager::ComponentStateOrder()
+    {
+    return TLinearOrder< TVtUiComponentState >( ::CmpTVtUiComponentState );
+    }
+
+// Implementation of CVtUiComponentManager::TStateListItem
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateListItem::TStateListItem
+// ---------------------------------------------------------------------------
+//
+CVtUiComponentManager::TStateListItem::TStateListItem(
+    const TVtUiComponentState& aState )
+    : iComponentId( aState.Component().ComponentId() ),
+      iState( aState.State() ), iIsRoot( EFalse ), iIsVisited( EFalse )
+    {
+    iBlockList.Union( aState.BlockList() );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateListItem::ComponentId
+// ---------------------------------------------------------------------------
+//
+MVtUiComponent::TComponentId
+CVtUiComponentManager::TStateListItem::ComponentId() const
+    {
+    return iComponentId;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateListItem::State
+// ---------------------------------------------------------------------------
+//
+TVtUiComponentState::TState CVtUiComponentManager::TStateListItem::State() const
+    {
+    return iState;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateListItem::SetState
+// ---------------------------------------------------------------------------
+//
+void CVtUiComponentManager::TStateListItem::SetState(
+    TVtUiComponentState::TState aState )
+    {
+    iState = aState;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateListItem::BlockList
+// ---------------------------------------------------------------------------
+//
+const TVtUiBlockList& CVtUiComponentManager::TStateListItem::BlockList() const
+    {
+    return iBlockList;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateListItem::SetRoot
+// ---------------------------------------------------------------------------
+//
+void CVtUiComponentManager::TStateListItem::SetRoot()
+    {
+    iIsRoot = ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateListItem::IsRoot
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiComponentManager::TStateListItem::IsRoot() const
+    {
+    return iIsRoot;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateListItem::SetVisited
+// ---------------------------------------------------------------------------
+//
+void CVtUiComponentManager::TStateListItem::SetVisited()
+    {
+    iIsVisited = ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateListItem::IsVisited
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiComponentManager::TStateListItem::IsVisited() const
+    {
+    return iIsVisited;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateListItem::KeyOrder
+// ---------------------------------------------------------------------------
+//
+CVtUiComponentManager::TStateListItem::TKeyCmpFunc
+CVtUiComponentManager::TStateListItem::KeyOrder()
+    {
+    return KeyCmpFunc;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateListItem::LinearOrder
+// ---------------------------------------------------------------------------
+//
+TLinearOrder< CVtUiComponentManager::TStateListItem >
+CVtUiComponentManager::TStateListItem::LinearOrder()
+    {
+    return TLinearOrder< TStateListItem >( ItemCmpFunc );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateListItem::StateOrder
+// ---------------------------------------------------------------------------
+//
+TLinearOrder< CVtUiComponentManager::TStateListItem >
+CVtUiComponentManager::TStateListItem::StateOrder()
+    {
+    return TLinearOrder< TStateListItem >( StateCmpFunc );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateListItem::ItemCmpFunc
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiComponentManager::TStateListItem::ItemCmpFunc(
+    const TStateListItem& aItem1, const TStateListItem& aItem2 )
+    {
+    return ( aItem1.ComponentId() - aItem2.ComponentId() );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateListItem::KeyCmpFunc
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiComponentManager::TStateListItem::KeyCmpFunc(
+    const MVtUiComponent::TComponentId* aKey, const TStateListItem& aItem )
+    {
+    return ( *aKey - aItem.ComponentId() );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateListItem::StateCmpFunc
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiComponentManager::TStateListItem::StateCmpFunc(
+    const TStateListItem& aItem1, const TStateListItem& aItem2 )
+    {
+    return ( aItem1.State() - aItem2.State() );
+    }
+// Implementation of CVtUiComponentManager::TStateList
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateList::TStateList
+// ---------------------------------------------------------------------------
+//
+CVtUiComponentManager::TStateList::TStateList() : iItems( 1 )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateList::~TStateList
+// ---------------------------------------------------------------------------
+//
+CVtUiComponentManager::TStateList::~TStateList()
+    {
+    iItems.Close();
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateList::AddItemL
+// ---------------------------------------------------------------------------
+//
+void CVtUiComponentManager::TStateList::AddItemL( TStateListItem& aItem )
+    {
+    iItems.InsertInOrderL( aItem, TStateListItem::LinearOrder() );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateList::ItemCount
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiComponentManager::TStateList::ItemCount() const
+    {
+    return iItems.Count();
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateList::FindItem
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiComponentManager::TStateList::FindItem(
+    MVtUiComponent::TComponentId aComponentId ) const
+    {
+    return iItems.FindInOrder( aComponentId, TStateListItem::KeyOrder() );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateList::At
+// ---------------------------------------------------------------------------
+//
+CVtUiComponentManager::TStateListItem&
+CVtUiComponentManager::TStateList::At( TInt aIndex )
+    {
+    return iItems[ aIndex ];
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateList::At
+// ---------------------------------------------------------------------------
+//
+const CVtUiComponentManager::TStateListItem&
+CVtUiComponentManager::TStateList::At( TInt aIndex ) const
+    {
+    return iItems[ aIndex ];
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiComponentManager::TStateList::Sort
+// ---------------------------------------------------------------------------
+//
+void CVtUiComponentManager::TStateList::Sort(
+    TLinearOrder< CVtUiComponentManager::TStateListItem > aOrder )
+    {
+    iItems.Sort( aOrder );
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/compman/tvtuiblocklists.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,153 @@
+/*
+* 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:  Component ID block lists implementation.
+*
+*/
+
+
+#include "tvtuiblocklists.h"
+
+const static TUint KNullBlockMask = 0;
+
+// Implementation for TVtUiBlockList
+
+// -----------------------------------------------------------------------------
+// TVtUiBlockList::~TVtUiBlockList
+// -----------------------------------------------------------------------------
+//
+TVtUiBlockList::~TVtUiBlockList()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiBlockList::TVtUiBlockList
+// -----------------------------------------------------------------------------
+//
+TVtUiBlockList::TVtUiBlockList()
+    {
+    }
+
+// Implementation for TVtUiBlockListBitField
+
+// -----------------------------------------------------------------------------
+// TVtUiBlockListBitField::TVtUiBlockListBitField
+// -----------------------------------------------------------------------------
+//
+TVtUiBlockListBitField::TVtUiBlockListBitField() : iBlockMask( KNullBlockMask )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiBlockListBitField::TVtUiBlockListBitField
+// -----------------------------------------------------------------------------
+//
+TVtUiBlockListBitField::TVtUiBlockListBitField( TUint aBlockMask )
+    : iBlockMask( aBlockMask )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiBlockListBitField::IsEmpty
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiBlockListBitField::IsEmpty() const
+    {
+    return !iBlockMask;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiBlockListBitField::Contains
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiBlockListBitField::Contains( MVtUiComponent::TComponentId aId ) const
+    {
+    return ( iBlockMask & aId ) && ( aId != MVtUiComponent::EComponentIdNull );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiBlockListBitField::Union
+// -----------------------------------------------------------------------------
+//
+void TVtUiBlockListBitField::Union( const TVtUiBlockList& aBlockList )
+    {
+    iBlockMask |=
+        static_cast< const TVtUiBlockListBitField& >( aBlockList ).iBlockMask;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiBlockListBitField::IteratorLC
+// -----------------------------------------------------------------------------
+//
+CVtUiBlockListIterator* TVtUiBlockListBitField::IteratorLC() const
+    {
+    return TVtUiBlockListBitField::CVtUiBListIteratorBF::NewLC( iBlockMask );
+    }
+
+// Implementation for TVtUiBlockListBitField::CVtUiBListIteratorBF
+
+// -----------------------------------------------------------------------------
+// TVtUiBlockListBitField::CVtUiBListIteratorBF::NewLC
+// -----------------------------------------------------------------------------
+//
+TVtUiBlockListBitField::CVtUiBListIteratorBF*
+TVtUiBlockListBitField::CVtUiBListIteratorBF::NewLC(
+    const TUint& aBlockMask )
+    {
+    CVtUiBListIteratorBF* self = new ( ELeave )
+        CVtUiBListIteratorBF( aBlockMask );
+    CleanupStack::PushL( self );
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiBlockListBitField::CVtUiBListIteratorBF::CVtUiBListIteratorBF
+// -----------------------------------------------------------------------------
+//
+TVtUiBlockListBitField::CVtUiBListIteratorBF::CVtUiBListIteratorBF(
+    const TUint& aBlockMask ) : iBlockMask( aBlockMask ), iCurrent( 1 )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiBlockListBitField::CVtUiBListIteratorBF::HasNext
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiBlockListBitField::CVtUiBListIteratorBF::HasNext() const
+    {
+    return ( iCurrent && ( iCurrent <= iBlockMask ) );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiBlockListBitField::CVtUiBListIteratorBF::Next
+// -----------------------------------------------------------------------------
+//
+MVtUiComponent::TComponentId
+TVtUiBlockListBitField::CVtUiBListIteratorBF::Next()
+    {
+    MVtUiComponent::TComponentId id( MVtUiComponent::EComponentIdNull );
+
+    while ( HasNext() && !( iCurrent & iBlockMask ) )
+        {
+        iCurrent <<= 1;
+        }
+
+    if ( iCurrent )
+        {
+        id = static_cast< MVtUiComponent::TComponentId >( iCurrent );
+        }
+
+	iCurrent <<= 1;
+
+    return id;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/compman/tvtuicomponentstate.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,110 @@
+/*
+* 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:  Component state base class.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "tvtuicomponentstate.h"
+
+// -----------------------------------------------------------------------------
+// TVtUiComponentState::ActivateComponentL
+// -----------------------------------------------------------------------------
+//
+void TVtUiComponentState::ActivateComponentL()
+    {
+    __VTPRINTENTER( "CompState.ActivateComponentL" )
+    iComponent.DoActivateL();
+    iState = EActive;
+    __VTPRINTEXITR( "CompState.ActivateComponentL %d", iState )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiComponentState::BlockComponentL
+// -----------------------------------------------------------------------------
+//
+void TVtUiComponentState::BlockComponentL()
+    {
+    __VTPRINTENTER( "CompState.BlockComponentL" )
+    iComponent.DoDeactivateL();
+    iState = EWaiting;
+    __VTPRINTEXITR( "CompState.BlockComponentL %d", iState )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiComponentState::DeActivateComponentL
+// -----------------------------------------------------------------------------
+//
+void TVtUiComponentState::DeActivateComponentL()
+    {
+    __VTPRINTENTER( "CompState.DeActivateComponentL" )
+    iComponent.DoDeactivateL();
+    iState = EInactive;
+    __VTPRINTEXITR( "CompState.DeActivateComponentL %d", iState )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiComponentState::State
+// -----------------------------------------------------------------------------
+//
+TVtUiComponentState::TState TVtUiComponentState::State() const
+    {
+    return iState;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiComponentState::Component
+// -----------------------------------------------------------------------------
+//
+const MVtUiComponent& TVtUiComponentState::Component() const
+    {
+    return iComponent;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiComponentState::BlockMask
+// -----------------------------------------------------------------------------
+//
+const TVtUiBlockList& TVtUiComponentState::BlockList() const
+    {
+    return iBlockList;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiComponentState::BlockMask
+// -----------------------------------------------------------------------------
+//
+TVtUiBlockList& TVtUiComponentState::BlockList()
+    {
+    return iBlockList;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiComponentState::InformDeactivation
+// -----------------------------------------------------------------------------
+//
+TVtUiComponentState::TVtUiComponentState( MVtUiComponent& aComponent,
+    const TVtUiBlockList& aBlockList )
+    : iComponent( aComponent ), iState( EInactive )
+    {
+    __VTPRINTENTER( "CompState.ctor" )
+    
+    if( MVtUiComponent::EComponentIdToolbar == iComponent.ComponentId() )
+        return;
+        
+    iBlockList.Union( aBlockList );
+    __VTPRINTEXIT( "CompState.ctor" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/cvtuiappshutter.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,257 @@
+/*
+* 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:  Class responsible for application exit.
+*
+*/
+
+
+#include "cvtuiappshutter.h"
+#include "mvtuishutterobserver.h"
+#include "mvtuistatecontext.h"
+#include "mvtuinumbersource.h"
+#include "tvtuilocalvariation.h"
+#include <cvtlogger.h>
+#include <eikenv.h>
+#include <AknUtils.h>
+#include <aknnotewrappers.h>
+#include <StringLoader.h>
+
+// singleton instance
+static CVtUiAppShutter* iAppShutter = NULL;
+
+// -----------------------------------------------------------------------------
+// CVtUiAppShutter::InstanceL
+// -----------------------------------------------------------------------------
+//
+CVtUiAppShutter* CVtUiAppShutter::InstanceL(
+    MVtUiShutterObserver& aObserver )
+    {
+    __VTPRINTENTER( "CVtUiAppShutter.InstanceL" )
+    if ( iAppShutter == NULL )
+        {
+        iAppShutter = new ( ELeave )
+            CVtUiAppShutter( aObserver );
+        }
+    __VTPRINTEXIT( "CVtUiAppShutter.InstanceL" )
+    return iAppShutter;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppShutter::CVtUiAppShutter
+// -----------------------------------------------------------------------------
+//
+CVtUiAppShutter::CVtUiAppShutter(
+    MVtUiShutterObserver& aObserver ) :
+    iPendingStateFlags( 0 ),
+    iObserver( aObserver )
+    {
+    iPendingStateFlags.Set( EShutterWaitingStart );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppShutter::~CVtUiAppShutter
+// -----------------------------------------------------------------------------
+//
+CVtUiAppShutter::~CVtUiAppShutter()
+    {
+    __VTPRINTENTER( "CVtUiAppShutter.~" )
+    // mark singleton null
+    iAppShutter = NULL;
+    delete iCallback;
+    __VTPRINTEXIT( "CVtUiAppShutter.~" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppShutter::StartShutdown
+// Called when application may exit, i.e TVtUiStateResetting state receives
+// ShutdownDoneL message.
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppShutter::StartShutdown()
+    {
+    __VTPRINTENTER( "CVtUiAppShutter.StartShutdown" )
+    iPendingStateFlags.Clear( EShutterWaitingStart );
+    ShutdownIfReadyAndDestroy();
+    __VTPRINTEXITR( "CVtUiAppShutter.StartShutdown flags %d",
+        iPendingStateFlags.Value() )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppShutter::ShutdownWithEmergencyCallL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppShutter::ShutdownWithEmergencyCallL(
+    MVtUiStateContext& aStateContext )
+    {
+    // Leaves if other than emergency number is supplied...
+    CEmergencyCaller* emergency = CEmergencyCaller::DialEmergencyL( *this,
+        aStateContext );
+    // therefore the flag and member variable must not be set before above call.
+    iPendingStateFlags.Set( EShutterWaitingEmergencyCallback );
+    iEmergencyCaller = emergency;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppShutter::EmergencyCallDoneL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppShutter::EmergencyCallDoneL()
+    {
+    // Destruction of emergency handler is done asynchrounously to avoid
+    // problems that might
+    iPendingStateFlags.Clear( EShutterWaitingEmergencyCallback );
+    TCallBack cb( EmergencyResponseCallback, this );
+    EnqueCallbackL( cb );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppShutter::EmergencyResponseCallback
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiAppShutter::EmergencyResponseCallback( TAny* aAny )
+    {
+    CVtUiAppShutter* shutter =
+        reinterpret_cast<CVtUiAppShutter*>( aAny );
+    // delete callback
+    delete shutter->iCallback;
+    shutter->iCallback = NULL;
+    // delete emergency caller
+    delete shutter->iEmergencyCaller;
+    shutter->iEmergencyCaller = NULL;
+
+    shutter->ShutdownIfReadyAndDestroy();
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppShutter::EnqueCallbackL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppShutter::EnqueCallbackL( TCallBack& aCallback )
+    {
+    __VTPRINTENTER( "CVtUiAppShutter.EnqueAsyncCommsCommandL" )
+    if ( !iCallback )
+        {
+        iCallback = new ( ELeave ) CAsyncCallBack( aCallback, EPriorityHigh );
+        }
+    iCallback->Call();
+    __VTPRINTEXIT( "CVtUiAppShutter.EnqueAsyncCommsCommandL" )
+    __VTPRINTEXIT( "CVtUiAppShutter.EnqueCallbackL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppShutter::ShutdownIfReadyAndDestroy
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppShutter::ShutdownIfReadyAndDestroy()
+    {
+    __VTPRINTENTER( "CVtUiAppShutter.ShutdownIfReadyAndDestroy" )
+    __VTPRINT2( DEBUG_GEN, "  shutter flags %d",
+        iPendingStateFlags.Value() );
+    if ( !iPendingStateFlags.Value() )
+        {
+        iObserver.HandleShutdownReady();
+        delete this;
+        }
+    __VTPRINTEXIT( "CVtUiAppShutter.ShutdownIfReadyAndDestroy" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppShutter::CEmergencyCaller::DialEmergencyL
+// -----------------------------------------------------------------------------
+//
+CVtUiAppShutter::CEmergencyCaller* CVtUiAppShutter::CEmergencyCaller::
+    DialEmergencyL(
+    CVtUiAppShutter& aObserver,
+    MVtUiStateContext& aStateContext )
+    {
+    __VTPRINTENTER( "CEmergencyCaller.DialEmergencyL" )
+    CVtUiAppShutter::CEmergencyCaller* self = new ( ELeave )
+        CVtUiAppShutter::CEmergencyCaller( aObserver, aStateContext );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    __VTPRINTEXIT( "CEmergencyCaller.DialEmergencyL" )
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppShutter::CEmergencyCaller::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppShutter::CEmergencyCaller::ConstructL()
+    {
+    __VTPRINTENTER( "CEmergencyCaller.ConstructL" )
+    const MVtUiNumberSource* source = iStateContext.NumberSource();
+    if ( source )
+        {
+        source->GetContents( iNumber );
+        AknTextUtils::ConvertDigitsTo( iNumber, EDigitTypeWestern );
+        User::LeaveIfError( iServer.Connect() );
+    	iEmergency = CPhCltEmergencyCall::NewL( this );
+        TBool isEmergenyNumber = EFalse;
+        const TInt err =
+        	iEmergency->FindEmergencyPhoneNumber( iNumber, isEmergenyNumber );
+
+        if ( err == KErrNone && isEmergenyNumber )
+            {
+            __VTPRINT( DEBUG_GEN, "iEmergency->DialEmergencyCallL")
+            iEmergency->DialEmergencyCallL( iNumber );
+            }
+        if ( !isEmergenyNumber || err )
+            {
+            __VTPRINT( DEBUG_GEN, "  not EC number => leave" )
+            // Not an emergency call number. Abort emergency call process.
+            User::Leave( KErrArgument );
+            }
+        }
+    __VTPRINTEXIT( "CEmergencyCaller.ConstructL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppShutter::CEmergencyCaller::CEmergencyCaller
+// -----------------------------------------------------------------------------
+//
+CVtUiAppShutter::CEmergencyCaller::CEmergencyCaller(
+    CVtUiAppShutter& aObserver,
+    MVtUiStateContext& aStateContext ) :
+    iObserver( aObserver ),
+    iStateContext( aStateContext )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppShutter::CEmergencyCaller::~CEmergencyCaller
+// -----------------------------------------------------------------------------
+//
+CVtUiAppShutter::CEmergencyCaller::~CEmergencyCaller()
+    {
+    __VTPRINTENTER( "CEmergencyCaller.~" )
+    delete iEmergency;
+    iServer.Close();
+    __VTPRINTEXIT( "CEmergencyCaller.~" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiAppShutter::CEmergencyCaller::HandleEmergencyDialL
+// -----------------------------------------------------------------------------
+//
+void CVtUiAppShutter::CEmergencyCaller::HandleEmergencyDialL(
+    const TInt )
+    {
+    __VTPRINTENTER( "CEmergencyCaller.HandleEmergencyDialL" )
+    iObserver.EmergencyCallDoneL();
+    __VTPRINTEXIT( "CEmergencyCaller.HandleEmergencyDialL" )
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/cvtuidtmfbuffer.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,218 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   Implementation of DTMF buffer class
+*
+*/
+
+
+#include <coemain.h>
+#include <cvtlogger.h>
+#include "cvtuidtmfbuffer.h"
+#include "tvtuiwsevent.h"
+#include "VtUiUtility.h"
+
+// Time after which buffer will be automatically reset (4 seconds).
+const TInt KBufferResetInterval = 4 * 1000000;
+
+// ---------------------------------------------------------------------------
+// CVtUiDTMFBuffer::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiDTMFBuffer* CVtUiDTMFBuffer::NewL( const CCoeEnv& aCoeEnv )
+    {
+    __VTPRINTENTER( "CVtUiDTMFBuffer.NewL" )
+    CVtUiDTMFBuffer* self = new ( ELeave ) CVtUiDTMFBuffer( aCoeEnv );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "CVtUiDTMFBuffer.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDTMFBuffer::~CVtUiDTMFBuffer
+// ---------------------------------------------------------------------------
+//
+CVtUiDTMFBuffer::~CVtUiDTMFBuffer()
+    {
+    __VTPRINTENTER( "CVtUiDTMFBuffer.~" )
+    Cancel();
+    iTimer.Close();
+    __VTPRINTEXIT( "CVtUiDTMFBuffer.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDTMFBuffer::Append
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiDTMFBuffer::Append( TChar aChar )
+    {
+    __VTPRINTENTER( "CVtUiDTMFBuffer.Append" )
+    TBool result( EFalse );
+    if ( VtUiUtility::IsDTMFCharacter( aChar ) )
+        {
+        if ( iBuffer.Length() == iBuffer.MaxLength() )
+            {
+            iBuffer = iBuffer.Right( 1 );
+            }
+        iBuffer.Append( aChar );
+        StartTimer();
+        result = ETrue;
+        }
+    __VTPRINTEXITR( "CVtUiDTMFBuffer.Append %d", result )
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDTMFBuffer::Reset
+// ---------------------------------------------------------------------------
+//
+void CVtUiDTMFBuffer::Reset()
+    {
+    __VTPRINTENTER( "CVtUiDTMFBuffer.Reset" )
+    Cancel();
+    ResetBuffer();
+    __VTPRINTEXIT( "CVtUiDTMFBuffer.Reset" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDTMFBuffer::Activate
+// ---------------------------------------------------------------------------
+//
+void CVtUiDTMFBuffer::Activate()
+    {
+    __VTPRINTENTER( "CVtUiDTMFBuffer.Activate" )
+    TVtUiWsEvent< MVtUiNumberSource > event(
+        EVtUiWsEventNumberSourceActivate, this );
+    iCoeEnv.WsSession().SendEventToWindowGroup(
+        iCoeEnv.RootWin().WindowGroupId(), event );
+    __VTPRINTEXIT( "CVtUiDTMFBuffer.Activate" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDTMFBuffer::Deactivate
+// ---------------------------------------------------------------------------
+//
+void CVtUiDTMFBuffer::Deactivate()
+    {
+    __VTPRINTENTER( "CVtUiDTMFBuffer.Deactivate" )
+    TVtUiWsEvent< MVtUiNumberSource > event(
+        EVtUiWsEventNumberSourceDeactivate, this );
+    iCoeEnv.WsSession().SendEventToWindowGroup(
+        iCoeEnv.RootWin().WindowGroupId(), event );
+    __VTPRINTEXIT( "CVtUiDTMFBuffer.Deactivate" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDTMFBuffer::GetContents
+// ---------------------------------------------------------------------------
+//
+void CVtUiDTMFBuffer::GetContents( TDes& aContents ) const
+    {
+    __VTPRINTENTER( "CVtUiDTMFBuffer.GetContents" )
+    const TInt length( aContents.MaxLength() < iBuffer.Length() ?
+            aContents.MaxLength() : iBuffer.Length() );
+    if ( length )
+        {
+        aContents = iBuffer.Mid( 0, length );
+        }
+    else
+        {
+        aContents.Zero();
+        }
+    __VTPRINTEXIT( "CVtUiDTMFBuffer.GetContents" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDTMFBuffer::DoCancel
+// ---------------------------------------------------------------------------
+//
+void CVtUiDTMFBuffer::DoCancel()
+    {
+    __VTPRINTENTER( "CVtUiDTMFBuffer.DoCancel" )
+    iTimer.Cancel();
+    __VTPRINTEXIT( "CVtUiDTMFBuffer.DoCancel" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDTMFBuffer::RunL
+// ---------------------------------------------------------------------------
+//
+void CVtUiDTMFBuffer::RunL()
+    {
+    __VTPRINTENTER( "CVtUiDTMFBuffer.RunL" )
+    TimerExpired( iStatus.Int() );
+    __VTPRINTEXIT( "CVtUiDTMFBuffer.RunL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDTMFBuffer::CVtUiDTMFBuffer
+// ---------------------------------------------------------------------------
+//
+CVtUiDTMFBuffer::CVtUiDTMFBuffer( const CCoeEnv& aCoeEnv ) :
+    CActive( EPriorityStandard ), iCoeEnv( aCoeEnv )
+    {
+    __VTPRINTENTER( "CVtUiDTMFBuffer.ctor" )
+    CActiveScheduler::Add( this );
+    __VTPRINTEXIT( "CVtUiDTMFBuffer.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDTMFBuffer::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiDTMFBuffer::ConstructL()
+    {
+    __VTPRINTENTER( "CVtUiDTMFBuffer.ConstructL" )
+    User::LeaveIfError( iTimer.CreateLocal() );
+    __VTPRINTEXIT( "CVtUiDTMFBuffer.ConstructL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDTMFBuffer::StartTimer
+// ---------------------------------------------------------------------------
+//
+void CVtUiDTMFBuffer::StartTimer()
+    {
+    __VTPRINTENTER( "CVtUiDTMFBuffer.StartTimer" )
+    Cancel();
+    SetActive();
+    iTimer.After( iStatus, KBufferResetInterval );
+    __VTPRINTEXIT( "CVtUiDTMFBuffer.StartTimer" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDTMFBuffer::TimerExpired
+// ---------------------------------------------------------------------------
+//
+void CVtUiDTMFBuffer::TimerExpired( TInt aError )
+    {
+    __VTPRINTENTER( "CVtUiDTMFBuffer.TimerExpired" )
+    if ( aError != KErrCancel )
+        {
+        ResetBuffer();
+        }
+    __VTPRINTEXIT( "CVtUiDTMFBuffer.TimerExpired" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDTMFBuffer::ResetBuffer
+// ---------------------------------------------------------------------------
+//
+void CVtUiDTMFBuffer::ResetBuffer()
+    {
+    __VTPRINTENTER( "CVtUiDTMFBuffer.ResetBuffer" )
+    iBuffer.Zero();
+    __VTPRINTEXIT( "CVtUiDTMFBuffer.ResetBuffer" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/cvtuivideocontrolbase.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,777 @@
+/*
+* 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:  Video control base class implementation.
+*
+*/
+
+
+#include    <cvtlogger.h>
+#include    <featmgr.h>
+#include    <AknsDrawUtils.h>
+#include    <AknsUtils.h>
+#include    <AknBidiTextUtils.h>
+#include    <StringLoader.h>
+#include    <videotelui.rsg>
+
+#include    <AknsBasicBackgroundControlContext.h>
+#include    <AknStatuspaneUtils.h>
+#include    "cvtuivideocontrolbase.h"
+#include    "mvtuicomponentmanager.h"
+#include    "VtUiLayout.h"
+
+// CONSTANTS
+
+// Index of white color.
+const TInt KVtUiColorWhite = 0;
+
+// Amount of characters reserved per line.
+const TInt KVtUiWaitingExtraSpacePerLine = KAknBidiExtraSpacePerLine + 1;
+
+// Amount of lines used for 'waiting text'
+const TInt KVtUiWaitingLineCount = 2;
+
+// Implementation of CVtUiVideoControlBase
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::~CVtUiVideoControlBase
+// ---------------------------------------------------------------------------
+//
+CVtUiVideoControlBase::~CVtUiVideoControlBase()
+    {
+    __VTPRINTENTER( "VidCtrlBase.~" )
+    AknsUtils::DeregisterControlPosition( this );
+    iStreamBitmap = NULL; // not owned.
+    delete iWaitingTextWrappedArray;
+    delete iWaitingTextWrapped;
+    delete iBgContext;
+    __VTPRINTEXIT( "VidCtrlBase.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::CVtUiVideoControlBase
+// ---------------------------------------------------------------------------
+//
+CVtUiVideoControlBase::CVtUiVideoControlBase(
+    CVtUiBitmapManager& aBitmapManager ) :
+    iBitmapManager( &aBitmapManager )
+    {
+    __VTPRINTENTER( "VidCtrlBase.ctor" )
+    __VTPRINTEXIT( "VidCtrlBase.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::BaseConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::BaseConstructL()
+    {
+    __VTPRINTENTER( "VidCtrlBase.BaseConstructL" )
+    iBgContext = CAknsBasicBackgroundControlContext::NewL(
+                       KAknsIIDQsnBgAreaMain, Rect(), ETrue );
+    CreateWindowL();
+    SetExtent( TPoint(), TSize() );
+    ActivateL();
+    WrapOnDemand();
+    __VTPRINTEXIT( "VidCtrlBase.BaseConstructL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::SetRenderingHint
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::SetRenderingHint( TRenderingHint aHint )
+    {
+    __VTPRINTENTER( "VidCtrlBase.SetRenderingHint" )
+    __VTPRINT2( DEBUG_GEN, "VidCtrlBase.SetRenderingHint aHint = %d", aHint )
+    iHints.Set( aHint );
+    __VTPRINTEXIT( "VidCtrlBase.SetRenderingHint" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::ClearRenderingHint
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::ClearRenderingHint( TRenderingHint aHint )
+    {
+    __VTPRINTENTER( "VidCtrlBase.ClearRenderingHint" )
+    __VTPRINT2( DEBUG_GEN, "VidCtrlBase.ClearRenderingHint aHint = %d", aHint )
+    iHints.Clear( aHint );
+    __VTPRINTEXIT( "VidCtrlBase.ClearRenderingHint" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::BitmapManager
+// ---------------------------------------------------------------------------
+//
+CVtUiBitmapManager& CVtUiVideoControlBase::BitmapManager() const
+    {
+    return *iBitmapManager;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::Bitmap
+// ---------------------------------------------------------------------------
+//
+CFbsBitmap* CVtUiVideoControlBase::Bitmap( TVtUiBitmapPoolId aId ) const
+    {
+    __VTPRINTENTER( "VidCtrlBase.Bitmap" )
+    CFbsBitmap* bitmap = NULL;
+    iBitmapManager->GetBitmap( aId, bitmap );
+    __VTPRINTEXITR( "VidCtrlBase.Bitmap %d", TInt( bitmap ) )
+    return bitmap;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::AdjustPointForDP
+// ---------------------------------------------------------------------------
+//
+TPoint CVtUiVideoControlBase::AdjustPointForDP( const TPoint aPoint ) const
+    {
+    __VTPRINTENTER( "VidCtrlBase.AdjustPointForDP" )
+    TPoint result( aPoint );
+    if ( FeatureManager::FeatureSupported( KFeatureIdDisplayPost ) )
+        {
+        if ( result.iX & 1 )
+            {
+            result.iX++;
+            }
+        }
+    __VTPRINTEXIT( "VidCtrlBase.AdjustPointForDP" )
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::AdjustRectForDP
+// ---------------------------------------------------------------------------
+//
+TRect CVtUiVideoControlBase::AdjustRectForDP( const TRect aRect ) const
+    {
+    __VTPRINTENTER( "VidCtrlBase.AdjustRectForDP" )
+    TRect result( aRect );
+    if ( FeatureManager::FeatureSupported( KFeatureIdDisplayPost ) )
+        {
+        if ( result.iTl.iX & 1 )
+            {
+            result.Move( 1, 0 );
+            result.SetWidth( Max( 0, result.Width() - 1 ) );
+            }
+        if ( result.Width() & 1 )
+            {
+            result.SetWidth( result.Width() - 1 );
+            }
+        }
+    __VTPRINTEXIT( "VidCtrlBase.AdjustRectForDP" )
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::WaitingTextLayout
+// ---------------------------------------------------------------------------
+//
+TAknTextLineLayout CVtUiVideoControlBase::WaitingTextLayout( TInt )
+    {
+    return TAknTextLineLayout();
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::HandleSizeChanged
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::HandleSizeChanged()
+    {
+    __VTPRINTENTER( "VidCtrlBase.HandleSizeChanged" )
+    __VTPRINTEXIT( "VidCtrlBase.HandleSizeChanged" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::DrawSkinnedBackground
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::DrawSkinnedBackground( CWindowGc& aGc ) const
+    {
+    __VTPRINTENTER( "VidCtrlBase.DrawSkinnedBackground" )
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
+    AknsDrawUtils::Background( skin, cc, this, aGc, Rect() );
+    __VTPRINTEXIT( "VidCtrlBase.DrawSkinnedBackground" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiVideoControlBase::MopSupplyObject
+// -----------------------------------------------------------------------------
+//
+
+TTypeUid::Ptr CVtUiVideoControlBase::MopSupplyObject( TTypeUid aId )
+ {
+     __VTPRINTENTER( "VidCtrlBase.MopSupplyObject" )
+ // Required during rendering of the background skin in Draw()
+ if (aId.iUid == MAknsControlContext::ETypeId)
+     {
+      __VTPRINTEXIT( "VidCtrlBase.MopSupplyObject.1" )
+     return MAknsControlContext::SupplyMopObject( aId, iBgContext );
+     }
+    __VTPRINTEXIT( "VidCtrlBase.MopSupplyObject.2" )
+ return CCoeControl::MopSupplyObject( aId );
+ }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::DrawColoredBackground
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::DrawColoredBackground( CWindowGc& aGc ) const
+    {
+    __VTPRINTENTER( "VidCtrlBase.DrawColoredBackground" )
+    aGc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+    aGc.SetPenStyle( CGraphicsContext::ENullPen );
+    aGc.SetBrushColor( AKN_LAF_COLOR( KVtUiColorWhite ) );
+    aGc.DrawRect( Rect() );
+    aGc.SetBrushStyle( CGraphicsContext::ENullBrush );
+    __VTPRINTEXIT( "VidCtrlBase.DrawColoredBackground" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::DrawWaitingText
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiVideoControlBase::DrawWaitingText( CWindowGc& aGc ) const
+    {
+    __VTPRINTENTER( "VidCtrlBase.DrawWaitingText" )
+    const TInt count( iWaitingTextWrappedArray->Count() );
+    if ( count > 0 )
+        {
+        aGc.SetClippingRect( StreamClippingRect() );
+        aGc.SetBrushStyle( CGraphicsContext::ENullBrush );
+        MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+        TRgb color( iWaitingTextLine1Layout.Color() );
+        AknsUtils::GetCachedColor(
+            skin,
+            color,
+            KAknsIIDQsnTextColors,
+            EAknsCIQsnTextColorsCG6 );
+        iWaitingTextLine1Layout.DrawText(
+            aGc,
+            iWaitingTextWrappedArray->At( 0 ), // first line
+            EFalse,
+            color );
+        if ( count > 1 ) // two lines
+            {
+            iWaitingTextLine2Layout.DrawText(
+                aGc,
+                iWaitingTextWrappedArray->At( 1 ), // second line
+                EFalse,
+                color );
+            }
+        }
+    __VTPRINTEXITR( "VidCtrlBase.DrawWaitingText %d", ETrue )
+    return ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::DrawBlind
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::DrawBlind( CWindowGc& aGc ) const
+    {
+    __VTPRINTENTER( "VidCtrlBase.DrawBlind" )
+    CFbsBitmap* icon = BlindImage();
+    if ( icon )
+        {
+        CFbsBitmap* mask = BlindMask();
+        if ( mask )
+            {
+            aGc.BitBltMasked(
+                BlindBlitPosition(),
+                icon,
+                TRect( icon->SizeInPixels() ),
+                mask,
+                ETrue );
+            }
+        else
+            {
+            aGc.BitBlt(
+                BlindBlitPosition(),
+                icon );
+            }
+        }
+    __VTPRINTEXIT( "VidCtrlBase.DrawBlind" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::DrawStream
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::DrawStream( CWindowGc& aGc ) const
+    {
+    __VTPRINTENTER( "VidCtrlBase.DrawStream" )
+    aGc.SetBrushStyle( CGraphicsContext::ENullBrush );
+    aGc.SetClippingRect( StreamClippingRect() );
+    aGc.BitBlt( StreamBlitPosition(), iStreamBitmap );
+    aGc.CancelClippingRect();
+    __VTPRINTEXIT( "VidCtrlBase.DrawStream" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::StreamBlitPosition
+// ---------------------------------------------------------------------------
+//
+TPoint CVtUiVideoControlBase::StreamBlitPosition() const
+    {
+    __VTPRINTENTER( "VidCtrlBase.StreamBlitPosition" )
+    __VTPRINTEXIT( "VidCtrlBase.StreamBlitPosition" )
+    return Rect().iTl;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::StreamClippingRect
+// ---------------------------------------------------------------------------
+//
+TRect CVtUiVideoControlBase::StreamClippingRect() const
+    {
+    __VTPRINTENTER( "VidCtrlBase.StreamClippingRect" )
+    __VTPRINTEXIT( "VidCtrlBase.StreamClippingRect" )
+    return Rect();
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::BlindImage
+// ---------------------------------------------------------------------------
+//
+CFbsBitmap* CVtUiVideoControlBase::BlindImage() const
+    {
+    __VTPRINTENTER( "VidCtrlBase.BlindImage" )
+    __VTPRINTEXIT( "VidCtrlBase.BlindImage" )
+    return NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::BlindMask
+// ---------------------------------------------------------------------------
+//
+CFbsBitmap* CVtUiVideoControlBase::BlindMask() const
+    {
+    __VTPRINTENTER( "VidCtrlBase.BlindMask" )
+    __VTPRINTEXIT( "VidCtrlBase.BlindMask" )
+    return NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::BlindBlitPosition
+// ---------------------------------------------------------------------------
+//
+TPoint CVtUiVideoControlBase::BlindBlitPosition() const
+    {
+    __VTPRINTENTER( "VidCtrlBase.BlindBlitPosition" )
+    __VTPRINTEXIT( "VidCtrlBase.BlindBlitPosition" )
+    return TPoint();
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::Reset
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::Reset()
+    {
+    __VTPRINTENTER( "VidCtrlBase.Reset" )
+    iBlindStatus = EFalse;
+    iStreamBitmap = NULL;
+    iWaitingTextShow = EFalse;
+    __VTPRINTEXIT( "VidCtrlBase.Reset" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::SetBlind
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::SetBlind( TBool aBlindStatus )
+    {
+    __VTPRINTENTER( "VidCtrlBase.SetBlind" )
+    /* Once SetBlind called, re-draw the control anyway */
+//    if ( iBlindStatus != aBlindStatus )
+//        {
+        iBlindStatus = aBlindStatus;
+        DrawNow();
+//        }
+    __VTPRINTEXITR( "VidCtrlBase.SetBlind %d", iBlindStatus )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiVideoControlBase::IsAlphaZero
+// Checks if the alpha has been set to zero.
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiVideoControlBase::IsAlphaZero() const
+    {
+    __VTPRINTENTER( "VidCtrlBase.IsAlphaZero" )
+    TBool isZero( EFalse );
+    const CWsScreenDevice& sdev(
+        *static_cast< CWsScreenDevice*>( SystemGc().Device() ) );
+    if ( sdev.DisplayMode() == EColor16MA )
+        {
+        TRgb color;
+        TPoint point( Rect().Center() );
+        sdev.GetPixel( color, point );
+        isZero = ( color.Alpha() == 0 );
+        }
+    __VTPRINTEXITR( "VidCtrlBase.IsAlphaZero %d", isZero )
+    return isZero;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiVideoControlBase::SetAlpha
+// Sets alpha.
+// -----------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::SetAlpha( CWindowGc& aGc ) const
+    {
+    __VTPRINTENTER( "VidCtrlBase.SetAlpha" )
+    aGc.SetDrawMode( CGraphicsContext::EDrawModeOR );
+    aGc.SetBrushColor( TRgb( 0, 0, 0, 255 ) );
+    aGc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+    aGc.Clear();
+    aGc.Reset();
+    __VTPRINTEXIT( "VidCtrlBase.SetAlpha" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::SetStreamBitmap
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::SetStreamBitmap( CFbsBitmap* aStreamBitmap )
+    {
+    __VTPRINTENTER( "VidCtrlBase.SetStreamBitmap" )
+    __VTPRINT2( DEBUG_GEN, "VidCtrlBase.SetStreamBitmap %d",
+        (TInt) aStreamBitmap )
+    const CFbsBitmap* oldBitmap( iStreamBitmap );
+    iStreamBitmap = aStreamBitmap;
+    iSetAlpha = IsAlphaZero();
+    if ( iStreamBitmap )
+        {
+        RedrawStream();
+        }
+    else if ( oldBitmap )
+        {
+        DrawNow();
+        }
+    __VTPRINTEXIT( "VidCtrlBase.SetStreamBitmap" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::SetStreamBitmapReserve
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::SetStreamBitmapReserve(
+    CFbsBitmap* aStreamBitmap )
+    {
+    __VTPRINTENTER( "VidCtrlBase.SetStreamBitmapReserve" )
+    __VTPRINT2( DEBUG_GEN, "VidCtrlBase.SetStreamBitmapReserve %d",
+        (TInt) aStreamBitmap )
+    const CFbsBitmap* oldBitmap( iStreamBitmap );
+    iStreamBitmap = aStreamBitmap;
+    if ( iStreamBitmap )
+        {
+        RedrawStream();
+        }
+    else if ( oldBitmap )
+        {
+        DrawNow();
+        }
+    __VTPRINTEXIT( "VidCtrlBase.SetStreamBitmapReserve" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::SetWaiting
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::SetWaiting( TBool aShowWaitingText )
+    {
+    __VTPRINTENTER( "VidCtrlBase.SetWaiting" )
+    if ( iWaitingTextShow != aShowWaitingText )
+        {
+        iWaitingTextShow = aShowWaitingText;
+        WrapOnDemand();
+        DrawNow();
+        }
+    __VTPRINTEXITR( "VidCtrlBase.SetWaiting %d", iWaitingTextShow )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::Redraw
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::Redraw()
+    {
+    __VTPRINTENTER( "VidCtrlBase.Redraw" )
+    if ( iStreamBitmap )
+        {
+        __VTPRINT( DEBUG_GEN, "VidCtrlBase.Redraw drawing" );
+        DrawNow();
+        }
+    __VTPRINTEXIT( "VidCtrlBase.Redraw" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::Draw
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::Draw( const TRect& ) const
+    {
+    __VTPRINTENTER( "VidCtrlBase.Draw" )
+    DoDraw( SystemGc() );
+    __VTPRINTEXIT( "VidCtrlBase.Draw" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiVideoControlBase::SizeChanged
+// -----------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::SizeChanged()
+    {
+    __VTPRINTENTER( "VidCtrlBase.SizeChanged" )
+    AknsUtils::RegisterControlPosition( this );
+
+    TRect bgRect;
+    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, bgRect );
+    iBgContext->SetRect( bgRect );
+
+    HandleSizeChanged();
+    TRect parent( Rect() );
+    if ( !parent.IsEmpty() )
+        {
+        TAknTextLineLayout text( WaitingTextLayout( 0 ) );
+        iWaitingTextLine1Layout.LayoutText( parent, text );
+        text = WaitingTextLayout( 1 );
+        iWaitingTextLine2Layout.LayoutText( parent, text );
+        delete iWaitingTextWrapped;
+        iWaitingTextWrapped = NULL;
+        delete iWaitingTextWrappedArray;
+        iWaitingTextWrappedArray = NULL;
+        WrapOnDemand();
+        }
+    __VTPRINTEXIT( "VidCtrlBase.SizeChanged" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiVideoControlBase::PositionChanged
+// -----------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::PositionChanged()
+    {
+    __VTPRINTENTER( "VidCtrlBase.SizeChanged" )
+    AknsUtils::RegisterControlPosition( this );
+    __VTPRINTEXIT( "VidCtrlBase.SizeChanged" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::RedrawStream
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::RedrawStream()
+    {
+    __VTPRINTENTER( "VidCtrlBase.RedrawStream" )
+    const TRect clippingRect( StreamClippingRect() );
+    Window().Invalidate( clippingRect );
+    Window().BeginRedraw( clippingRect );
+    ActivateGc();
+    CWindowGc& gc = SystemGc();
+    if ( iSetAlpha )
+        {
+        SetAlpha( gc );
+        iSetAlpha = EFalse;
+        }
+    DoDrawStream( gc );
+    DoDrawBlind( gc );
+    DeactivateGc();
+    Window().EndRedraw();
+    __VTPRINTEXIT( "VidCtrlBase.RedrawStream" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiVideoControlBase::WrapOnDemand
+// -----------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::WrapOnDemand()
+    {
+    __VTPRINTENTER( "VidCtrlBase.WrapOnDemand" )
+    if ( iWaitingTextShow && !iWaitingTextWrapped )
+        {
+        TRAP_IGNORE( WrapWaitingTextL() );
+        }
+    __VTPRINTEXIT( "VidCtrlBase.WrapOnDemand" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiVideoControlBase::WrapWaitingTextL
+// -----------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::WrapWaitingTextL()
+    {
+    __VTPRINTENTER( "VidCtrlBase.WrapWaitingTextL" )
+    HBufC* waitingText =
+        StringLoader::LoadLC( R_VIDEOTELUI_QTN_INCAL_WAITING_IMAGE );
+
+    CArrayFix< TInt >* lines =
+        new ( ELeave ) CArrayFixFlat< TInt >( KVtUiWaitingLineCount );
+    CleanupStack::PushL( lines );
+    lines->AppendL( iWaitingTextLine1Layout.TextRect().Width() );
+    lines->AppendL( iWaitingTextLine2Layout.TextRect().Width() );
+
+    CArrayFix<TPtrC>* wrap =
+        new ( ELeave ) CArrayFixFlat< TPtrC >( KVtUiWaitingLineCount );
+    CleanupStack::PushL( wrap );
+    wrap->AppendL( TPtrC() );
+    wrap->AppendL( TPtrC() );
+
+    HBufC* waitingTextWrapped =
+        HBufC::NewLC(
+            waitingText->Length() +
+            lines->Count() * KVtUiWaitingExtraSpacePerLine );
+
+    TPtr textBuf = waitingTextWrapped->Des();
+    textBuf.Zero();
+    textBuf.Append( *waitingText );
+
+    AknBidiTextUtils::ConvertToVisualAndWrapToArrayL(
+        textBuf,
+        *lines,
+        *iWaitingTextLine1Layout.Font(),
+        *wrap,
+        ETrue );
+
+    CleanupStack::Pop( waitingTextWrapped );
+    iWaitingTextWrapped = waitingTextWrapped;
+
+    CleanupStack::Pop( wrap );
+    iWaitingTextWrappedArray = wrap;
+
+    CleanupStack::PopAndDestroy( lines );
+    CleanupStack::PopAndDestroy( waitingText );
+    __VTPRINTEXIT( "VidCtrlBase.WrapWaitingTextL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::DoDraw
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::DoDraw( CWindowGc& aGc ) const
+    {
+    __VTPRINTENTER( "VidCtrlBase.Draw(gc)" )
+    if ( iSetAlpha )
+        {
+        SetAlpha( aGc );
+        iSetAlpha = EFalse;
+        }
+    DoDrawBackground( aGc );
+    if ( !DoDrawWaitingText( aGc ) )
+        {
+        DoDrawStream( aGc );
+        DoDrawBlind( aGc );
+        }
+    __VTPRINTEXIT( "VidCtrlBase.Draw(gc)" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::DoDrawBackground
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::DoDrawBackground( CWindowGc& aGc ) const
+    {
+    __VTPRINTENTER( "VidCtrlBase.DoDrawBackground" )
+    if ( iHints.IsSet( ESkinnedBackground ) )
+        {
+        DrawSkinnedBackground( aGc );
+        }
+    else if ( iHints.IsSet( EColoredBackground ) )
+        {
+        DrawColoredBackground( aGc );
+        }
+    __VTPRINTEXIT( "VidCtrlBase.DoDrawBackground" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::DoDrawWaitingText
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiVideoControlBase::DoDrawWaitingText( CWindowGc& aGc ) const
+    {
+    __VTPRINTENTER( "VidCtrlBase.DoDrawWaitingText" )
+    TBool wasDrawn( EFalse );
+    if ( iHints.IsClear( ENoWaitingText ) && iWaitingTextShow &&
+         iWaitingTextWrapped && iWaitingTextWrappedArray )
+        {
+        wasDrawn = DrawWaitingText( aGc );
+        }
+    __VTPRINTEXITR( "VidCtrlBase.DoDrawWaitingText %d", wasDrawn )
+    return wasDrawn;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::DoDrawBlind
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::DoDrawBlind( CWindowGc& aGc ) const
+    {
+    __VTPRINTENTER( "VidCtrlBase.DoDrawBlind" )
+    if ( iBlindStatus && iHints.IsClear( ENoBlindIcon ) )
+        {
+        DrawBlind( aGc );
+        }
+    __VTPRINTEXIT( "VidCtrlBase.DoDrawBlind" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::DoDrawStream
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::DoDrawStream( CWindowGc& aGc ) const
+    {
+    __VTPRINTENTER( "VidCtrlBase.DoDrawStream" )
+    if ( iStreamBitmap )
+        {
+        DrawStream( aGc );
+        }
+    __VTPRINTEXIT( "VidCtrlBase.DoDrawStream" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::SetRemoteVideoControl
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase::SetRemoteVideoControl( CCoeControl* aRemoteControl )
+    {
+    __VTPRINTENTER( "VidCtrlBase.SetRemoteVideoControl" )
+    iRemoteVideoControl = aRemoteControl;
+    __VTPRINTEXIT( "VidCtrlBase.SetRemoteVideoControl" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::LayoutRemoteVideo
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoControlBase:: LayoutRemoteVideo()
+    {
+    __VTPRINTENTER( "VidCtrlBase.LayoutRemoteVideo" )
+    __VTPRINTEXIT( "VidCtrlBase.LayoutRemoteVideo" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoControlBase::RemoteVideoControl
+// ---------------------------------------------------------------------------
+//
+CCoeControl * CVtUiVideoControlBase::RemoteVideoControl()
+    {
+    __VTPRINTENTER( "VidCtrlBase.RemoteVideoControl" )
+    __VTPRINTEXIT( "VidCtrlBase.RemoteVideoControl" )
+    return iRemoteVideoControl;
+        
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/cvtuifeaturebase.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,116 @@
+/*
+* 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:  CVtUiFeatureBase implementation.
+*
+*/
+
+
+// INCLUDE FILES
+
+#include    "cvtuifeaturebase.h"
+#include    "mvtuifeature.h"
+#include    "cvtuicommandpolicymanager.h"
+#include    <cvtlogger.h>
+#include    "cvtuifeaturemanager.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CVtUiFeatureBase::CVtUiFeatureBase
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CVtUiFeatureBase::CVtUiFeatureBase( TVtUiFeatureId aId,
+    CVtUiFeatureManager& aFeatureManager ) : iId( aId ), 
+    iFeatureManager ( aFeatureManager ),
+    iFeatureState ( EUnprepared )
+    {
+    __VTPRINTENTER( "CVtUiFeatureBase.CVtUiFeatureBase" )
+    __VTPRINTEXIT( "CVtUiFeatureBase.CVtUiFeatureBase" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFeatureBase::BaseConstructL
+// -----------------------------------------------------------------------------
+//
+void CVtUiFeatureBase::StartL()
+	{
+	if ( iFeatureState == EUnprepared )
+		{
+		iAsyncCallback->Cancel();
+		InitFeatureL();
+		}
+	}
+
+// -----------------------------------------------------------------------------
+// CVtUiFeatureBase::BaseConstructL
+// -----------------------------------------------------------------------------
+//
+void CVtUiFeatureBase::BaseConstructL()
+    {
+    __VTPRINTENTER( "CVtUiFeatureBase.BaseConstructL" )
+    iAsyncCallback = 
+    	new ( ELeave ) CAsyncCallBack ( CActive::EPriorityLow );
+    iAsyncCallback->Set( TCallBack( &DoInitFeaturesL, this ) );
+    iAsyncCallback->CallBack(); 
+    __VTPRINTEXIT( "CVtUiFeatureBase.BaseConstructL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFeatureBase::~CVtUiFeatureBase
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CVtUiFeatureBase::~CVtUiFeatureBase()
+    {
+    __VTPRINTENTER( "CVtUiFeatureBase.~" )
+    delete iAsyncCallback;
+    __VTPRINTEXIT( "CVtUiFeatureBase.~" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFeatureBase::State
+// -----------------------------------------------------------------------------
+//
+MVtUiFeature::TVtUiFeatureState CVtUiFeatureBase::State() const
+    {
+    __VTPRINTENTER( "CVtUiFeatureBase.State" )
+    __VTPRINTEXITR( "CVtUiFeatureBase.State. %d", (TInt)iFeatureState )
+    return iFeatureState;
+    }
+        
+// -----------------------------------------------------------------------------
+// CVtUiFeatureBase::Id
+// -----------------------------------------------------------------------------
+//
+TVtUiFeatureId CVtUiFeatureBase::Id() const
+    {
+    __VTPRINTENTER( "CVtUiFeatureBase.Id" )
+    __VTPRINTEXITR( "CVtUiFeatureBase.Id %d", iId )
+    return iId;
+    }
+    
+// -----------------------------------------------------------------------------
+// CVtUiFeatureBase::DoInitFeaturesL
+// -----------------------------------------------------------------------------
+//  
+TInt CVtUiFeatureBase::DoInitFeaturesL( TAny* aAny )
+    {
+    __VTPRINTENTER( "CVtUiFeatureBase.DoInitFeaturesL" )
+    CVtUiFeatureBase* self = static_cast< CVtUiFeatureBase* >( aAny );
+    self->InitFeatureL();
+    __VTPRINTEXIT( "CVtUiFeatureBase.DoInitFeaturesL" )
+    return KErrNone;
+    }   
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/cvtuifeaturemanager.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,280 @@
+/*
+* 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:  Feature manager for Video Telephone application.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "cvtuifeaturemanager.h"
+#include    "CVtUiAppUi.h"
+#include    "cvtuifixedtoolbar.h"
+#include    "cvtuifloatingtoolbar.h"
+#include    "cvtuimenus.h"
+#include    "cvtuifeaturebase.h"
+#include    "tvtuistates.h"
+#include    <cvtlogger.h>
+#include    "cvtuicommandpolicymanager.h"
+#include    "cvtuisoftkeys.h"
+#include    "cvtuinumberentry.h"
+#include    "cvtuivideoquality.h"
+#include    "cvtuiwhitebalance.h"
+#include    "cvtuicolortone.h"
+#include    "cvtuidialer.h"
+#include    "cvtuibrightness.h"
+#include    "cvtuicontrast.h"
+#include    "cvtuivolume.h"
+#include    "cvtuizoom.h"
+
+#include    <featmgr.h>
+
+// CONSTANTS
+const TInt KFeatureCount = 9;
+
+// ======== LOCAL FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Used in Attach() method to compare two instances of MVtUiFeature.
+// ---------------------------------------------------------------------------
+//
+TInt FeatureCmpFunc( const CVtUiFeatureBase& aV1, const CVtUiFeatureBase& aV2 )
+    {
+    return ( aV1.Id() - aV2.Id() );
+    }
+
+// ---------------------------------------------------------------------------
+// Used in GetFeature() method to search feature by id.
+// ---------------------------------------------------------------------------
+//
+TInt FeatureIdCmpFunc( const TInt* aId, const CVtUiFeatureBase& aFeature )
+    {
+    return ( *aId - aFeature.Id() );
+    }
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CVtUiFeatureManager::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CVtUiFeatureManager* CVtUiFeatureManager::NewL( CVtUiAppUi& aAppUi,
+    TVtUiStates& aUiStates,  MVtUiCommandManager& aCommandManager,
+    MVtUiComponentManager& aComponentManager )
+    {
+    CVtUiFeatureManager* self = new( ELeave ) CVtUiFeatureManager( aAppUi,
+    aUiStates, aCommandManager, aComponentManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFeatureManager::CVtUiFeatureManager
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CVtUiFeatureManager::CVtUiFeatureManager( CVtUiAppUi& aAppUi,
+    TVtUiStates& aUiStates,  MVtUiCommandManager& aCommandManager,
+    MVtUiComponentManager& aComponentManager )
+    : iAppUi( aAppUi ), iUiStates( aUiStates ),
+    iCommandManager( aCommandManager ), iComponentManager( aComponentManager )
+    {
+     __VTPRINTENTER( "CVtUiFeatureManager.CVtUiFeatureManager" )
+     __VTPRINTEXIT( "CVtUiFeatureManager.CVtUiFeatureManager" )
+    }
+
+
+// -----------------------------------------------------------------------------
+//CVtUiFeatureManager::~CVtUiFeatureManager()
+// -----------------------------------------------------------------------------
+//
+CVtUiFeatureManager::~CVtUiFeatureManager()
+    {
+    __VTPRINTENTER( "CVtUiFeatureManager.~" )
+    iFeatures.ResetAndDestroy();
+    __VTPRINTEXIT( "CVtUiFeatureManager.~" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFeatureManager::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CVtUiFeatureManager::ConstructL()
+    {
+    __VTPRINTENTER( "CVtUiFeatureManager.ConstructL" )
+    iFeatures.ReserveL( KFeatureCount );
+    CreateFeaturesL();
+     __VTPRINTEXIT( "CVtUiFeatureManager.ConstructL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFeatureManager::CreateFeaturesL
+// -----------------------------------------------------------------------------
+//
+void CVtUiFeatureManager::CreateFeaturesL()
+    {
+    __VTPRINTENTER( "CVtUiFeatureManager.CreateFeaturesL" )
+    CVtUiFeatureBase* feature = NULL;
+    TLinearOrder< CVtUiFeatureBase >
+        linOrder( ::FeatureCmpFunc );
+
+    if ( AknLayoutUtils::PenEnabled() )
+        {
+        feature = CVtUiFixedToolbar::NewL( *this );
+        } 
+    else
+        {
+        feature = CVtUiFloatingToolbar::NewL( *this );            
+        }
+    
+    if ( feature )
+        {
+        iFeatures.InsertInOrderL( feature, linOrder );
+        }
+
+    feature = CVtUiMenus::NewL( *this );
+    iFeatures.InsertInOrderL( feature, linOrder );
+
+    feature = CVtUiSoftkeys::NewL( *this, *iAppUi.GetCba() );
+    iFeatures.InsertInOrderL( feature, linOrder );
+
+    feature = CVtUiNumberEntry::NewL( *this );
+    iFeatures.InsertInOrderL( feature, linOrder );
+
+    if ( FeatureManager::FeatureSupported( KFeatureIdOnScreenDialer ) )
+        {
+        feature = CVtUiDialer::NewL( *this );
+        if ( feature )
+            {
+            iFeatures.InsertInOrderL( feature, linOrder );
+            }
+        }
+
+    feature = CVtUiVideoQuality::NewL( *this );
+    if ( feature )
+        {
+        iFeatures.InsertInOrderL( feature, linOrder );
+        }
+
+    feature = CVtUiWhiteBalance::NewL( *this );
+    if ( feature )
+        {
+        iFeatures.InsertInOrderL( feature, linOrder );
+        }
+
+    feature = CVtUiColorTone::NewL( *this );
+    if ( feature )
+        {
+        iFeatures.InsertInOrderL( feature, linOrder );
+        }
+
+    feature = CVtUiBrightness::NewL( *this );
+    if ( feature )
+        {
+        iFeatures.InsertInOrderL( feature, linOrder );
+        }
+
+    feature = CVtUiContrast::NewL( *this );
+    if ( feature )
+        {
+        iFeatures.InsertInOrderL( feature, linOrder );
+        }
+
+    feature = CVtUiVolume::NewL( *this );
+    if ( feature )
+        {
+        iFeatures.InsertInOrderL( feature, linOrder );
+        }
+
+    feature = CVtUiZoom::NewL( *this );
+    if ( feature )
+        {
+        iFeatures.InsertInOrderL( feature, linOrder );
+        }
+
+    __VTPRINTEXIT( "CVtUiFeatureManager.CreateFeaturesL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFeatureManager::AppUi
+// -----------------------------------------------------------------------------
+//
+CVtUiAppUi& CVtUiFeatureManager::AppUi()
+    {
+    __VTPRINTENTER( "CVtUiFeatureManager.AppUi" )
+    __VTPRINTEXIT( "CVtUiFeatureManager.AppUi" )
+    return iAppUi;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFeatureManager::GetFeatureById
+// -----------------------------------------------------------------------------
+//
+MVtUiFeature* CVtUiFeatureManager::GetFeatureById( TInt aId )
+    {
+    __VTPRINTENTER( "CVtUiFeatureManager.GetFeatureById" )
+    CVtUiFeatureBase* result = NULL;
+
+    TInt index( iFeatures.FindInOrder( aId, ::FeatureIdCmpFunc ) );
+    if ( index != KErrNotFound )
+        {
+        result = iFeatures[ index ];
+        }
+    __VTPRINTEXITR( "CVtUiFeatureManager.GetFeatureById %d", (TInt)result )
+    return result;
+
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFeatureManager::UiStates
+// -----------------------------------------------------------------------------
+//
+
+TVtUiStates& CVtUiFeatureManager::UiStates()
+    {
+    return iUiStates;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFeatureManager::CommandManager
+// -----------------------------------------------------------------------------
+//
+MVtUiCommandManager& CVtUiFeatureManager::CommandManager()
+    {
+    return iCommandManager;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFeatureManager::ComponentManager
+// -----------------------------------------------------------------------------
+//
+MVtUiComponentManager& CVtUiFeatureManager::ComponentManager()
+    {
+    return iComponentManager;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFeatureManager::Model
+// -----------------------------------------------------------------------------
+//
+CVtEngModel& CVtUiFeatureManager::Model()
+    {
+    return iAppUi.Model();
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/dialer/cvtuicmdclosedialer.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,100 @@
+/*
+* 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:  Mini dialer open command implementation.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "cvtuicmdclosedialer.h"
+#include "mvtuicommandmanager.h"
+#include "mvtuifeature.h"
+#include "videotelui.hrh"
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdCloseDialer::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiCmdCloseDialer* CVtUiCmdCloseDialer::NewL(
+    MVtUiCommandManager& aCommandManager, MVtUiFeature& aFeature )
+    {
+    __VTPRINTENTER( "CmdCloseDial.NewL" )
+    CVtUiCmdCloseDialer* self =
+        new ( ELeave ) CVtUiCmdCloseDialer( aCommandManager, aFeature );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "CmdCloseDial.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdCloseDialer::~CVtUiCmdCloseDialer
+// ---------------------------------------------------------------------------
+//
+CVtUiCmdCloseDialer::~CVtUiCmdCloseDialer()
+    {
+    __VTPRINTENTER( "CmdCloseDial.~" )
+    iCommandManager.UnregisterCommand( *this );
+    __VTPRINTEXIT( "CmdCloseDial.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdCloseDialer::HandleL
+// ---------------------------------------------------------------------------
+//
+void CVtUiCmdCloseDialer::HandleL()
+    {
+    __VTPRINTENTER( "CmdCloseDial.HandleL" )
+    iFeature.Stop();
+    __VTPRINTEXIT( "CmdCloseDial.HandleL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdCloseDialer::IsEnabled
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiCmdCloseDialer::IsEnabled() const
+    {
+    __VTPRINTENTER( "CmdCloseDial.IsEnabled" )
+    const TBool enabled( iFeature.State() == MVtUiFeature::EActive );
+    __VTPRINTEXITR( "CmdCloseDial.IsEnabled %d", enabled )
+    return enabled;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdCloseDialer::CVtUiCmdCloseDialer
+// ---------------------------------------------------------------------------
+//
+CVtUiCmdCloseDialer::CVtUiCmdCloseDialer(
+    MVtUiCommandManager& aCommandManager, MVtUiFeature& aFeature )
+    : CVtUiFeatureCmdBase( aFeature, EVtUiDialerExit ),
+      iCommandManager( aCommandManager )
+    {
+    __VTPRINTENTER( "CmdCloseDial.ctor" )
+    __VTPRINTEXIT( "CmdCloseDial.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdCloseDialer::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiCmdCloseDialer::ConstructL()
+    {
+    __VTPRINTENTER( "CmdCloseDial.ConstructL" )
+    iCommandManager.RegisterCommandL( *this );
+    __VTPRINTEXIT( "CmdCloseDial.ConstructL" )
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/dialer/cvtuicmdopendialer.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,76 @@
+/*
+* 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:  Mini dialer open command implementation.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "cvtuicmdopendialer.h"
+#include "mvtuicommandmanager.h"
+#include "videotelui.hrh"
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdOpenDialer::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiCmdOpenDialer* CVtUiCmdOpenDialer::NewL(
+    MVtUiCommandManager& aCommandManager, MVtUiFeature& aFeature )
+    {
+    __VTPRINTENTER( "CmdOpenDial.NewL" )
+    CVtUiCmdOpenDialer* self =
+        new ( ELeave ) CVtUiCmdOpenDialer( aCommandManager, aFeature );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "CmdOpenDial.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdOpenDialer::~CVtUiCmdOpenDialer
+// ---------------------------------------------------------------------------
+//
+CVtUiCmdOpenDialer::~CVtUiCmdOpenDialer()
+    {
+    __VTPRINTENTER( "CmdOpenDial.~" )
+    iCommandManager.UnregisterCommand( *this );
+    __VTPRINTEXIT( "CmdOpenDial.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdOpenDialer::CVtUiCmdOpenDialer
+// ---------------------------------------------------------------------------
+//
+CVtUiCmdOpenDialer::CVtUiCmdOpenDialer(
+    MVtUiCommandManager& aCommandManager, MVtUiFeature& aFeature )
+    : CVtUiFeatureCmdBase( aFeature, EVtUiCmdSendDTMF ),
+      iCommandManager( aCommandManager )
+    {
+    __VTPRINTENTER( "CmdOpenDial.ctor" )
+    __VTPRINTEXIT( "CmdOpenDial.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiCmdOpenDialer::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiCmdOpenDialer::ConstructL()
+    {
+    __VTPRINTENTER( "CmdOpenDial.ConstructL" )
+    iCommandManager.RegisterCommandL( *this );
+    __VTPRINTEXIT( "CmdOpenDial.ConstructL" )
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/dialer/cvtuidialer.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,229 @@
+/*
+* 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:  Mini dialer feature
+*
+*/
+
+
+#include <AknUtils.h>
+#include <peninputcmdparam.h>
+#include <cvtlogger.h>
+#include <akntoolbar.h>
+
+#include "cvtuidialer.h"
+#include "cvtuifeaturemanager.h"
+#include "mvtuicommandmanager.h"
+#include "mvtuicomponentmanager.h"
+#include "cvtuicmdopendialer.h"
+#include "cvtuicmdclosedialer.h"
+#include "cvtuidialercontainer.h"
+#include "cvtuidialervideocontrol.h"
+#include "CVtUiAppUi.h"
+#include "tvtuistates.h"
+#include "CVtUiContextControl.h"
+#include "CVtUiEndCallButtonPane.h"
+#include "CVtUiMainControl.h"
+#include "CVtUiRemoteVideoControl.h"
+#include "VtUiLayout.h"
+
+// Index of white color.
+const TInt KVtDialerRVCPriLow = -1;
+
+// ======== LOCAL FUNCTIONS ========
+
+// Implementation of CVtUiDialer
+
+// ---------------------------------------------------------------------------
+// CVtUiDialer::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiDialer* CVtUiDialer::NewL( CVtUiFeatureManager& aFeatureManager )
+    {
+    __VTPRINTENTER( "Dial.NewL" )
+    CVtUiDialer* self = NULL;
+    self = new ( ELeave ) CVtUiDialer( aFeatureManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "Dial.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialer::~CVtUiDialer
+// ---------------------------------------------------------------------------
+//
+CVtUiDialer::~CVtUiDialer()
+    {
+    __VTPRINTENTER( "Dial.~" )
+    delete iCmdOpen;
+    delete iCmdClose;
+    delete iDialerContainer;
+    __VTPRINTEXIT( "Dial.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialer::VideoWindow
+// ---------------------------------------------------------------------------
+//
+MVtUiVideoWindow& CVtUiDialer::VideoWindow() const
+    {
+    __VTPRINTENTER( "Dial.VideoWindow" )
+    __VTPRINTEXIT( "Dial.VideoWindow" )
+    return *iDialerContainer->ComponentAsVideoWindow();
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialer::VideoControl
+// ---------------------------------------------------------------------------
+//
+CCoeControl& CVtUiDialer::VideoControl() const
+    {
+    __VTPRINTENTER( "Dial.VideoControl" )
+    __VTPRINTEXIT( "Dial.VideoControl" )
+    return *static_cast< MVtUiComponent* >
+        ( iDialerContainer )->ComponentAsControl();
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialer::StartL
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialer::StartL()
+    {
+    __VTPRINTENTER( "Dial.StartL" )
+    if ( State() == MVtUiFeature::EUnprepared )
+        {
+        // Lower remote video control window priority
+        TInt pos = 
+                iFeatureManager.AppUi().RemoteVideoControl().DrawableWindow()->OrdinalPosition();
+        iFeatureManager.AppUi().RemoteVideoControl().DrawableWindow()->
+                SetOrdinalPosition( pos, KVtDialerRVCPriLow );
+        // Make context control and end call button invisible
+        iFeatureManager.AppUi().ContextControl().MakeVisible( EFalse );
+        iFeatureManager.AppUi().EndCallButtonPane().MakeVisible( EFalse );
+        iFeatureManager.UiStates().SetIsDialerActivating( ETrue );
+        // fixed toolbar is set to be hidden
+        iFeatureManager.UiStates().SetIsFixedToolbarVisible( EFalse );
+        if ( !VtUiLayout::IsLandscapeOrientation() )
+            {
+            iFeatureManager.AppUi().CurrentFixedToolbar()->MakeVisible( EFalse );
+            }
+        iFeatureManager.CommandManager().RefreshL();
+        PrepareL();
+        iFeatureManager.ComponentManager().RequestActivationL(
+            MVtUiComponent::EComponentIdDialer );
+        iFeatureState = EActive;
+        iFeatureManager.AppUi().SwitchLayoutToFlatStatusPaneL( ETrue );
+        }
+    __VTPRINTEXIT( "Dial.StartL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialer::Stop
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialer::Stop()
+    {
+    __VTPRINTENTER( "Dial.Stop" )
+    if ( State() == MVtUiFeature::EActive )
+        {
+        // Lower remote video control window priority
+        TInt pos = 
+                iFeatureManager.AppUi().RemoteVideoControl().DrawableWindow()->OrdinalPosition();
+        iFeatureManager.AppUi().RemoteVideoControl().DrawableWindow()->
+                SetOrdinalPosition( pos, KVtDialerRVCPriLow );
+        
+        TInt error;
+        TRAP( error,
+            {
+            iFeatureManager.AppUi().SwitchLayoutToFlatStatusPaneL( EFalse );
+            iFeatureManager.ComponentManager().DeActivateComponentL(
+                MVtUiComponent::EComponentIdDialer );
+            } );
+        Unprepare();
+        iFeatureManager.AppUi().CurrentFixedToolbar()->MakeVisible( ETrue );
+        // Make these two control back to visible
+        iFeatureManager.AppUi().EndCallButtonPane().MakeVisible( ETrue );
+        iFeatureManager.AppUi().ContextControl().MakeVisible( ETrue );
+        // Force a skin change event to appui then redraw main control
+        // and end call button
+        iFeatureManager.AppUi().HandleResourceChangeL( KAknsMessageSkinChange );
+        iFeatureManager.AppUi().MainControl().DrawNow();
+        iFeatureManager.AppUi().EndCallButtonPane().DrawNow();
+        }
+    __VTPRINTEXIT( "Dial.Stop" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialer::InitFeatureL
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialer::InitFeatureL()
+    {
+    __VTPRINTENTER( "Dial.InitFeatureL" )
+    iDialerContainer =
+        CVtUiDialerContainer::NewL( iFeatureManager );
+    iCmdOpen = CVtUiCmdOpenDialer::NewL( iFeatureManager.CommandManager(),
+        *this );
+    iCmdClose = CVtUiCmdCloseDialer::NewL( iFeatureManager.CommandManager(),
+        *this );
+   __VTPRINTEXIT( "Dial.InitFeatureL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialer::CVtUiDialer
+// ---------------------------------------------------------------------------
+//
+CVtUiDialer::CVtUiDialer( CVtUiFeatureManager& aFeatureManager )
+    : CVtUiFeatureBase( EVtUiFeatureIdDialer, aFeatureManager )
+    {
+    __VTPRINTENTER( "Dial.ctor" )
+    __VTPRINTEXIT( "Dial.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialer::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialer::ConstructL()
+    {
+    __VTPRINTENTER( "Dial.ConstructL" )
+    BaseConstructL();
+    __VTPRINTEXIT( "Dial.ConstructL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialer::PrepareL
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialer::PrepareL()
+    {
+    __VTPRINTENTER( "Dial.PrepareL" )
+    iDialerContainer->RegisterComponentL();
+    iFeatureState = EReady;
+    __VTPRINTEXIT( "Dial.PrepareL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialer::Unprepare
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialer::Unprepare()
+    {
+    __VTPRINTENTER( "Dial.Unprepare" )
+    iDialerContainer->UnregisterComponent();
+    iFeatureState = EUnprepared;
+    __VTPRINTEXIT( "Dial.Unprepare" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/dialer/cvtuidialercontainer.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,535 @@
+/*
+* 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:  Dialer feature
+*
+*/
+
+
+#include    <cvtlogger.h>
+#include    <cvideodtmfdialer.h>
+#include    <AknsDrawUtils.h>
+#include    <AknsUtils.h>
+#include    <aknlayoutscalable_apps.cdl.h>
+#include    <aknlayoutscalable_avkon.cdl.h>
+#include    <layoutmetadata.cdl.h>
+#include    <featmgr.h>
+#include    <AknsBasicBackgroundControlContext.h>
+#include    <akntoolbar.h>
+
+#include    "VtUiUtility.h"
+#include    "VtUiLayout.h"
+#include    "mvtuicomponentmanager.h"
+#include    "cvtuidialercontainer.h"
+#include    "cvtuidialervideocontrol.h"
+#include    "tvtuiwsevent.h"
+#include    "tvtuistates.h"
+#include    "cvtuidialerskmodifier.h"
+#include    "cvtuifeaturemanager.h"
+#include    "CVtUiAppUi.h"
+#include    "mvtuicommandmanager.h"
+#include    "cvtuidtmfbuffer.h"
+#include    "CVtUiMainControl.h"
+#include    "CVtUiContextControl.h"
+#include    "CVtUiRemoteVideoControl.h"
+#include    "CVtUiEndCallButtonPane.h"
+// Index of white color.
+const TInt KVtUiColorWhite = 0;
+
+const TInt KVtUiActOrdinalPos = 2;
+const TInt KVtUiDeactOrdinalPos = 4;
+
+// Implementation of TVtUiMiniDialerComponentState
+
+// ---------------------------------------------------------------------------
+// TVtUiDialerComponentState::TVtUiDialerComponentState
+// ---------------------------------------------------------------------------
+//
+TVtUiDialerComponentState::TVtUiDialerComponentState(
+    MVtUiComponent& aComponent ) :
+    TVtUiComponentState( aComponent,
+        TVtUiBlockListBitField(
+            MVtUiComponent::EComponentIdToolbar |
+            MVtUiComponent::EComponentIdNumberEntry ) )
+    {
+    }
+
+// Implementation of CVtUiDialerContainer
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiDialerContainer* CVtUiDialerContainer::NewL(
+    CVtUiFeatureManager& aFeatureManager )
+    {
+    __VTPRINTENTER( "DialContainer.NewL" )
+    CVtUiDialerContainer* self =
+        new ( ELeave ) CVtUiDialerContainer( aFeatureManager );
+    CleanupStack::PushL( self );
+    self->ConstructL( aFeatureManager.AppUi().BitmapManager() );
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "DialContainer.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::~CVtUiDialerContainer
+// ---------------------------------------------------------------------------
+//
+CVtUiDialerContainer::~CVtUiDialerContainer()
+    {
+    __VTPRINTENTER( "DialContainer.~" )
+    delete iAsyncDeactivate;
+    delete iVideoControl;
+    delete iDialer;
+    delete iSKModifier;
+    delete iInputBuffer;
+    delete iBgContext;
+    AknsUtils::DeregisterControlPosition( this );
+    __VTPRINTEXIT( "DialContainer.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::HandleResourceChangeL
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialerContainer::HandleResourceChangeL( TInt aType )
+    {
+    __VTPRINTENTER( "DialContainer.HandleResourceChangeL" )
+    switch ( aType )
+        {
+    case KEikDynamicLayoutVariantSwitch:
+    case KAknsMessageSkinChange:
+        LayoutDialerContainer();
+        break;
+    default:
+        break;
+        }
+
+    CCoeControl::HandleResourceChange( aType );
+    
+    __VTPRINTEXIT( "DialContainer.HandleResourceChangeL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::ComponentId
+// ---------------------------------------------------------------------------
+//
+MVtUiComponent::TComponentId CVtUiDialerContainer::ComponentId() const
+    {
+    return EComponentIdDialer;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::ComponentAsControl
+// ---------------------------------------------------------------------------
+//
+CCoeControl* CVtUiDialerContainer::ComponentAsControl()
+    {
+    return iVideoControl;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::DoActivateL
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialerContainer::DoActivateL()
+    {
+    __VTPRINTENTER( "DialContainer.DoActivateL" )
+    iUiStates.SetIsDialerActivating( EFalse );
+    LayoutDialerContainer();
+    Reset();
+    
+    // Sort control windows' ordinal pos
+    TInt ordinalPos = KVtUiActOrdinalPos;
+    CVtUiAppUi& appUi = iFeatureManager->AppUi();
+    appUi.MainControl().DrawableWindow()->SetOrdinalPosition(
+            ordinalPos--, 
+            appUi.MainControl().DrawableWindow()->OrdinalPriority() );
+    
+    appUi.CurrentFixedToolbar()->DrawableWindow()->SetOrdinalPosition(
+            ordinalPos--, 
+            appUi.CurrentFixedToolbar()->DrawableWindow()->OrdinalPriority() );
+    
+    iDialer->DrawableWindow()->SetOrdinalPosition(
+            ordinalPos--, iDialer->DrawableWindow()->OrdinalPriority() );
+    
+    iVideoControl->MakeVisible( ETrue );
+    iDialer->MakeVisible( ETrue );
+    MakeVisible( ETrue );
+    // Force a resource change and draw for the dialer
+    HandleResourceChange( KAknsMessageSkinChange );
+    DrawNow();
+    User::LeaveIfError( iFeatureManager->
+        CommandManager().AddCommandModifier( *iSKModifier ) );
+    iInputBuffer->Activate();
+    iMode = CVtUiAppUi::ERenderingModeDialer;
+    TVtUiWsEvent< CVtUiAppUi::TRenderingMode > renderingEvent(
+        EVtUiWsEventBeginRenderingMode, &iMode );
+    iCoeEnv->WsSession().SendEventToWindowGroup(
+        Window().WindowGroupId(), renderingEvent );
+    iUiStates.SetIsDialerOpen( ETrue );
+    iAsyncDeactivate->Cancel();
+    __VTPRINTEXIT( "DialContainer.DoActivateL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::DoDeactivateL
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialerContainer::DoDeactivateL()
+    {
+    __VTPRINTENTER( "DialContainer.DoDeactivateL" )
+    iFeatureManager->CommandManager().
+        RemoveCommandModifier( *iSKModifier );
+    iUiStates.SetIsDialerOpen( EFalse );
+
+    // Sort control windows' ordinal pos
+    TInt ordinalPos = KVtUiDeactOrdinalPos;
+    CVtUiAppUi& appUi = iFeatureManager->AppUi();
+    appUi.MainControl().DrawableWindow()->SetOrdinalPosition( 
+            ordinalPos--, 
+            appUi.MainControl().DrawableWindow()->OrdinalPriority() );
+    
+    appUi.CurrentFixedToolbar()->DrawableWindow()->SetOrdinalPosition(
+            ordinalPos--, 
+            appUi.CurrentFixedToolbar()->DrawableWindow()->OrdinalPriority() );
+      
+    appUi.EndCallButtonPane().DrawableWindow()->SetOrdinalPosition( 
+            ordinalPos--, 
+            appUi.EndCallButtonPane().DrawableWindow()->OrdinalPriority() );
+    
+    appUi.ContextControl().DrawableWindow()->SetOrdinalPosition( 
+            ordinalPos--, 
+            appUi.ContextControl().DrawableWindow()->OrdinalPriority() );
+    
+    appUi.RemoteVideoControl().DrawableWindow()->SetOrdinalPosition(
+            ordinalPos--, 
+            appUi.RemoteVideoControl().DrawableWindow()->OrdinalPriority() );
+    
+    iVideoControl->MakeVisible( EFalse );
+    iDialer->MakeVisible( EFalse );
+    MakeVisible( EFalse );
+    Reset();
+    iInputBuffer->Deactivate();
+    iAsyncDeactivate->CallBack();
+    __VTPRINTEXIT( "DialContainer.DoDeactivateL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::GetContents
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialerContainer::GetContents( TDes& aContents ) const
+    {
+    __VTPRINTENTER( "DialContainer.GetContents" )
+    iInputBuffer->GetContents( aContents );
+    __VTPRINTEXIT( "DialContainer.GetContents" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::OfferKeyEventL
+// ---------------------------------------------------------------------------
+//
+TKeyResponse CVtUiDialerContainer::OfferKeyEventL( const TKeyEvent& aEvent,
+    TEventCode aType )
+    {
+    __VTPRINTENTER( "DialContainer.OfferKeyEventL" )
+    TKeyResponse response( EKeyWasNotConsumed );
+    TChar dtmfTone;
+    if ( VtUiUtility::IsDTMFEvent( aEvent, dtmfTone ) &&
+         ( aType == EEventKey ) )
+        {
+        response = EKeyWasConsumed;
+        AppendDigit( dtmfTone );
+        }
+    __VTPRINTEXIT( "DialContainer.OfferKeyEventL" )
+    return response;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::Draw
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialerContainer::Draw( const TRect& ) const
+    {
+    __VTPRINTENTER( "DialContainer.Draw" )
+    CWindowGc& gc( SystemGc() );
+    gc.SetBrushStyle( CWindowGc::ESolidBrush );
+    gc.SetPenStyle( CGraphicsContext::ENullPen );
+    gc.SetBrushColor( AKN_LAF_COLOR( KVtUiColorWhite ) );
+    gc.Clear();
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
+    AknsDrawUtils::Background( skin, cc, this, gc, Rect() );
+    __VTPRINTEXIT( "DialContainer.Draw" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::SizeChanged
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialerContainer::SizeChanged()
+    {
+    __VTPRINTENTER( "DialContainer.SizeChanged" )
+    TRect bgRect;
+    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, bgRect );
+    iBgContext->SetRect( bgRect );
+
+    AknsUtils::RegisterControlPosition( this );
+    CCoeControl::SizeChanged();
+    __VTPRINTEXIT( "DialContainer.SizeChanged" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::PositionChanged
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialerContainer::PositionChanged()
+    {
+    __VTPRINTENTER( "DialContainer.PositionChanged" )
+    AknsUtils::RegisterControlPosition( this );
+    CCoeControl::PositionChanged();
+    __VTPRINTEXIT( "DialContainer.PositionChanged" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::CountComponentControls
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiDialerContainer::CountComponentControls() const
+    {
+    return iDialer ? 1 : 0;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::ComponentControl
+// ---------------------------------------------------------------------------
+//
+CCoeControl* CVtUiDialerContainer::ComponentControl( TInt aIndex ) const
+    {
+    CCoeControl* result = NULL;
+    switch ( aIndex )
+        {
+    case 0:
+        result = iDialer;
+        break;
+    default:
+        break;
+        }
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::CVtUiDialerContainer
+// ---------------------------------------------------------------------------
+//
+CVtUiDialerContainer::CVtUiDialerContainer(
+    CVtUiFeatureManager& aFeatureManager ) :
+    iComponentState( *this ),
+    iFeatureManager( &aFeatureManager ),
+    iComponentManager( &aFeatureManager.ComponentManager() ),
+    iUiStates( aFeatureManager.UiStates() )
+    {
+    __VTPRINTENTER( "DialContainer.ctor" )
+    __VTPRINTEXIT( "DialContainer.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialerContainer::ConstructL( CVtUiBitmapManager& aBitmapManager )
+    {
+    __VTPRINTENTER( "DialContainer.ConstructL" )
+    iBgContext = CAknsBasicBackgroundControlContext::NewL(
+                      KAknsIIDQsnBgScreen, Rect(), ETrue );
+    CreateWindowL();
+    DrawableWindow()->SetPointerGrab( ETrue );
+    SetExtent( TPoint(), TSize() );
+    ActivateL();
+    MakeVisible( EFalse );
+    iInputBuffer = CVtUiDTMFBuffer::NewL( *iCoeEnv );
+    iVideoControl = CVtUiDialerVideoControl::NewL( aBitmapManager );
+    iDialer = CVideoDTMFDialer::NewL( *this, *iVideoControl, DialerRect() );
+    
+    iSKModifier = CVtUiDialerSKModifier::NewL( *iFeatureManager );
+    // Disable fading when using DP (eliminates nasty color error)
+    if ( FeatureManager::FeatureSupported( KFeatureIdDisplayPost ) )
+        {
+        Window().SetNonFading( ETrue );
+        }
+    iAsyncDeactivate = new ( ELeave ) CAsyncCallBack(
+        TCallBack( ASyncDoDeactivate, this ), CActive::EPriorityLow );
+    __VTPRINTEXIT( "DialContainer.ConstructL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::RegisterComponentL
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialerContainer::RegisterComponentL()
+    {
+    __VTPRINTENTER( "DialContainer.RegisterComponentL" )
+    User::LeaveIfError( iComponentManager->ChangeResourceChangeRegistration(
+        *this, MVtUiComponentManager::ERegister ) );
+    User::LeaveIfError(
+        iComponentManager->ChangeComponentRegistration(
+        iComponentState, MVtUiComponentManager::ERegister ) );
+    User::LeaveIfError( iComponentManager->ChangeKeyEventRegistration(
+        *this, MVtUiComponentManager::ERegister ) );
+    __VTPRINTEXIT( "DialContainer.RegisterComponentL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::UnregisterComponent
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialerContainer::UnregisterComponent()
+    {
+    __VTPRINTENTER( "DialContainer.UnregisterComponent" )
+    iComponentManager->ChangeComponentRegistration(
+        iComponentState, MVtUiComponentManager::EUnregister );
+    iComponentManager->ChangeResourceChangeRegistration(
+        *this, MVtUiComponentManager::EUnregister );
+    iComponentManager->ChangeKeyEventRegistration(
+        *this, MVtUiComponentManager::EUnregister );
+    __VTPRINTEXIT( "DialContainer.UnregisterComponent" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::UnregisterComponent
+// ---------------------------------------------------------------------------
+//
+MVtUiVideoWindow* CVtUiDialerContainer::ComponentAsVideoWindow()
+    {
+    __VTPRINTENTER( "DialContainer.ComponentAsVideoWindow" )
+    __VTPRINTEXIT( "DialContainer.ComponentAsVideoWindow" )
+    return iVideoControl;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::LayoutDialerContainer
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialerContainer::LayoutDialerContainer()
+    {
+    __VTPRINTENTER( "DialContainer.LayoutDialerContainer" )
+
+    TAknWindowLineLayout mainPaneLL;
+
+    if ( Layout_Meta_Data::IsLandscapeOrientation() )
+        {
+        // Landscape: Option11 (thin status pane, lsc)
+        mainPaneLL = AknLayoutScalable_Apps::main_pane( 15 ).LayoutLine();
+        }
+    else
+        {
+        // Portrait: main pane with status pane off, control pane on
+        mainPaneLL = AknLayoutScalable_Apps::main_pane( 9 ).LayoutLine();
+        }
+
+    TRect appWinRect;
+    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EApplicationWindow,
+        appWinRect );
+
+    // Layout container
+    AknLayoutUtils::LayoutControl( this, appWinRect, mainPaneLL );
+
+    // Layout dialer
+    const TInt variety( Layout_Meta_Data::IsLandscapeOrientation() ?
+        1 : 0 );
+    TAknWindowLineLayout dialerLLout(
+        AknLayoutScalable_Apps::main_video_tele_dialer_pane(
+            variety ).LayoutLine() );
+    AknLayoutUtils::LayoutControl( iDialer, Rect(), dialerLLout );
+
+    // Layout video control
+    AknLayoutUtils::LayoutControl( iVideoControl, iDialer->Rect(),
+         AknLayoutScalable_Apps::video_down_pane_cp(
+            variety ).LayoutLine() );
+
+    __VTPRINTEXIT( "DialContainer.LayoutDialerContainer" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::DialerRect
+// ---------------------------------------------------------------------------
+//
+TRect CVtUiDialerContainer::DialerRect() const
+    {
+    __VTPRINTENTER( "DialContainer.DialerRect" )
+    TRect mainPaneRect;
+    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,
+        mainPaneRect );
+    __VTPRINTEXIT( "DialContainer.DialerRect" )
+    return mainPaneRect;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::Reset
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialerContainer::Reset()
+    {
+    __VTPRINTENTER( "DialContainer.Reset" )
+    iInputBuffer->Reset();
+    __VTPRINTEXIT( "DialContainer.Reset" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::AppendDigit
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialerContainer::AppendDigit( TChar aDigit )
+    {
+    __VTPRINTENTER( "DialContainer.AppendDigit" )
+    iInputBuffer->Append( aDigit );
+    __VTPRINTEXIT( "DialContainer.AppendDigit" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::MopSupplyObject
+// ---------------------------------------------------------------------------
+//
+TTypeUid::Ptr CVtUiDialerContainer::MopSupplyObject( TTypeUid aId )
+ {
+     __VTPRINTENTER( "CVtUiDialerContainer.MopSupplyObject" )
+ // Required during rendering of the background skin in Draw()
+ if (aId.iUid == MAknsControlContext::ETypeId)
+     {
+      __VTPRINTEXIT( "CVtUiDialerContainer.MopSupplyObject.1" )
+     return MAknsControlContext::SupplyMopObject( aId, iBgContext );
+     }
+    __VTPRINTEXIT( "CVtUiDialerContainer.MopSupplyObject.2" )
+ return CCoeControl::MopSupplyObject( aId );
+ }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerContainer::ASyncDoDeactivate
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiDialerContainer::ASyncDoDeactivate( TAny* aSelf )
+    {
+    __VTPRINTENTER( "DialContainer.ASyncDoDeactivate" )
+    CVtUiDialerContainer* self =
+        reinterpret_cast< CVtUiDialerContainer* >( aSelf );
+    self->iMode = CVtUiAppUi::ERenderingModeDialer;
+    TVtUiWsEvent< CVtUiAppUi::TRenderingMode > renderingEvent(
+        EVtUiWsEventEndRenderingMode, &self->iMode );
+    self->iCoeEnv->WsSession().SendEventToWindowGroup(
+        self->Window().WindowGroupId(), renderingEvent );
+    __VTPRINTEXIT( "DialContainer.ASyncDoDeactivate" )
+    return KErrNone;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/dialer/cvtuidialerskmodifier.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,96 @@
+/*
+* 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:  Softkey modifier class.
+*
+*/
+
+
+#include    <cvtlogger.h>
+#include    "cvtuidialerskmodifier.h"
+#include    "mvtuicommandsetting.h"
+#include    "tvtuicommandmodifierpriority.h"
+#include    "cvtuifeaturemanager.h"
+#include    "tvtuistates.h"
+#include    "tvtuifeatureids.h"
+#include    "CVtUiAppUi.h"
+#include    <eikbtgpc.h>
+#include    <videotelui.rsg>
+
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerSKModifier::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiDialerSKModifier* CVtUiDialerSKModifier::NewL(
+    CVtUiFeatureManager& aFeatureMgr )
+    {
+    __VTPRINTENTER( "CVtUiDialerSKModifier.NewL" )
+    CVtUiDialerSKModifier* self =
+        new ( ELeave ) CVtUiDialerSKModifier( aFeatureMgr );
+    __VTPRINTEXIT( "CVtUiDialerSKModifier.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerSKModifier::~CVtUiDialerSKModifier
+// ---------------------------------------------------------------------------
+//
+CVtUiDialerSKModifier::~CVtUiDialerSKModifier()
+    {
+    __VTPRINTENTER( "CVtUiDialerSKModifier.~" )
+    __VTPRINTEXIT( "CVtUiDialerSKModifier.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerSKModifier::CVtUiDialerSKModifier
+// ---------------------------------------------------------------------------
+//
+CVtUiDialerSKModifier::CVtUiDialerSKModifier(
+    CVtUiFeatureManager& aFeatureMgr )
+    : CVtUiCommandModifyBase( EVtUiCmdModifierPriorityNumberEntry ),
+    iFeatureMgr( aFeatureMgr )
+    {
+    __VTPRINTENTER( "CVtUiDialerSKModifier.Ctr" )
+    __VTPRINTEXIT( "CVtUiDialerSKModifier.Ctr" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerSKModifier::ModifyCommandsL
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialerSKModifier::ModifyCommandsL( MVtUiCommandSetting& )
+    {
+    __VTPRINTENTER( "CVtUiDialerSKModifier.ModifyCommandsL" )
+    CEikButtonGroupContainer* cba = iFeatureMgr.AppUi().GetCba();
+    cba->SetCommandSetL( R_VIDEOTELUI_SOFTKEYS_EMPTY_DIALEREXIT );
+    __VTPRINTEXIT( "CVtUiDialerSKModifier.ModifyCommandsL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerSKModifier::Supports
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiDialerSKModifier::Supports(
+    MVtUiCommandSetting::Type aType ) const
+    {
+    __VTPRINTENTER( "CVtUiDialerSKModifier.Supports" )
+    __VTPRINTEXIT( "CVtUiDialerSKModifier.Supports" )
+    return ( aType == MVtUiCommandSetting::ECommandTypeSoftkeys );
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/dialer/cvtuidialervideocontrol.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,153 @@
+/*
+* 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:  Mini dialer feature
+*
+*/
+
+
+#include    <cvtlogger.h>
+#include    <aknlayoutscalable_apps.cdl.h>
+#include    <aknlayoutscalable_avkon.cdl.h>
+#include    <layoutmetadata.cdl.h>
+
+#include "cvtuidialervideocontrol.h"
+
+// Portrait variety constant
+const static TInt KVarietyPortrait = 0;
+
+// Landscape variety constant
+const static TInt KVarietyLandscape = 1;
+
+// Implementation of CVtUiDialerVideoControl
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerVideoControl::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiDialerVideoControl* CVtUiDialerVideoControl::NewL(
+    CVtUiBitmapManager& aBitmapManager )
+    {
+    __VTPRINTENTER( "DialCtrl.NewL" )
+    CVtUiDialerVideoControl* self =
+        new ( ELeave ) CVtUiDialerVideoControl( aBitmapManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "DialCtrl.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerVideoControl::~CVtUiDialerVideoControl
+// ---------------------------------------------------------------------------
+//
+CVtUiDialerVideoControl::~CVtUiDialerVideoControl()
+    {
+    __VTPRINTENTER( "DialCtrl.~" )
+    __VTPRINTEXIT( "DialCtrl.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerVideoControl::CVtUiDialerVideoControl
+// ---------------------------------------------------------------------------
+//
+CVtUiDialerVideoControl::CVtUiDialerVideoControl(
+    CVtUiBitmapManager& aBitmapManager ) :
+    CVtUiVideoControlBase( aBitmapManager )
+    {
+    __VTPRINTENTER( "DialCtrl.ctor" )
+    // Disable blind icon drawing
+    SetRenderingHint( ENoBlindIcon );
+    __VTPRINTEXIT( "DialCtrl.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiDialerVideoControl::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiDialerVideoControl::ConstructL()
+    {
+    __VTPRINTENTER( "DialCtrl.ConstructL" )
+    BaseConstructL();
+    __VTPRINTEXIT( "DialCtrl.ConstructL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiDialerVideoControl::WaitingTextLayout
+// -----------------------------------------------------------------------------
+//
+TAknTextLineLayout CVtUiDialerVideoControl::WaitingTextLayout( TInt aLine )
+    {
+    __VTPRINTENTER( "DialCtrl.WaitingTextLayout" )
+
+    TInt variety( Layout_Meta_Data::IsLandscapeOrientation() ?
+        KVarietyLandscape : KVarietyPortrait );
+
+    TAknWindowComponentLayout l2(
+        AknLayoutScalable_Apps::main_video_tele_dialer_pane( variety ) );
+
+    TAknTextComponentLayout l3;
+
+#if 0
+    if ( variety == KVarietyPortrait )
+        {
+        if ( !aLine )
+            {
+            l3 = AknLayoutScalable_Apps::main_video_tele_dialer_pane_t1( 0 );
+            }
+        else
+            {
+            l3 = AknLayoutScalable_Apps::main_video_tele_dialer_pane_t2( 0 );
+            }
+        }
+    else
+        {
+        if ( !aLine )
+            {
+            l3 = AknLayoutScalable_Apps::call_video_pane_t1();
+            }
+        else
+            {
+            l3 = AknLayoutScalable_Apps::call_video_pane_t2();
+            }
+        }
+#endif
+
+    if ( !aLine )
+        {
+        l3 = AknLayoutScalable_Apps::main_video_tele_dialer_pane_t1( 0 );
+        }
+    else
+        {
+        l3 = AknLayoutScalable_Apps::main_video_tele_dialer_pane_t2( 0 );
+        }
+    
+    __VTPRINTEXIT( "DialCtrl.WaitingTextLayout" )
+    return TAknWindowComponentLayout::ComposeText( l2, l3 ).LayoutLine();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiMainControl::LayoutRemoteVideo
+// -----------------------------------------------------------------------------
+//
+void CVtUiDialerVideoControl::LayoutRemoteVideo( )
+    {    
+    __VTPRINTENTER( "DialCtrl.LayoutRemoteVideo" )
+    if ( NULL != iRemoteVideoControl && iRemoteVideoControl->IsVisible() )
+        {
+        TRect rectRemoteVideo(StreamClippingRect());
+        iRemoteVideoControl->SetExtent( PositionRelativeToScreen(),rectRemoteVideo.Size() );
+        }
+    __VTPRINTEXIT( "DialCtrl.LayoutRemoteVideo" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/menu/cvtuimenucontext.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,85 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Menu context class.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "cvtuimenucontext.h"
+
+/** Menu context reference priority */
+const TInt KVtUiMenuContextPriority = 100;
+
+// ---------------------------------------------------------------------------
+// CVtUiMenuContext::~CVtUiMenuContext
+// ---------------------------------------------------------------------------
+//
+CVtUiMenuContext::~CVtUiMenuContext()
+    {
+    __VTPRINTENTER( "MenuCtx.~" )
+    UnregisterCommandContext();
+    __VTPRINTEXIT( "MenuCtx.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiMenuContext::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiMenuContext* CVtUiMenuContext::NewL(
+    MVtUiCommandManager& aCommandManager )
+    {
+    __VTPRINTENTER( "MenuCtx.NewL" )
+    CVtUiMenuContext* self = new ( ELeave ) CVtUiMenuContext( aCommandManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "MenuCtx.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiMenuContext::ValidateL
+// ---------------------------------------------------------------------------
+//
+void CVtUiMenuContext::ValidateL( CVtUiCmdValidationActionBase& aAction )
+    {
+    __VTPRINTENTER( "MenuCtx.ValidateL" )
+    ValidateMenuItemsL( aAction );
+    __VTPRINTEXIT( "MenuCtx.ValidateL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiMenuContext::CVtUiMenuContext
+// ---------------------------------------------------------------------------
+//
+CVtUiMenuContext::CVtUiMenuContext( MVtUiCommandManager& aCommandManager )
+    : CVtUiCmdContext( aCommandManager, EVtUiCmdContextTypeMenu,
+      KVtUiMenuContextPriority )
+    {
+    __VTPRINTENTER( "MenuCtx.ctor" )
+    __VTPRINTEXIT( "MenuCtx.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiMenuContext::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiMenuContext::ConstructL()
+    {
+    __VTPRINTENTER( "MenuCtx.ConstructL" )
+    RegisterCommandContextL();
+    __VTPRINTEXIT( "MenuCtx.ConstructL" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/menu/cvtuimenuitemdimmeraction.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,110 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Menu item dimmer action class.
+*
+*/
+
+
+#include <cvtlogger.h>
+#include <eikmenup.h>
+
+#include "cvtuimenuitemdimmeraction.h"
+#include "tvtuicmdvalidatorcallback.h"
+#include "tvtuimenucommanditerator.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiMenuItemDimmerAction::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiMenuItemDimmerAction* CVtUiMenuItemDimmerAction::NewL()
+    {
+    __VTPRINTENTER( "MenuDimAct.NewL" )
+    CVtUiMenuItemDimmerAction* self =
+        new ( ELeave ) CVtUiMenuItemDimmerAction();
+    __VTPRINTEXIT( "MenuDimAct.NewL" )
+    return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CVtUiMenuItemDimmerAction::SetMenuPane
+// ---------------------------------------------------------------------------
+//
+void CVtUiMenuItemDimmerAction::SetMenuPane( CEikMenuPane* aMenuPane )
+    {
+    __VTPRINTENTER( "MenuDimAct.SetMenuPane" )
+    iMenuPane = aMenuPane;
+    __VTPRINTEXIT( "MenuDimAct.SetMenuPane" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiMenuItemDimmerAction::ProcessL
+// ---------------------------------------------------------------------------
+//
+void CVtUiMenuItemDimmerAction::ProcessL(
+    const MVtUiCmdValidatorCallBack& aCallBack )
+    {
+    __VTPRINTENTER( "MenuDimAct.ProcessL" )
+
+    if ( iMenuPane )
+        {
+        for ( TVtUiMenuCommandIterator i( *iMenuPane ); i.HasNext(); )
+            {
+            TInt commandId( i.Next() );
+        	if ( !IsCommandHandled( commandId ) )
+        	    {
+                if ( aCallBack.Call( commandId ) )
+                    {
+            	    CommandHandledL( commandId );
+            	    SetItemDimmed( commandId );
+                    }
+        	    }
+            }
+        }
+    __VTPRINTEXIT( "MenuDimAct.ProcessL" )
+	}
+
+// ---------------------------------------------------------------------------
+// CVtUiMenuItemDimmerAction::EndProcess
+// ---------------------------------------------------------------------------
+//
+void CVtUiMenuItemDimmerAction::EndProcess()
+    {
+    __VTPRINTENTER( "MenuDimAct.EndProcess" )
+    iMenuPane = NULL;
+    __VTPRINTEXIT( "MenuDimAct.EndProcess" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiMenuItemDimmerAction::CVtUiMenuItemDimmerAction
+// ---------------------------------------------------------------------------
+//
+CVtUiMenuItemDimmerAction::CVtUiMenuItemDimmerAction()
+    {
+    __VTPRINTENTER( "MenuDimAct.ctor" )
+    __VTPRINTEXIT( "MenuDimAct.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiMenuItemDimmerAction::SetItemDimmed
+// ---------------------------------------------------------------------------
+//
+void CVtUiMenuItemDimmerAction::SetItemDimmed( TInt aCommandId )
+    {
+    __VTPRINTENTER( "MenuDimAct.SetItemDimmed" )
+    iMenuPane->SetItemDimmed( aCommandId, ETrue );
+    __VTPRINTEXIT( "MenuDimAct.SetItemDimmed" )
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/menu/cvtuimenus.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,156 @@
+/*
+* 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:  Mennu Ui feature class.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "cvtuimenus.h"
+#include "cvtuimenucontext.h"
+#include "cvtuimenuitemdimmeraction.h"
+#include "cvtuifeaturemanager.h"
+#include "cvtuicommandmanager.h"
+
+// ---------------------------------------------------------------------------
+// CVtUiMenus::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiMenus* CVtUiMenus::NewL( CVtUiFeatureManager& aFeatureManager )
+    {
+    __VTPRINTENTER( "Menus.NewL" )
+    CVtUiMenus* self = new ( ELeave ) CVtUiMenus( aFeatureManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "Menus.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiMenus::~CVtUiMenus
+// ---------------------------------------------------------------------------
+//
+CVtUiMenus::~CVtUiMenus()
+    {
+    __VTPRINTENTER( "Menus.~" )    
+    delete iMenuCommandContext;
+    delete iMenuDimmerAction;
+    __VTPRINTEXIT( "Menus.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiMenus::SetMenuPane
+// ---------------------------------------------------------------------------
+//
+void CVtUiMenus::SetMenuPane( CEikMenuPane* aMenuPane )
+    {
+    __VTPRINTENTER( "Menus.SetMenuPane" )
+    iMenuDimmerAction->SetMenuPane( aMenuPane );
+    __VTPRINTEXIT( "Menus.SetMenuPane" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiMenus::StartL
+// ---------------------------------------------------------------------------
+//
+void CVtUiMenus::StartL()
+    {
+    __VTPRINTENTER( "Menus.StartL" )
+    __VTPRINTEXIT( "Menus.StartL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiMenus::Stop
+// ---------------------------------------------------------------------------
+//
+void CVtUiMenus::Stop()
+    {
+    __VTPRINTENTER( "Menus.Stop" )
+    __VTPRINTEXIT( "Menus.Stop" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiMenus::InitFeatureL
+// ---------------------------------------------------------------------------
+//
+void CVtUiMenus::InitFeatureL()
+    {
+    __VTPRINTENTER( "Menus.InitFeatureL" )
+    __VTPRINTEXIT( "Menus.InitFeatureL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiMenus::RefreshL
+// ---------------------------------------------------------------------------
+//
+void CVtUiMenus::RefreshL()
+    {
+    __VTPRINTENTER( "Menus.RefreshL" )
+    iFeatureManager.CommandManager().ValidateMenuItemsL( *iMenuDimmerAction );
+    __VTPRINTEXIT( "Menus.RefreshL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiMenus::AddCommandModifier
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiMenus::AddCommandModifier( CVtUiCommandModifyBase& )
+    {
+    __VTPRINTENTER( "Menus.AddCommandModifier" )
+    __VTPRINTEXIT( "Menus.AddCommandModifier" )
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiMenus::RemoveCommandModifier
+// ---------------------------------------------------------------------------
+//
+void CVtUiMenus::RemoveCommandModifier( CVtUiCommandModifyBase& )
+    {
+    __VTPRINTENTER( "Menus.RemoveCommandModifier" )
+    __VTPRINTEXIT( "Menus.RemoveCommandModifier" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiMenus::CVtUiMenus
+// ---------------------------------------------------------------------------
+//
+CVtUiMenus::CVtUiMenus( CVtUiFeatureManager& aFeatureManager )
+    : CVtUiFeatureBase( EVtUiFeatureIdMenu, aFeatureManager )
+    {
+    __VTPRINTENTER( "Menus.ctor" )
+    __VTPRINTEXIT( "Menus.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiMenus::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiMenus::ConstructL()
+    {
+    __VTPRINTENTER( "Menus.ConstructL" )
+    iMenuCommandContext =
+        CVtUiMenuContext::NewL( iFeatureManager.CommandManager() );
+    iMenuDimmerAction = CVtUiMenuItemDimmerAction::NewL();
+    
+    // No need to add this to command manager as command UI. Menu is explicitly
+    // updated by CVtUiAppUi::DynInitMenuPaneL and in all other situations
+    // update is not needed because menu is not open. 
+    // NOTE: If a command modifier is implemented for menu then it needs
+    // to be added to command UI.
+    __VTPRINTEXIT( "Menus.ConstructL" )
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/menu/tvtuimenucommanditerator.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Menu command iterator.
+*
+*/
+
+
+#include <eikmenup.h>
+
+#include "tvtuimenucommanditerator.h"
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// TVtUiMenuCommandIterator::TVtUiMenuCommandIterator
+// ---------------------------------------------------------------------------
+//
+TVtUiMenuCommandIterator::TVtUiMenuCommandIterator( CEikMenuPane& aMenuPane )
+: iMenuPane( &aMenuPane ), iCurrent( 0 )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// TVtUiMenuCommandIterator::HasNext
+// ---------------------------------------------------------------------------
+//
+TBool TVtUiMenuCommandIterator::HasNext() const
+    {
+    return ( iCurrent < iMenuPane->NumberOfItemsInPane() );
+    }
+
+// ---------------------------------------------------------------------------
+// TVtUiMenuCommandIterator::Next
+// ---------------------------------------------------------------------------
+//
+TInt TVtUiMenuCommandIterator::Next()
+    {
+    return iMenuPane->MenuItemCommandId( iCurrent++ );
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/numberentry/CVtUiNumberEntryControl.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,315 @@
+/*
+* Copyright (c) 2004-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the CVtUiNumberEntryControl control class.
+*
+*/
+
+
+// INCLUDE FILES
+#include    "CVtUiNumberEntryControl.h"
+#include    "VtUiLayout.h"
+#include    "VtUiUtility.h"
+#include    "mvtuicomponentmanager.h"
+#include    "tvtuistates.h"
+#include    "tvtuiwsevent.h"
+#include    "mvtuifeature.h"
+#include    "mvtuinumberentrycontrolobserver.h"
+#include    "cvtuidtmfbuffer.h"
+
+#include    <AknsUtils.h>
+#include    <cvtlogger.h>
+#include    <eikenv.h>
+
+// CONSTANTS
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// Implementation for TVtUiNumberEntryComponentState
+
+// -----------------------------------------------------------------------------
+// TVtUiNumberEntryComponentState::TVtUiNumberEntryComponentState
+// -----------------------------------------------------------------------------
+//
+TVtUiNumberEntryComponentState::TVtUiNumberEntryComponentState(
+    MVtUiComponent& aComponent )
+    : TVtUiComponentState( aComponent,
+        TVtUiBlockListBitField(
+            MVtUiComponent::EComponentIdDialer ) )
+    {
+    }
+
+// Implementation for CVtUiNumberEntryControl
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::CVtUiNumberEntryControl
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CVtUiNumberEntryControl::CVtUiNumberEntryControl(
+        MVtUiFeature& aFeature,
+        TVtUiStates& aUiStates )
+    : iFeature( aFeature ),
+      iComponentState( *this ),
+      iUiStates( aUiStates )
+    {
+    __VTPRINTENTER( "NECtrl.ctor" )
+    __VTPRINTEXIT( "NECtrl.ctor" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::ConstructL
+// Symbian 2nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryControl::ConstructL( const TRect& aRect )
+    {
+    __VTPRINTENTER( "NECtrl.ConstructL" )
+    CreateWindowL();
+    SetRect( aRect );
+    ActivateL();
+    MakeVisible( EFalse );
+    iInputBuffer = CVtUiDTMFBuffer::NewL( *iCoeEnv );
+    __VTPRINTEXIT( "NECtrl.ConstructL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::~CVtUiNumberEntryControl
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CVtUiNumberEntryControl::~CVtUiNumberEntryControl()
+    {
+    __VTPRINTENTER( "NECtrl.~" )
+    AknsUtils::DeregisterControlPosition( this );
+    delete iInputBuffer;
+    __VTPRINTEXIT( "NECtrl.~" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::OpenNumberEntry
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiNumberEntryControl::OpenNumberEntry()
+    {
+    __VTPRINTENTER( "NECtrl.OpenNumberEntry" )
+    TBool result( EFalse );
+    if ( !iUiStates.IsNumberEntryOpen() )
+        {
+        __VTPRINT( DEBUG_GEN, "VtUiNumberEntry.OPEN" )
+        iInputBuffer->Activate();
+        iUiStates.SetIsNumberEntryOpen( ETrue );
+        result = ETrue;
+        }
+    __VTPRINTEXITR( "NECtrl.OpenNumberEntry %d", result )
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::IsNumberEntryOpen
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiNumberEntryControl::IsNumberEntryOpen() const
+    {
+    __VTPRINTENTER( "NECtrl.IsNumberEntryOpen" )
+    const TBool result( iUiStates.IsNumberEntryOpen() );
+    __VTPRINTEXITR( "NECtrl.IsNumberEntryOpen %d",result )
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::CloseNumberEntry
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryControl::CloseNumberEntry()
+    {
+    __VTPRINTENTER( "NECtrl.CloseNumberEntry" )
+    if ( iUiStates.IsNumberEntryOpen() )
+        {
+        __VTPRINT( DEBUG_GEN, "NECtrl.CloseNumberEntry CLOSE" )
+        iUiStates.SetIsNumberEntryOpen( EFalse );
+        iInputBuffer->Deactivate();
+        }
+    __VTPRINTEXIT( "NECtrl.CloseNumberEntry" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::RegisterComponentL
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryControl::RegisterComponentL(
+    MVtUiComponentManager& aComponentManager )
+    {
+    __VTPRINTENTER( "NECtrl.RegisterComponentL" )
+    User::LeaveIfError( aComponentManager.ChangeComponentRegistration(
+        iComponentState, MVtUiComponentManager::ERegister ) );
+    __VTPRINTEXIT( "NECtrl.RegisterComponentL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::UnregisterComponent
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryControl::UnregisterComponent(
+    MVtUiComponentManager& aComponentManager )
+    {
+    __VTPRINTENTER( "NECtrl.UnregisterComponent" )
+    iInputBuffer->Reset();
+    aComponentManager.ChangeComponentRegistration( iComponentState,
+        MVtUiComponentManager::EUnregister );
+    __VTPRINTEXIT( "NECtrl.UnregisterComponent" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::SetNumberEntryControlObserver
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryControl::SetNumberEntryControlObserver(
+    MVtUiNumberEntryControlObserver* aObserver )
+    {
+    __VTPRINTENTER( "NECtrl.SetNumberEntryControlObserver" )
+    iControlObserver = aObserver;
+    __VTPRINTEXIT( "NECtrl.SetNumberEntryControlObserver" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::OfferKeyEventL
+// -----------------------------------------------------------------------------
+//
+TKeyResponse CVtUiNumberEntryControl::OfferKeyEventL(
+        const TKeyEvent& aKeyEvent,
+        TEventCode )
+    {
+    __VTPRINTENTER( "NECtrl.OfferKeyEventL" )
+
+    TKeyResponse resp( EKeyWasNotConsumed );
+
+    if ( IsDisplayingMenuOrDialog() ||
+        aKeyEvent.iCode == EKeyLeftArrow ||
+        aKeyEvent.iCode == EKeyRightArrow ||
+        aKeyEvent.iCode == EKeyUpArrow ||
+        aKeyEvent.iCode == EKeyDownArrow ||
+        aKeyEvent.iCode == EKeyBackspace ||
+        aKeyEvent.iCode == EKeyZoomIn ||
+        aKeyEvent.iCode == EKeyZoomOut ||
+        aKeyEvent.iScanCode == EStdKeyUpArrow ||
+        aKeyEvent.iScanCode == EStdKeyDownArrow ||
+        aKeyEvent.iScanCode == EStdKeyLeftArrow ||
+        aKeyEvent.iScanCode == EStdKeyRightArrow )
+        {
+        return resp;
+        }
+
+    TChar dtmfTone;
+    if ( VtUiUtility::IsDTMFEvent( aKeyEvent, dtmfTone ) )
+        {
+        iInputBuffer->Append( dtmfTone );
+        }
+
+    __VTPRINTEXITR( "NECtrl.OfferKeyEvent %d", resp )
+    return resp;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::DoCloseNumberEntry
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiNumberEntryControl::DoCloseNumberEntry( TAny* aAny )
+    {
+    __VTPRINTENTER( "NECtrl.DoCloseNumberEntry" )
+    CVtUiNumberEntryControl* self =
+        reinterpret_cast< CVtUiNumberEntryControl* >( aAny );
+    self->HandleTimeoutCloseNumberEntry();
+    __VTPRINTEXIT( "NECtrl.DoCloseNumberEntry" )
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::HandleTimeoutCloseNumberEntry
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryControl::HandleTimeoutCloseNumberEntry()
+    {
+    __VTPRINTENTER( "NECtrl.HandleTimeoutCloseNumberEntry" )
+    __VTPRINTEXIT( "NECtrl.HandleTimeoutCloseNumberEntry" )
+    iFeature.Stop();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::IsDisplayingMenuOrDialog
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiNumberEntryControl::IsDisplayingMenuOrDialog() const
+    {
+    __VTPRINTENTER( "NECtrl.IsDisplayingMenuOrDialog" )
+    CEikMenuBar* menuBar = iEikonEnv->AppUiFactory()->MenuBar();
+    const TBool result( CCoeEnv::Static()->AppUi()->IsDisplayingDialog() ||
+        ( menuBar && menuBar->IsDisplayed() ) );
+    __VTPRINTEXITR( "NECtrl.IsDisplayingMenuOrDialog %d", result )
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::ComponentId
+// -----------------------------------------------------------------------------
+//
+MVtUiComponent::TComponentId CVtUiNumberEntryControl::ComponentId() const
+    {
+    __VTPRINTENTER( "NECtrl.ComponentId" )
+    __VTPRINTEXIT( "NECtrl.ComponentId" )
+    return MVtUiComponent::EComponentIdNumberEntry;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::ComponentAsControl
+// -----------------------------------------------------------------------------
+//
+CCoeControl* CVtUiNumberEntryControl::ComponentAsControl()
+    {
+    __VTPRINTENTER( "NECtrl.ComponentAsControl" )
+    __VTPRINTEXIT( "NECtrl.ComponentAsControl" )
+    return this;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::DoActivateL
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryControl::DoActivateL()
+    {
+    __VTPRINTENTER( "NECtrl.DoActivateL" )
+    OpenNumberEntry();
+    if ( iControlObserver )
+        {
+        iControlObserver->ControlActivatedL();
+        }
+    __VTPRINTEXIT( "NECtrl.DoActivateL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::DoDeactivateL
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryControl::DoDeactivateL()
+    {
+    __VTPRINTENTER( "NECtrl.DoDeactivateL" )
+    CloseNumberEntry();
+    if ( iControlObserver )
+        {
+        iControlObserver->ControlDeactivated();
+        }
+    __VTPRINTEXIT( "NECtrl.DoDeactivateL" )
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/numberentry/cvtuinumberentry.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,215 @@
+/*
+* 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:  Number entry UI feature implementation.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "cvtuinumberentry.h"
+#include "cvtuifeaturemanager.h"
+#include "mvtuicommandmanager.h"
+#include "mvtuicomponentmanager.h"
+#include "mvtuicommandui.h"
+#include "tvtuifeatureids.h"
+#include "CVtUiNumberEntryControl.h"
+#include "CVtUiAppUi.h"
+
+
+// We need this to be able to make control's priority lower than activation
+// control's priority is
+extern const TInt KVtUiNumberEntryActivationPriority;
+
+// Priority of number entry control.
+const TInt KVtUiNumberEntryControlPriorityHidden =
+    KVtUiNumberEntryActivationPriority - 1;
+
+// ======== LOCAL FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiNumberEntry::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiNumberEntry* CVtUiNumberEntry::NewL(
+    CVtUiFeatureManager& aFeatureManager )
+    {
+    __VTPRINTENTER( "NE.NewL" )
+    CVtUiNumberEntry* self =
+        new ( ELeave ) CVtUiNumberEntry( aFeatureManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "NE.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiNumberEntry::~CVtUiNumberEntry
+// ---------------------------------------------------------------------------
+//
+CVtUiNumberEntry::~CVtUiNumberEntry()
+    {
+    __VTPRINTENTER( "NE.~" )
+    DeleteNumberEntryControl();
+    __VTPRINTEXIT( "NE.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiNumberEntry::StartL
+// ---------------------------------------------------------------------------
+//
+void CVtUiNumberEntry::StartL()
+    {
+    __VTPRINTENTER( "NE.StartL" )
+    if ( State() == MVtUiFeature::EUnprepared )
+        {
+        PrepareL();
+        iFeatureManager.ComponentManager().RequestActivationL(
+            MVtUiComponent::EComponentIdNumberEntry );
+        iFeatureState = MVtUiFeature::EActive;
+        }
+    __VTPRINTEXIT( "NE.StartL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiNumberEntry::Stop
+// ---------------------------------------------------------------------------
+//
+void CVtUiNumberEntry::Stop()
+    {
+    __VTPRINTENTER( "NE.Stop" )
+    if ( State() == MVtUiFeature::EActive )
+        {
+        TRAP_IGNORE( iFeatureManager.ComponentManager().DeActivateComponentL(
+            MVtUiComponent::EComponentIdNumberEntry ) );
+        iFeatureState = MVtUiFeature::EReady;
+        }
+    Unprepare();
+    __VTPRINTEXIT( "NE.Stop" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiNumberEntry::InitFeatureL
+// ---------------------------------------------------------------------------
+//
+void CVtUiNumberEntry::InitFeatureL()
+    {
+    __VTPRINTENTER( "NE.InitFeatureL" )
+    CreateNumberEntryControlL();
+    __VTPRINTEXIT( "NE.InitFeatureL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiNumberEntry::ControlActivated
+// ---------------------------------------------------------------------------
+//
+void CVtUiNumberEntry::ControlActivatedL()
+    {
+    __VTPRINTENTER( "NE.ControlActivatedL" )
+    __VTPRINTEXIT( "NE.ControlActivatedL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiNumberEntry::ControlDeactivated
+// ---------------------------------------------------------------------------
+//
+void CVtUiNumberEntry::ControlDeactivated()
+    {
+    __VTPRINTENTER( "NE.ControlDeactivated" )
+    __VTPRINTEXIT( "NE.ControlDeactivated" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiNumberEntry::CVtUiNumberEntry
+// ---------------------------------------------------------------------------
+//
+CVtUiNumberEntry::CVtUiNumberEntry( CVtUiFeatureManager& aFeatureManager )
+    : CVtUiFeatureBase( EVtUiFeatureIdNumberEntry, aFeatureManager )
+    {
+    __VTPRINTENTER( "NE.ctor" )
+    __VTPRINTEXIT( "NE.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiNumberEntry::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiNumberEntry::ConstructL()
+    {
+    __VTPRINTENTER( "NE.ConstructL" )
+    BaseConstructL();
+    __VTPRINTEXIT( "NE.ConstructL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiNumberEntry::PrepareL
+// ---------------------------------------------------------------------------
+//
+void CVtUiNumberEntry::PrepareL()
+    {
+    __VTPRINTENTER( "NE.PrepareL" )
+    iNumberEntryControl->SetNumberEntryControlObserver( this );
+    iNumberEntryControl->RegisterComponentL(
+        iFeatureManager.ComponentManager() );
+    iFeatureManager.AppUi().AddToStackL( iNumberEntryControl,
+        KVtUiNumberEntryControlPriorityHidden, ECoeStackFlagRefusesFocus );
+    iFeatureState = MVtUiFeature::EReady;
+    __VTPRINTEXIT( "NE.PrepareL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiNumberEntry::Unprepare()
+// ---------------------------------------------------------------------------
+//
+void CVtUiNumberEntry::Unprepare()
+    {
+    __VTPRINTENTER( "NE.Unprepare" )
+    if ( iFeatureState > MVtUiFeature::EUnprepared )
+	    {
+	    iNumberEntryControl->SetNumberEntryControlObserver( NULL );
+	    iFeatureManager.AppUi().RemoveFromStack( iNumberEntryControl );
+	    iNumberEntryControl->UnregisterComponent(
+	        iFeatureManager.ComponentManager() );
+	    iFeatureState = MVtUiFeature::EUnprepared;
+	  	}
+    __VTPRINTEXIT( "NE.Unprepare" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiNumberEntry::CreateNumberEntryControlL
+// ---------------------------------------------------------------------------
+//
+void CVtUiNumberEntry::CreateNumberEntryControlL()
+    {
+    __VTPRINTENTER( "NE.CreateNumberEntryControlL" )
+    iNumberEntryControl = new ( ELeave ) CVtUiNumberEntryControl( *this,
+        iFeatureManager.UiStates() );
+    iNumberEntryControl->ConstructL( TRect() );
+    iNumberEntryControl->SetMopParent( &iFeatureManager.AppUi() );
+    __VTPRINTEXIT( "NE.CreateNumberEntryControlL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiNumberEntry::DeleteNumberEntryControl
+// ---------------------------------------------------------------------------
+//
+void CVtUiNumberEntry::DeleteNumberEntryControl()
+    {
+    __VTPRINTENTER( "NE.DeleteNumberEntryControl" )
+    delete iNumberEntryControl;
+    iNumberEntryControl = NULL;
+    iFeatureState = MVtUiFeature::EUnprepared;
+    __VTPRINTEXIT( "NE.DeleteNumberEntryControl" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/prefs/cvtuibrightness.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,101 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  implementation.
+*
+*/
+
+
+#include    <cvtlogger.h>
+#include    "cvtuibrightness.h"
+#include    "tvtuifeatureids.h"
+#include    "cvtuibrightnesspopup.h"
+#include    "cvtuipopupbase.h"
+#include    "cvtuiprefsliderbase.h"
+#include    "videotelui.hrh"
+#include    "cvtuifeaturemanager.h"
+#include    "tvtuistates.h"
+
+// ---------------------------------------------------------------------------
+// CVtUiBrightness::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiBrightness* CVtUiBrightness::NewL( CVtUiFeatureManager&
+    aFeatureManager )
+    {
+    __VTPRINTENTER( "CVtUiBrightness.NewL" )
+    CVtUiBrightness* self =
+        new ( ELeave ) CVtUiBrightness( aFeatureManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    __VTPRINTEXIT( "CVtUiBrightness.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiBrightness::~CVtUiBrightness
+// ---------------------------------------------------------------------------
+//
+CVtUiBrightness::~CVtUiBrightness()
+    {
+    __VTPRINTENTER( "CVtUiBrightness.~" )
+    __VTPRINTEXIT( "CVtUiBrightness.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiBrightness::StartL
+// ---------------------------------------------------------------------------
+//
+void CVtUiBrightness::StartL()
+    {
+    __VTPRINTENTER( "CVtUiBrightness.StartL" )
+    CVtUiPrefSliderBase::StartL();
+    iFeatureManager.UiStates().SetBrightnessModeOn( ETrue );
+    __VTPRINTEXIT( "CVtUiBrightness.StartL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiBrightness::Stop
+// ---------------------------------------------------------------------------
+//
+void CVtUiBrightness::Stop()
+    {
+    __VTPRINTENTER( "CVtUiBrightness.Stop" )
+    CVtUiPrefSliderBase::Stop();
+    iFeatureManager.UiStates().SetBrightnessModeOn( EFalse );
+    __VTPRINTEXIT( "CVtUiBrightness.Stop" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiBrightness::CVtUiBrightness
+// ---------------------------------------------------------------------------
+//
+CVtUiBrightness::CVtUiBrightness( CVtUiFeatureManager& aFeatureManager )
+    : CVtUiPrefSliderBase( aFeatureManager, EVtUiFeatureIdBrightness )
+    {
+    __VTPRINTENTER( "CVtUiBrightness.CVtUiBrightness" )
+    __VTPRINTEXIT( "CVtUiBrightness.CVtUiBrightness" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiBrightness::CVtUiBrightness
+// ---------------------------------------------------------------------------
+//
+void CVtUiBrightness:: ConstructL()
+    {
+    __VTPRINTENTER( "CVtUiBrightness.ConstructL" )
+    BaseConstructL();
+    SetPopup( CVtUiBrightnessPopup::NewL( iFeatureManager ) );
+    __VTPRINTEXIT( "CVtUiBrightness.ConstructL" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/prefs/cvtuibrightnesspopup.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,102 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  implementation.
+*
+*/
+
+
+
+#include    <mvtengmedia.h>
+#include    <cvtlogger.h>
+#include    "cvtuibrightnesspopup.h"
+#include	"tvtuilocalvariation.h"
+#include    "mvtuicomponent.h"
+#include    "CVtUiAppUi.h"
+#include    "mvtuicomponentmanager.h"
+#include    "tvtuicomponentstate.h"
+#include    <mvtengcamerapreferences.h>
+
+// ---------------------------------------------------------------------------
+// CVtUiBrightnessPopup::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiBrightnessPopup* CVtUiBrightnessPopup::NewL( CVtUiFeatureManager&
+    aFeatureManager )
+    {
+    __VTPRINTENTER( "CVtUiBrightnessPopup.NewL" )
+    CVtUiBrightnessPopup* self =
+        new ( ELeave ) CVtUiBrightnessPopup( aFeatureManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    __VTPRINTEXIT( "CVtUiBrightnessPopup.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiBrightnessPopup::~CVtUiBrightnessPopup
+// ---------------------------------------------------------------------------
+//
+CVtUiBrightnessPopup::~CVtUiBrightnessPopup()
+    {
+    __VTPRINTENTER( "CVtUiBrightnessPopup.~" )
+    __VTPRINTEXIT( "CVtUiBrightnessPopup.~" )
+    }
+    
+// ---------------------------------------------------------------------------
+// CVtUiBrightnessPopup::CurrentValue
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiBrightnessPopup::CurrentValue()
+    {
+    __VTPRINTENTER( "CVtUiBrightnessPopup.CurrentValue" )
+    // ask from engine current value
+    TInt value;
+    if ( iCameraPref->GetBrightness( value) )
+        {
+        __VTPRINTEXIT( "CVtUiBrightnessPopup.CurrentValueERR" )
+        return 0;
+        }
+    __VTPRINTEXIT( "CVtUiBrightnessPopup.CurrentValue" )
+    return value;
+    }    
+// ---------------------------------------------------------------------------
+// CVtUiBrightnessPopup::CVtUiBrightnessPopup
+// ---------------------------------------------------------------------------
+//
+CVtUiBrightnessPopup::CVtUiBrightnessPopup( CVtUiFeatureManager& aFeatureManager )
+    : CVtUiPrefPopupBase( aFeatureManager, TVtUiBlockListBitField(
+        MVtUiComponent::EComponentIdDialer |
+        MVtUiComponent::EComponentIdToolbar |
+        MVtUiComponent::EComponentIdNumberEntry |
+        MVtUiComponent::EComponentIdVolume |
+        MVtUiComponent::EComponentIdZoom |
+        MVtUiComponent::EVComponentIdContrast ), EVComponentIdBrightness,
+        KVtEngSetBrightness ) 
+    {
+
+    __VTPRINTENTER( "CVtUiBrightnessPopup.CVtUiBrightnessPopup" )
+    __VTPRINTEXIT( "CVtUiBrightnessPopup.CVtUiBrightnessPopup" )
+    }
+    
+// ---------------------------------------------------------------------------
+// CVtUiBrightnessPopup::CVtUiBrightnessPopup
+// ---------------------------------------------------------------------------
+//
+void CVtUiBrightnessPopup:: ConstructL()
+    {
+    __VTPRINTENTER( "CVtUiBrightnessPopup.ConstructL" )
+    BaseConstructL();
+    __VTPRINTEXIT( "CVtUiBrightnessPopup.ConstructL" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/prefs/cvtuicolortone.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,383 @@
+/*
+* 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:  Color tone UI feature implementation.
+*
+*/
+
+
+#include    <mvtengmedia.h>
+#include    <cvtengmodel.h>
+#include    <mvtengcamerapreferences.h>
+#include    <cvtlogger.h>
+#include    "cvtuicolortone.h"
+#include    "tvtuifeatureids.h"
+#include    <videotelui.rsg>
+#include    "mvtuicomponentmanager.h"
+#include    "cvtuifeaturemanager.h"
+#include    "CVtUiAppUi.h"
+#include	"tvtuilocalvariation.h"
+#include    "cvtuifeaturemanager.h"
+#include    "tvtuistates.h"
+#include    "cvtuicommandmanager.h"
+
+// Implementation of TVtUiColorToneComponentState
+
+// ---------------------------------------------------------------------------
+// TVtUiColorToneComponentState::TVtUiColorToneComponentState
+// ---------------------------------------------------------------------------
+//
+TVtUiColorToneComponentState::TVtUiColorToneComponentState(
+    MVtUiComponent& aComponent ) :
+    TVtUiComponentState( aComponent,
+        TVtUiBlockListBitField(
+            MVtUiComponent::EComponentIdDialer |
+            MVtUiComponent::EComponentIdToolbar |
+            MVtUiComponent::EComponentIdNumberEntry ) )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiColorTone::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiColorTone* CVtUiColorTone::NewL( CVtUiFeatureManager&
+    aFeatureManager )
+    {
+    __VTPRINTENTER( "UiColorTone.NewL" )
+    CVtUiColorTone* self =
+        new ( ELeave ) CVtUiColorTone( aFeatureManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    __VTPRINTEXIT( "UiColorTone.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiColorTone::~CVtUiColorTone
+// ---------------------------------------------------------------------------
+//
+CVtUiColorTone::~CVtUiColorTone()
+    {
+    __VTPRINTENTER( "UiColorTone.~" )
+    // unregister layout change
+    iFeatureManager.ComponentManager().ChangeLayoutChangeRegistration(
+        *this, MVtUiComponentManager::EUnregister );
+     // unregister component
+    iFeatureManager.ComponentManager().ChangeComponentRegistration(
+        iComponentState, MVtUiComponentManager::EUnregister );
+    __VTPRINTEXIT( "UiColorTone.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiColorTone::StartL
+// ---------------------------------------------------------------------------
+//
+void CVtUiColorTone::StartL()
+    {
+    __VTPRINTENTER( "UiColorTone.StartL" )
+    if ( iFeatureState  == MVtUiFeature::EReady )
+        {
+        iFeatureManager.AppUi().EnableCommandActivatingAndCleanupPushL();
+        iFeatureManager.UiStates().SetIsFixedToolbarVisible( EFalse );        
+        iFeatureManager.ComponentManager().
+            RequestActivationL ( MVtUiComponent::EComponentIdColorTone );
+        CleanupStack::Pop(); // EnableCommandActivatingAndCleanupPushL
+        // set state
+        iFeatureState  = MVtUiFeature::EActive;
+        }
+    __VTPRINTEXIT( "UiColorTone.StartL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiColorTone::Stop
+// ---------------------------------------------------------------------------
+//
+void CVtUiColorTone::Stop()
+    {
+    __VTPRINTENTER( "UiColorTone.Stop" )
+    iAsyncCallback->Cancel();
+    iAsyncCallback->Set( TCallBack( &DoStopL, this ) );
+    iAsyncCallback->CallBack();
+    __VTPRINTEXIT( "UiColorTone.Stop" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiColorTone::InitFeatureL
+// ---------------------------------------------------------------------------
+//
+void CVtUiColorTone::InitFeatureL()
+    {
+    __VTPRINTENTER( "UiColorTone.InitFeatureL" )
+    CVtUiPrefSettingListBase::InitFeatureL();
+    User::LeaveIfError(
+       iFeatureManager.ComponentManager().ChangeComponentRegistration(
+       iComponentState, MVtUiComponentManager::ERegister ) );
+    User::LeaveIfError(
+       iFeatureManager.ComponentManager().ChangeLayoutChangeRegistration(
+       *this, MVtUiComponentManager::ERegister ) );
+    iFeatureState  = EReady;
+    __VTPRINTEXIT( "UiColorTone.InitFeatureL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiColorTone::ComponentId
+// ---------------------------------------------------------------------------
+//
+MVtUiComponent::TComponentId CVtUiColorTone::ComponentId() const
+    {
+    __VTPRINTENTER( "UiColorTone.ComponentId" )
+    __VTPRINTEXIT( "UiColorTone.ComponentId" )
+    return MVtUiComponent::EComponentIdColorTone;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiColorTone::ComponentAsControl
+// ---------------------------------------------------------------------------
+//
+CCoeControl* CVtUiColorTone::ComponentAsControl()
+    {
+    __VTPRINTENTER( "UiColorTone.ComponentAsControl" )
+    __VTPRINTEXIT( "UiColorTone.ComponentAsControl" )
+    return NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiColorTone::DoActivateL
+// ---------------------------------------------------------------------------
+//
+void CVtUiColorTone::DoActivateL()
+    {
+    __VTPRINTENTER( "UiColorTone.DoActivateL" )
+    // get supported color tone modes
+    iCameraPref->GetSupportedColorTones( iSupportedModes );
+    __VTPRINT2( DEBUG_GEN, "UiColorTone.ConstructL=%d", iSupportedModes )
+    iFeatureManager.UiStates().SetColorToneModeOn( ETrue );
+    iAsyncCallback->Cancel();
+    iAsyncCallback->Set( TCallBack( &DoStartL, this ) );
+    iAsyncCallback->CallBack();
+    __VTPRINTEXIT( "UiColorTone.DoActivateL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiColorTone::DoDeactivateL
+// ---------------------------------------------------------------------------
+//
+void CVtUiColorTone::DoDeactivateL()
+    {
+    __VTPRINTENTER( "UiColorTone.DoDeactivateL" )
+    iFeatureManager.UiStates().SetColorToneModeOn( EFalse );
+    CVtUiPrefSettingListBase::StopSettingPageL();
+    __VTPRINTEXIT( "UiColorTone.DoDeactivateL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiColorTone::HandleLayoutChangeL
+// ---------------------------------------------------------------------------
+//
+void CVtUiColorTone::HandleLayoutChangeL()
+    {
+    __VTPRINTENTER( "UiColorTone.HandleLayoutChangeL" )
+    if ( iFeatureState  == MVtUiFeature::EActive )
+        {
+        SizeChanged();
+        }
+    __VTPRINTEXIT( "UiColorTone.HandleLayoutChangeL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiColorTone::CurrentSelection
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiColorTone::CurrentSelection()
+    {
+    __VTPRINTENTER( "UiColorTone.CurrentSelection" )
+    // ask from engine which item is currently active
+    MVtEngCameraPreferences::TColorTone wb;
+    if ( iCameraPref->GetColorTone( wb ) )
+        {
+        __VTPRINTEXIT( "UiColorTone.CurrentSelectionERR" )
+        // if error occured return 0 i.e. first list item
+        return 0;
+        }
+    __VTPRINTEXIT( "UiColorTone.CurrentSelection" )
+    return MapCTEnumToArrayIndex( wb );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiColorTone::SetItemsL
+// ---------------------------------------------------------------------------
+//
+void CVtUiColorTone::SetItemsL( CDesCArray& aArray )
+    {
+    __VTPRINTENTER( "UiColorTone.SetItemsL<" )
+    __VTPRINT2( DEBUG_GEN, "UiColorTone.SetItemsL=%d", iSupportedModes )
+    // Normal mode allways supported
+    ReadAndAppendItemL( aArray, R_VIDEOTELUI_QTN_INCAL_CT_NORMAL_OPTION );
+    iActiveItems.Append( MVtEngCameraPreferences::ENormal );
+
+    if( iSupportedModes & MVtEngCameraPreferences::ESepia )
+        {
+        ReadAndAppendItemL( aArray, R_VIDEOTELUI_QTN_INCAL_SEPIA_OPTION );
+        iActiveItems.Append( MVtEngCameraPreferences::ESepia );
+        }
+    if( iSupportedModes & MVtEngCameraPreferences::EGrayscale )
+        {
+        ReadAndAppendItemL( aArray, R_VIDEOTELUI_QTN_INCAL_B_AND_W_OPTION );
+        iActiveItems.Append( MVtEngCameraPreferences::EGrayscale );
+        }
+    if( iSupportedModes & MVtEngCameraPreferences::ENegative )
+        {
+        ReadAndAppendItemL( aArray, R_VIDEOTELUI_QTN_INCAL_NEGATIVE_OPTION );
+        iActiveItems.Append( MVtEngCameraPreferences::ENegative );
+        }
+    __VTPRINTEXIT( "UiColorTone.SetItemsL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiColorTone::SettingPageResId
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiColorTone::SettingPageResId() const
+    {
+    __VTPRINTENTER( "UiColorTone.SettingPageResId" )
+    __VTPRINTEXIT( "UiColorTone.SettingPageResId" )
+    return R_VIDEOTELUI_COLOR_TONE_SETTING_PAGE;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiColorTone::SettingPageItemChanged
+// ---------------------------------------------------------------------------
+//
+void CVtUiColorTone::SettingPageItemChangedL( TInt aIndex )
+    {
+    __VTPRINTENTER( "CVtUiColorTone.SettingPageItemChangedL" )
+    __VTPRINT2( DEBUG_GEN, "CVtUiColorTone.index=%d", aIndex )
+    if ( iFeatureManager.UiStates().ExecState() == TVtUiStates::EExecStateResetting )
+        {
+    __VTPRINTEXIT( "CVtUiColorTone.SettingPageItemChangedL" )
+        return;
+        }
+    // Map index to right color tone value
+    MVtEngCameraPreferences::TColorTone ct = MapArrayIndexToCTEnum( aIndex );
+
+    // cast the parameter
+    TPtrC8 params( reinterpret_cast< TUint8* >( &ct ),
+        sizeof( MVtEngCameraPreferences::TColorTone ) );
+
+    // Adjust color tone
+  MVtEngMedia::TCameraId currentCamId;
+    iFeatureManager.AppUi().Model().Media().GetCurrentCameraId( currentCamId );
+    if( currentCamId == MVtEngMedia::ESecondaryCamera  )
+        {
+        iFeatureManager.AppUi().DoExecuteCmdL( KVtEngSetColorTone, &params );
+        iPendingSettingChangeCmd = EFalse;
+        }
+    else
+        iPendingSettingChangeCmd = ETrue;
+    __VTPRINTEXIT( "CVtUiColorTone.SettingPageItemChangedL" )
+    }
+
+
+// ---------------------------------------------------------------------------
+// CVtUiColorTone::CVtUiColorTone
+// ---------------------------------------------------------------------------
+//
+CVtUiColorTone::CVtUiColorTone( CVtUiFeatureManager& aFeatureManager )
+    : CVtUiPrefSettingListBase( aFeatureManager, EVtUiFeatureIdColourTone ),
+    iComponentState( *this )
+    {
+    __VTPRINTENTER( "UiColorTone.UiColorTone" )
+    __VTPRINTEXIT( "UiColorTone.UiColorTone" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiColorTone::MapCTEnumToArrayIndex
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiColorTone::MapCTEnumToArrayIndex( MVtEngCameraPreferences::
+    TColorTone& aColorTone ) const
+    {
+    __VTPRINTENTER( "CVtUiColorTone.MapCTEnumToArrayIndex" )
+    __VTPRINT2( DEBUG_GEN, "CVtUiColorTone.cpunt=%d", iActiveItems.Count() )
+    for ( TInt i = 0; i < iActiveItems.Count(); ++i )
+         {
+         if ( iActiveItems [ i ] ==  aColorTone  )
+             {
+             __VTPRINT2( DEBUG_GEN, "CVtUiColorTone.index=%d", i )
+             __VTPRINTEXIT( "CVtUiColorTone.MapCTEnumToArrayIndex" )
+             return i;
+             }
+         }
+     __VTPRINTEXIT( "CVtUiColorTone.MapCTEnumToArrayIndex" )
+     // not found
+     return KErrNotFound;
+    }
+// ---------------------------------------------------------------------------
+// CVtUiColorTone::MapArrayIndexToCTEnum
+// ---------------------------------------------------------------------------
+//
+MVtEngCameraPreferences::TColorTone CVtUiColorTone::MapArrayIndexToCTEnum(
+    TInt aIndex) const
+    {
+    __VTPRINTENTER( "TColorTone.MapArrayIndexToCTEnum" )
+    __VTPRINT2( DEBUG_GEN, "TColorTone.index=%d", aIndex )
+    __VTPRINT2( DEBUG_GEN, "TColorTone.count=%d", iActiveItems.Count() )
+    const TInt count = iActiveItems.Count();
+    if ( count > 0 && aIndex < count && aIndex >= 0 )
+        {
+        __VTPRINTEXIT( "TColorTone.MapArrayIndexToCTEnum" )
+        return static_cast< MVtEngCameraPreferences::TColorTone >
+            ( iActiveItems[ aIndex ] );
+        }
+    else // not valid index return first item in the list
+        {
+        __VTPRINTEXIT( "TColorTone.MapArrayIndexToCTEnum_ERROR_INDEX" )
+        return static_cast< MVtEngCameraPreferences::TColorTone >
+            ( iActiveItems[ 0 ] );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiColorTone::DoStop
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiColorTone::DoStopL( TAny* aAny )
+    {
+    __VTPRINTENTER( "CVtUiColorTone.DoStopL" )
+    CVtUiColorTone* self = static_cast< CVtUiColorTone* >( aAny );
+    if ( self->iFeatureState  == MVtUiFeature::EActive )
+        {
+        self->iFeatureManager.ComponentManager().
+            DeActivateComponentL ( MVtUiComponent::EComponentIdColorTone );
+        // set state
+        self->iFeatureState = MVtUiFeature::EReady;
+        }
+    __VTPRINTEXIT( "CVtUiColorTone.DoStopL" )
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiColorTone::DoStart
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiColorTone::DoStartL( TAny* aAny )
+    {
+    __VTPRINTENTER( "CVtUiColorTone.DoStart" )
+    CVtUiColorTone* self = static_cast< CVtUiColorTone* >( aAny );
+    self->CVtUiPrefSettingListBase::StartSettingPageL();
+    self->iFeatureManager.UiStates().SetIsCommandActivating( EFalse );
+    __VTPRINTEXIT( "CVtUiColorTone.DoStart" )
+    return KErrNone;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/prefs/cvtuicontrast.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,100 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  implementation.
+*
+*/
+
+
+#include    <cvtlogger.h>
+#include    "cvtuicontrast.h"
+#include    "tvtuifeatureids.h"
+#include    "cvtuicontrastpopup.h"
+#include    "cvtuipopupbase.h"
+#include    "videotelui.hrh"
+#include    "cvtuifeaturemanager.h"
+#include    "tvtuistates.h"
+
+// ---------------------------------------------------------------------------
+// CVtUiContrast::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiContrast* CVtUiContrast::NewL( CVtUiFeatureManager&
+    aFeatureManager )
+    {
+    __VTPRINTENTER( "CVtUiContrast.NewL" )
+    CVtUiContrast* self =
+        new ( ELeave ) CVtUiContrast( aFeatureManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    __VTPRINTEXIT( "CVtUiContrast.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiContrast::~CVtUiContrast
+// ---------------------------------------------------------------------------
+//
+CVtUiContrast::~CVtUiContrast()
+    {
+    __VTPRINTENTER( "CVtUiContrast.~" )
+    __VTPRINTEXIT( "CVtUiContrast.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiContrast::StartL
+// ---------------------------------------------------------------------------
+//
+void CVtUiContrast::StartL()
+    {
+    __VTPRINTENTER( "CVtUiContrast.StartL" )  
+    CVtUiPrefSliderBase::StartL();
+    iFeatureManager.UiStates().SetContrastModeOn( ETrue );
+    __VTPRINTEXIT( "CVtUiContrast.StartL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiContrast::Stop
+// ---------------------------------------------------------------------------
+//
+void CVtUiContrast::Stop()
+    {
+ 		__VTPRINTENTER( "CVtUiContrast.Stop" )    	
+    CVtUiPrefSliderBase::Stop();
+    iFeatureManager.UiStates().SetContrastModeOn( EFalse );
+    __VTPRINTEXIT( "CVtUiContrast.Stop" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiContrast::CVtUiContrast
+// ---------------------------------------------------------------------------
+//
+CVtUiContrast::CVtUiContrast( CVtUiFeatureManager& aFeatureManager )
+    : CVtUiPrefSliderBase( aFeatureManager, EVtUiFeatureIdContrast )
+    {
+    __VTPRINTENTER( "CVtUiContrast.CVtUiContrast" )
+    __VTPRINTEXIT( "CVtUiContrast.CVtUiContrast" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiContrast::CVtUiContrast
+// ---------------------------------------------------------------------------
+//
+void CVtUiContrast:: ConstructL()
+    {
+    __VTPRINTENTER( "CVtUiContrast.ConstructL" )
+    BaseConstructL();
+    SetPopup( CVtUiContrastPopup::NewL( iFeatureManager ) );
+    __VTPRINTEXIT( "CVtUiContrast.ConstructL" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/prefs/cvtuicontrastpopup.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,102 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of Contrast popup
+*
+*/
+
+
+
+#include    <AknVolumePopup.h>
+#include    "cvtuicontrastpopup.h"
+#include    <cvtlogger.h>
+#include	"tvtuilocalvariation.h"
+#include    <mvtengmedia.h>
+#include    "mvtuicomponent.h"
+#include    "CVtUiAppUi.h"
+#include    <videotelui.mbg>
+#include    <mvtengcamerapreferences.h>
+
+// ---------------------------------------------------------------------------
+// CVtUiContrastPopup::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiContrastPopup* CVtUiContrastPopup::NewL( CVtUiFeatureManager&
+    aFeatureManager )
+    {
+    __VTPRINTENTER( "CVtUiContrastPopup.NewL" )
+    CVtUiContrastPopup* self =
+        new ( ELeave ) CVtUiContrastPopup( aFeatureManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    __VTPRINTEXIT( "CVtUiContrastPopup.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiContrastPopup::~CVtUiContrastPopup
+// ---------------------------------------------------------------------------
+//
+CVtUiContrastPopup::~CVtUiContrastPopup()
+    {
+    __VTPRINTENTER( "CVtUiContrastPopup.~" )
+    __VTPRINTEXIT( "CVtUiContrastPopup.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiContrastPopup::CurrentValue
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiContrastPopup::CurrentValue()
+    {
+    __VTPRINTENTER( "CVtUiContrastPopup.CurrentValue" )
+    // ask from engine current value
+    TInt value;
+    if ( iCameraPref->GetContrast( value) )
+        {
+        __VTPRINTEXIT( "CVtUiContrastPopup.CurrentValueERR" )
+        return 0;
+        }
+    __VTPRINTEXIT( "CVtUiContrastPopup.CurrentValue" )
+    return value;
+    }    
+
+// ---------------------------------------------------------------------------
+// CVtUiContrastPopup::CVtUiContrastPopup
+// ---------------------------------------------------------------------------
+//
+CVtUiContrastPopup::CVtUiContrastPopup( CVtUiFeatureManager& aFeatureManager )
+    : CVtUiPrefPopupBase( aFeatureManager, TVtUiBlockListBitField(
+        MVtUiComponent::EComponentIdDialer |
+        MVtUiComponent::EComponentIdToolbar |
+        MVtUiComponent::EComponentIdNumberEntry |
+        MVtUiComponent::EComponentIdVolume |
+        MVtUiComponent::EComponentIdZoom |
+        MVtUiComponent::EVComponentIdBrightness ), EVComponentIdContrast,
+        KVtEngSetContrast ) 
+    {
+    __VTPRINTENTER( "CVtUiContrastPopup.CVtUiContrastPopup" )
+    __VTPRINTEXIT( "CVtUiContrastPopup.CVtUiContrastPopup" )
+    }
+    
+// ---------------------------------------------------------------------------
+// CVtUiContrastPopup::CVtUiContrastPopup
+// ---------------------------------------------------------------------------
+//
+void CVtUiContrastPopup::ConstructL()
+    {
+    __VTPRINTENTER( "CVtUiContrastPopup.ConstructL" )
+    BaseConstructL();
+    __VTPRINTEXIT( "CVtUiContrastPopup.ConstructL" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/prefs/cvtuiprefpopupbase.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,189 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of base class for video preference popups
+*
+*/
+
+
+#include    <cvtlogger.h>
+#include    <mvtengcamerapreferences.h>
+#include    <cvtengmodel.h>
+
+#include    "cvtuiprefpopupbase.h"
+#include    "mvtuicomponentmanager.h"
+#include    "mvtuicomponentstateobserver.h"
+#include    "cvtuifeaturemanager.h"
+#include    "CVtUiAppUi.h"
+
+// Number of steps
+static const TInt KStepCount = 20;
+
+// Slider min value
+static const TInt KSLiderMinValue = -100;
+
+// Slider min value
+static const TInt KSLiderDefaultValue = 0;
+
+// Slider max value
+static const TInt KSLiderMaxValue = 100;
+
+// Min adjust value
+static const TInt KMinAdjustValue = 0;
+
+// Max adjust value
+static const TInt KMaxAdjustValue = 20;
+
+// default time out time for zoom popup
+const TInt KDefaultPrefTimeOutTime = 5;  
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefPopupBase::~CVtUiPrefPopupBase
+// ---------------------------------------------------------------------------
+//
+CVtUiPrefPopupBase::~CVtUiPrefPopupBase()
+    {
+    __VTPRINTENTER( "CVtUiPrefPopupBase.~CVtUiPrefPopupBase" )
+    __VTPRINTEXIT( "CVtUiPrefPopupBase.~CVtUiPrefPopupBase" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefPopupBase::HandleControlEventL()
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrefPopupBase::HandleControlEventL(
+    CCoeControl* aControl,TCoeEvent aEventType )
+    {
+    __VTPRINTENTER( "CVtUiPrefPopupBase.HandleControlEventL" )
+    CVtUiPopupBase::HandleControlEventL( aControl, aEventType );
+    if ( aEventType == EEventStateChanged )
+        {
+        const TInt value( Value() );
+        if ( value != iCurrent )
+            {
+            __VTPRINT( DEBUG_GEN, "CVtUiPrefPopupBase.OfferKeyEventL  value != current " )
+            iCurrent = value;
+             __VTPRINT2( DEBUG_GEN, "CVtUiPrefPopupBase.HandleControlEventL  = %d", ScaledValue() )
+            AdjustVideoL( ScaledValue() );
+            }
+        }
+    
+    __VTPRINTEXIT( "CVtUiPrefPopupBase.HandleControlEventL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefPopupBase::UpdatePopupL()
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrefPopupBase::UpdatePopupL()
+    {
+    __VTPRINTENTER( "CVtUiPrefPopupBase.UpdatePrefPopupL" )
+    
+    AdjustVideoL( ScaledValue() );
+    
+    __VTPRINTEXIT( "CVtUiPrefPopupBase.UpdatePrefPopupL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefPopupBase::OfferKeyEventL()
+// ---------------------------------------------------------------------------
+//
+TKeyResponse CVtUiPrefPopupBase::OfferKeyEventL( const TKeyEvent& aEvent, 
+        TEventCode aCode )
+    {
+    __VTPRINTENTER( "CVtUiPrefPopupBase.OfferKeyEventL" )
+    TKeyResponse response = 
+        CVtUiPopupBase::OfferKeyEventL( aEvent, aCode );
+    
+    if ( response == EKeyWasConsumed )
+        {
+        AdjustVideoL( ScaledValue() );
+        }
+    
+    __VTPRINTEXIT( "CVtUiPrefPopupBase.OfferKeyEventL" )
+    return response;
+    }
+
+// CVtUiPrefPopupBase::AdjustVideoL()
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrefPopupBase::AdjustVideoL( TInt aValue )
+    {
+    __VTPRINTENTER( "CVtUiPrefPopupBase.AdjustVideoL" )
+    // cast the parameter
+    TPtrC8 params( reinterpret_cast< TUint8* >( &aValue ), sizeof( TInt ) );
+
+    // Adjust Contrast
+    iFeatureManager.AppUi().DoExecuteCmdL( iEngineCommandId, &params );
+    __VTPRINTEXIT( "CVtUiPrefPopupBase.AdjustVideoL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefPopupBase::DoActivateL()
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrefPopupBase::DoActivateL()
+    {
+    __VTPRINTENTER( "CVtUiPrefPopupBase.DoActivateL" )
+    CVtUiPopupBase::DoActivateL();
+    // Set current value
+    __VTPRINT2( DEBUG_GEN, "CVtUiPrefPopupBase.DoActivateL  = %d", CurrentValue() )
+    ScaleAndSetValue( CurrentValue() );
+    AdjustVideoL( ScaledValue() );
+    __VTPRINTEXIT( "CVtUiPrefPopupBase.DoActivateL" )
+    }
+
+// CVtUiPrefPopupBase::CVtUiPrefPopupBase
+// ---------------------------------------------------------------------------
+//
+CVtUiPrefPopupBase::CVtUiPrefPopupBase( CVtUiFeatureManager& aFeatureManager,
+  TVtUiBlockListBitField aBitField, TComponentId aComponentId, TInt aCmdId  ) :
+    CVtUiPopupBase( aFeatureManager.ComponentManager(), aBitField,
+    aComponentId ),  iFeatureManager( aFeatureManager ),
+    iEngineCommandId ( aCmdId )
+    {
+    __VTPRINTENTER( "CVtUiPrefPopupBase.CVtUiPrefPopupBase" )
+    __VTPRINTEXIT( "CVtUiPrefPopupBase.CVtUiPrefPopupBase" )
+    }
+
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefPopupBase::BaseConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrefPopupBase::BaseConstructL()
+    {
+    __VTPRINTENTER( "CVtUiPrefPopupBase.BaseConstructL" )
+    CVtUiPopupBase::BaseConstructL();
+    // Get camera preferences extension.
+    iCameraPref = static_cast<MVtEngCameraPreferences*> ( iFeatureManager.
+        AppUi().Model().Extension( KVtEngExtensionCameraPreferences ) );
+
+    // Set range and step count for the slider
+    SetAdjustRange( KMinAdjustValue, KMaxAdjustValue, KStepCount );
+    
+    // Set value range to baseclass
+    // range  e.g. 0-20
+    SetMinAndMaxValues( KSLiderMinValue , KSLiderMaxValue );
+    
+    // Set slider type to percentage
+    SetValueType( EAknSliderValuePercentage );
+    
+    // Set default value
+    ScaleAndSetValue( KSLiderDefaultValue );
+    
+    // Set timeout
+    SetTimeOut( KDefaultPrefTimeOutTime );
+    
+    __VTPRINTEXIT( "CVtUiPrefPopupBase.BaseConstructL" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/prefs/cvtuiprefsettinglistbase.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,406 @@
+/*
+* 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:  Softkey UI feature implementation.
+*
+*/
+
+
+#include    <cvtengmodel.h>
+#include    <mvtengcamerapreferences.h>
+#include    <eikenv.h>
+#include    <cvtlogger.h>
+#include    <avkon.hrh>
+#include    <akntoolbar.h>
+
+#include    "cvtuiprefsettinglistbase.h"
+#include    "CVtUiAppUi.h"
+#include    "cvtuitransparentsettingpage.h"
+#include    "CVtUiMainControl.h"
+#include    "CVtUiContextControl.h"
+#include    "CVtUiRemoteVideoControl.h"
+#include    "cvtuifeaturemanager.h"
+#include    "VtUiLayout.h"
+#include    "CVtUiEndCallButtonPane.h"
+
+#include    <layoutmetadata.cdl.h>
+
+// constants
+static const TInt KMaxNumberOfArrayItems = 5;
+static const TInt KMaxNumberOfActiveItems = 5;
+static const TInt KOrdinalPositionBase = 4;
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefSettingListBase::~CVtUiPrefSettingListBase
+// ---------------------------------------------------------------------------
+// 
+CVtUiPrefSettingListBase::~CVtUiPrefSettingListBase()
+    {
+    __VTPRINTENTER( "CVtUiPrefSettingListBase.~CVtUiPrefSettingListBase" )
+    delete iViewfinderBitmap;
+    delete iSettingPage;
+    iActiveItems.Close();
+    __VTPRINTEXIT( "CVtUiPrefSettingListBase.~CVtUiPrefSettingListBase" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefSettingListBase::InitFeatureL
+// ---------------------------------------------------------------------------
+// 
+void CVtUiPrefSettingListBase::InitFeatureL()
+    {
+    __VTPRINTENTER( "CVtUiPrefSettingListBase.InitFeatureL" )
+    ResizeBackroundBitmapRect();
+    __VTPRINTEXIT( "CVtUiPrefSettingListBase.InitFeatureL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefSettingListBase::IsPendingCmd
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiPrefSettingListBase::IsPendingCmd()
+    {
+    return iPendingSettingChangeCmd;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefSettingListBase::HandlePendingCmd
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrefSettingListBase::HandlePendingCmdL()
+    {
+    SettingPageItemChangedL( iOriginalSelection );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefSettingListBase::HandleSettingPageEventL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrefSettingListBase::HandleSettingPageEventL(
+    CAknSettingPage* /*aSettingPage*/, TAknSettingPageEvent aEventType )
+    {
+    __VTPRINTENTER( "CVtUiPrefSettingListBase.HandleSettingPageEventL" )
+    const TInt currentItem = iSettingPage->ListBoxControl()->CurrentItemIndex();      
+    switch ( aEventType )
+        {
+        case EEventSettingCancelled:
+             {
+             if ( iOriginalSelection != currentItem )
+                {
+                // Set back to orginal selection
+                SettingPageItemChangedL( iOriginalSelection );
+                iCurrentSelection = iOriginalSelection;
+                }
+             Stop();
+             break;   
+             }     
+         case EEventSettingChanged:
+             {
+             SettingPageItemChangedL( currentItem );
+             iOriginalSelection = currentItem;
+             Stop();
+             break;
+             }
+         case EEventSettingOked:
+             {
+             // Check if the current selection has changed
+             if ( iOriginalSelection != currentItem )
+                 {       
+                 SettingPageItemChangedL( currentItem );
+                 iOriginalSelection = currentItem;
+                 iCurrentSelection = currentItem;
+                 }                 
+             Stop();                 
+             break;
+             }
+         default:
+             break;
+        }
+    __VTPRINTEXIT( "CVtUiPrefSettingListBase.HandleSettingPageEventL" )        
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefSettingListBase::ListStateChangedL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrefSettingListBase::ListStateChangedL()
+    {
+    __VTPRINTENTER( "CVtUiPrefSettingListBase.ListStateChangedL" )
+    // Check if new item is focused in the selection list
+    
+    const TInt currentItem = iSettingPage->ListBoxControl()->CurrentItemIndex();
+    if ( iCurrentSelection != currentItem )
+        {
+        // Update current selection
+        iCurrentSelection = currentItem;
+        // Adjust frame
+        SettingPageItemChangedL( currentItem );    
+        }    
+    __VTPRINTEXIT( "CVtUiPrefSettingListBase.ListStateChangedL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefSettingListBase::StartSettingPageL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrefSettingListBase::StartSettingPageL()
+    {
+    __VTPRINTENTER( "CVtUiPrefSettingListBase.StartSettingPageL" )
+    // Swap image places if needed
+    iAppUi.SwitchViewFinderToMainPaneL();
+    
+    // Creates setting page first
+    CreateSettingPageL();
+    
+    // Sort controls window position
+    SortControlsWindowPoistion();
+
+    // Launch setting page.
+    iSettingPage->ExecuteLD( CAknSettingPage::EUpdateWhenAccepted, EFalse );
+    iSettingPage = NULL;
+    __VTPRINTEXIT( "CVtUiPrefSettingListBase.StartSettingPageL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefSettingListBase::StopSettingPageL
+//    
+//
+void CVtUiPrefSettingListBase::StopSettingPageL()
+    {
+    __VTPRINTENTER( "CVtUiPrefSettingListBase.StopSettingPageL" )
+    
+    if ( iSettingPage)
+        {
+        // Cancell the setting page
+        TKeyEvent keyEvent;
+        keyEvent.iCode =  EKeyEscape;
+        iSettingPage->OfferKeyEventL( keyEvent, EEventKey );
+        }
+    
+    // Sort controls window position
+    SortControlsWindowPoistion();
+    
+    // Swap image places if needed  
+    iAppUi.RestoreViewFinderL();
+    
+    __VTPRINTEXIT( "CVtUiPrefSettingListBase.StopSettingPageL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefSettingListBase::SizeChanged
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrefSettingListBase::SizeChanged()
+    {
+    __VTPRINTENTER( "CVtUiPrefSettingListBase.SizeChanged" )
+    ResizeBackroundBitmapRect();
+    // Set new coordinates and size
+    if( iSettingPage )
+        {
+        iSettingPage->SetBitmapPositionAndClipRect( iBitmapTopLeftCorner,
+            iBitmapClippingRect );
+        iSettingPage->HandleLayoutChangeL();
+        }
+    __VTPRINTEXIT( "CVtUiPrefSettingListBase.SizeChanged" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefSettingListBase::UpdateBackground
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrefSettingListBase::UpdateBackground( CFbsBitmap* aFrame )
+    {
+    __VTPRINTENTER( "CVtUiPrefSettingListBase.UpdateBackground" )
+    if ( aFrame )
+        {
+        // aFrame is valid only in this callback, the bitmap
+        // must be copied for use as the setting page background
+        iViewfinderBitmap->Duplicate( aFrame->Handle() );
+        if ( iSettingPage )
+            {
+            // Update background
+            iSettingPage->ChangeBackground( iViewfinderBitmap );
+            }
+        }
+    __VTPRINTEXIT( "CVtUiPrefSettingListBase.UpdateBackground" )        
+    }
+    
+// ---------------------------------------------------------------------------
+// CVtUiPrefSettingListBase::UpdateSettingL
+// ---------------------------------------------------------------------------
+// 
+void CVtUiPrefSettingListBase::UpdateSettingL()
+    {
+    // if no active items do nothing
+    if ( iActiveItems.Count() > 0 )
+        {
+        // user change the focuse in the list but not
+        // select it indeed
+        if( iOriginalSelection != iCurrentSelection )  
+            SettingPageItemChangedL( iCurrentSelection );
+        else
+        // yes,user has tapped down the OK button to choose a item
+            SettingPageItemChangedL( iOriginalSelection );        
+        }
+    }
+        
+// ---------------------------------------------------------------------------
+// CVtUiPrefSettingListBase::CVtUiPrefSettingListBase
+// ---------------------------------------------------------------------------
+//
+CVtUiPrefSettingListBase::CVtUiPrefSettingListBase( CVtUiFeatureManager&
+    aFeatureManager,  TVtUiFeatureId aFeatureId ) : CVtUiFeatureBase(
+    aFeatureId, aFeatureManager ), iActiveItems( KMaxNumberOfActiveItems ), 
+    iPendingSettingChangeCmd( EFalse ), iBitmapTopLeftCorner( 0, 0 ), 
+    iAppUi( aFeatureManager.AppUi() )
+    {
+    __VTPRINTENTER( "CVtUiPrefSettingListBase.CVtUiPrefSettingListBase" )   
+    __VTPRINTEXIT( "CVtUiPrefSettingListBase.CVtUiPrefSettingListBase" )
+    }
+
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefSettingListBase::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrefSettingListBase::ConstructL()
+    {
+    __VTPRINTENTER( "CVtUiPrefSettingListBase.ConstructL" )
+    BaseConstructL();
+    // Get camera preferences extension.
+    iCameraPref = static_cast<MVtEngCameraPreferences*> (iFeatureManager.
+        AppUi().Model().Extension( KVtEngExtensionCameraPreferences ) );
+    // Create backgound bitmap
+    iViewfinderBitmap = new ( ELeave ) CFbsBitmap();
+    __VTPRINTEXIT( "CVtUiPrefSettingListBase.ConstructL" )
+    }
+     
+// ---------------------------------------------------------------------------
+// CVtUiPrefSettingListBase::ReadAndAppendItemL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrefSettingListBase::ReadAndAppendItemL( CDesCArray& aItems,
+    TInt aResId )
+    {
+    __VTPRINTENTER( "CVtUiPrefSettingListBase.ReadAndAppendItemL" )
+    HBufC* text = iAppUi.GetEikonEnv()->AllocReadResourceLC( aResId );
+    aItems.AppendL( *text );
+    CleanupStack::PopAndDestroy(); // text
+    __VTPRINTEXIT( "CVtUiPrefSettingListBase.ReadAndAppendItemL" )
+    }    
+    
+// ---------------------------------------------------------------------------
+// CVtUiPrefSettingListBase::CreateSettingPageL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrefSettingListBase::CreateSettingPageL()
+    {
+    __VTPRINTENTER( "CVtUiPrefSettingListBase.CreateSettingPageL" )
+    CDesCArray* selectionArray = new ( ELeave ) 
+        CDesCArraySeg( KMaxNumberOfArrayItems );
+    CleanupStack::PushL( selectionArray );
+    // Set items must be called before CurrentSelection function
+    // Otherwise iActiveItems array is not populated
+    iActiveItems.Reset();
+    SetItemsL( *selectionArray );
+    TInt resourceId = SettingPageResId();
+    
+    // Current selection is needed when a new item is focused in the list
+    iCurrentSelection = iOriginalSelection;
+    TInt current( CurrentSelection() );
+    if ( !iSettingPage )
+        {
+        iSettingPage = new ( ELeave ) CVtUiTransparentSettingPage( resourceId,
+            iCurrentSelection, selectionArray );
+        iSettingPage->ConstructL();
+        iSettingPage->SetSettingPageObserver( this );
+        iSettingPage->SetSettingPageEventStateObserver( this );
+        }
+     CleanupStack::PopAndDestroy(); // selectionArray        
+     ResizeBackroundBitmapRect();
+     iSettingPage->SetBitmapPositionAndClipRect( iBitmapTopLeftCorner, 
+        iBitmapClippingRect );            
+    __VTPRINTEXIT( "CVtUiPrefSettingListBase.CreateSettingPageL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefSettingListBase::ShrinkBackroundBitmapRect
+// ---------------------------------------------------------------------------
+//    
+void CVtUiPrefSettingListBase::ResizeBackroundBitmapRect()
+    {
+    __VTPRINTENTER( "CVtUiPrefSettingListBase.ResizeBackroundBitmapRect" )
+    TRect parent( iAppUi.MainControl().Size() );
+    TAknWindowLineLayout rect;
+    TAknLayoutRect iStreamLayout;
+    VtUiLayout::GetSecondWindowStreamLayout( rect, ETrue );
+    iStreamLayout.LayoutRect( parent, rect );
+    
+    // In landscape rect from layout doesn't work 
+    // for some reason
+    if ( Layout_Meta_Data::IsLandscapeOrientation() )
+        {
+        iBitmapClippingRect = parent;
+        }
+    else
+        {
+        iBitmapClippingRect = iStreamLayout.Rect();
+        }
+    
+    iBitmapTopLeftCorner = iStreamLayout.Rect().iTl;
+    __VTPRINTEXIT( "CVtUiPrefSettingListBase.ResizeBackroundBitmapRect" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefSettingListBase::SortControlsWindowPoistion
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrefSettingListBase::SortControlsWindowPoistion()
+    {
+    TInt ordinalPos = KOrdinalPositionBase;
+    
+    if ( iSettingPage )
+        {
+        ordinalPos++;
+        }
+    
+    // Re-sort control's window position
+    iAppUi.MainControl().DrawableWindow()->SetOrdinalPosition( 
+        ordinalPos--, 
+        iAppUi.MainControl().DrawableWindow()->OrdinalPriority() );
+    
+    if ( iSettingPage )
+        {
+        iSettingPage->DrawableWindow()->SetOrdinalPosition(
+            ordinalPos--,
+            iSettingPage->DrawableWindow()->OrdinalPriority() );
+        }
+    
+    iAppUi.CurrentFixedToolbar()->DrawableWindow()->SetOrdinalPosition(
+        ordinalPos--,
+        iAppUi.CurrentFixedToolbar()->DrawableWindow()->OrdinalPriority() );
+    
+    iAppUi.ContextControl().DrawableWindow()->SetOrdinalPosition( 
+        ordinalPos--, 
+        iAppUi.ContextControl().DrawableWindow()->OrdinalPriority() );
+    
+    iAppUi.RemoteVideoControl().DrawableWindow()->SetOrdinalPosition(
+        ordinalPos--, 
+        iAppUi.RemoteVideoControl().DrawableWindow()->OrdinalPriority() );
+    
+    iAppUi.EndCallButtonPane().DrawableWindow()->SetOrdinalPosition(
+        ordinalPos--, 
+        iAppUi.EndCallButtonPane().DrawableWindow()->OrdinalPriority() );
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/prefs/cvtuiprefsliderbase.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,113 @@
+/*
+* 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:   Implementatin of base class for video pref sliders
+*
+*/
+
+
+#include    <cvtlogger.h>
+
+#include    "cvtuiprefsliderbase.h"
+#include    "cvtuifeaturemanager.h"
+#include    "mvtuicomponentmanager.h"
+#include    "CVtUiAppUi.h"
+#include    "mvtuicommandmanager.h"
+#include    "cvtuiprefpopupbase.h"
+
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefSliderBase::~CVtUiPrefSliderBase
+// ---------------------------------------------------------------------------
+//
+CVtUiPrefSliderBase::~CVtUiPrefSliderBase()
+    {
+    __VTPRINTENTER( "CVtUiPrefSliderBase.~CVtUiPrefSliderBase" )
+    __VTPRINTEXIT( "CVtUiPrefSliderBase.~CVtUiPrefSliderBase" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefSliderBase::StartL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrefSliderBase::StartL()
+    {
+    __VTPRINTENTER( "CVtUiPrefSliderBase.StartL" )
+    // call base class implementation
+    CVtUiSliderBase::StartL();
+
+    // Swap image places if needed
+    iFeatureManager.AppUi().SwitchViewFinderToMainPaneL();
+    
+    __VTPRINTEXIT( "CVtUiPrefSliderBase.StartL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefSliderBase::Stop
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrefSliderBase::Stop()
+    {
+    __VTPRINTENTER( "CVtUiPrefSliderBase.Stop" )
+    if ( iFeatureState == MVtUiFeature::EActive )
+        {
+        // call base class implementation
+        CVtUiSliderBase::Stop();
+
+        // Swap image places if needed
+        TRAP_IGNORE( iFeatureManager.AppUi().RestoreViewFinderL() );  
+        }
+    __VTPRINTEXIT( "CVtUiPrefSliderBase.Stop" )
+    }
+
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefSliderBase::InitFeatureL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrefSliderBase::InitFeatureL()
+    {
+    __VTPRINTENTER( "CVtUiPrefSliderBase.InitFeatureL" )
+    // call base class implementation
+    CVtUiSliderBase::InitFeatureL();
+    __VTPRINTEXIT( "CVtUiPrefSliderBase.InitFeatureL" )
+    }
+
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefSliderBase::CVtUiPrefSliderBase
+// ---------------------------------------------------------------------------
+//
+CVtUiPrefSliderBase::CVtUiPrefSliderBase( CVtUiFeatureManager& aFeatureManager,
+        TVtUiFeatureId aFeatureId  ) : CVtUiSliderBase(
+    aFeatureManager, aFeatureId )
+    {
+    __VTPRINTENTER( "CVtUiPrefSliderBase.CVtUiPrefSliderBase" )
+    __VTPRINTEXIT( "CVtUiPrefSliderBase.CVtUiPrefSliderBase" )
+    }
+
+
+// ---------------------------------------------------------------------------
+// CVtUiPrefSliderBase::BaseConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPrefSliderBase::BaseConstructL()
+    {
+    __VTPRINTENTER( "CVtUiPrefSliderBase.BaseConstructL" )
+    CVtUiSliderBase::BaseConstructL();
+    __VTPRINTEXIT( "CVtUiPrefSliderBase.BaseConstructL" )
+    }
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/prefs/cvtuitransparentsettingpage.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,206 @@
+/*
+* 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:  Transparent camera setting page.
+*
+*/
+
+
+
+#include "cvtuitransparentsettingpage.h"
+#include "mvtuisettingpageobserver.h"
+#include "VtUiLayout.h"
+#include <cvtlogger.h>
+#include <aknsettingpage.h>
+#include <aknlayoutscalable_apps.cdl.h>
+#include <layoutmetadata.cdl.h>
+
+
+/**
+*  CVtUiTransparentSettingPage
+*
+*  Transparent camera setting page. Extends class CAknTransparentCameraSettingPage
+*  with position related functionality.
+*
+*  @since S60 v3.2
+*/
+void CVtUiTransparentSettingPage::HandleLayoutChangeL()
+    {
+    GetTheLayoutData();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiTransparentSettingPage::CVtUiTransparentSettingPage
+// -----------------------------------------------------------------------------
+//
+CVtUiTransparentSettingPage::CVtUiTransparentSettingPage( TInt aResourceID, 
+     TInt& aCurrentSelectionIndex, const MDesCArray* aItemArray) :
+     CAknTransparentCameraSettingPage( aResourceID,
+     aCurrentSelectionIndex, aItemArray )
+     {
+     }
+
+// -----------------------------------------------------------------------------
+// CVtUiTransparentSettingPage::ConstructL
+// -----------------------------------------------------------------------------
+//            
+void CVtUiTransparentSettingPage::ConstructL()
+    {
+    CAknTransparentCameraSettingPage::ConstructL();
+    }
+    
+
+// -----------------------------------------------------------------------------
+// CVtUiTransparentSettingPage::~CVtUiTransparentSettingPage
+// -----------------------------------------------------------------------------
+//            
+CVtUiTransparentSettingPage::~CVtUiTransparentSettingPage()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::SetNumberEntryControlObserver
+// -----------------------------------------------------------------------------
+//
+void CVtUiTransparentSettingPage::SetSettingPageEventStateObserver( 
+    MVtUiSettingPageObserver* aObserver )
+    {
+    iSettingPageObserver = aObserver;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiTransparentSettingPage::GetTheLayoutData
+// -----------------------------------------------------------------------------
+//
+void CVtUiTransparentSettingPage::GetTheLayoutData()
+    {
+    // Varieties
+    TInt labelVariety = 6;
+    TInt listboxVariety = 6;
+
+    if ( Layout_Meta_Data::IsLandscapeOrientation() )
+        {
+        labelVariety = 5;
+        listboxVariety = 5;
+        }
+       
+    // Rect for label and shadow text   
+    TRect labelRect = RectFromLayout( AknLayoutScalable_Apps::
+       aid_placing_vt_set_title( labelVariety ) );
+    
+    // Rect for listbox control
+    TRect listBoxRect = RectFromLayout( AknLayoutScalable_Apps::
+        aid_placing_vt_set_content( listboxVariety ) );
+   
+     // Get text label from parent class
+    CEikLabel* textLabel = TextLabel();
+   
+    // Set label's new positions
+    if ( textLabel )
+    	{
+    	textLabel->SetPosition( labelRect.iTl );	
+    	}
+    
+    // Get shadow text from parent class
+    CEikLabel* shadowText = ShadowText();
+   
+    // Set shadow text's new positions if shadow text exists
+    if( shadowText )
+        {
+        // This information should come from layout, but
+        // also AknSettingPage does the positioning in this way.
+        labelRect.Move( 1, 1 );
+        shadowText->SetPosition( labelRect.iTl );
+        }
+    
+    // Set new rect for listbox control
+    ListBoxControl()->SetRect( listBoxRect );
+    }
+    
+// -----------------------------------------------------------------------------
+// CVtUiTransparentSettingPage::DynamicInitL
+// -----------------------------------------------------------------------------
+//
+void CVtUiTransparentSettingPage::DynamicInitL()
+  {
+  	GetTheLayoutData();
+  }
+
+// -----------------------------------------------------------------------------
+// CVtUiTransparentSettingPage::HandleControlEventL
+// -----------------------------------------------------------------------------
+//
+void CVtUiTransparentSettingPage::HandleControlEventL( CCoeControl* /*aControl*/,
+    TCoeEvent aEventType )
+    {
+    __VTPRINTENTER( "CVtUiTransparentSettingPage.HandleControlEventL" )
+     if ( aEventType == EEventStateChanged )
+        {
+        if ( iSettingPageObserver )
+            {
+            iSettingPageObserver->ListStateChangedL();
+            }
+        __VTPRINT( DEBUG_GEN, " CVtUiTransparentSettingPage.EEventStateChanged" )
+        }
+    
+    __VTPRINTEXIT( "CVtUiTransparentSettingPage.HandleControlEventL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiTransparentSettingPage::HandleResourceChange
+// -----------------------------------------------------------------------------
+//
+void CVtUiTransparentSettingPage::HandleResourceChange(TInt aType)
+    {
+    CAknTransparentCameraSettingPage::HandleResourceChange(aType);
+    GetTheLayoutData();
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiTransparentSettingPage::RectFromLayout
+// -----------------------------------------------------------------------------
+// 
+TRect CVtUiTransparentSettingPage::RectFromLayout(
+    const TAknWindowComponentLayout& aComponentLayout ) const
+    {
+    __VTPRINTENTER( "CVtUiTransparentSettingPage.RectFromLayout" )
+      
+    TInt main_pane_variety( 0 );
+    if ( Layout_Meta_Data::IsLandscapeOrientation() )
+            {
+            main_pane_variety = 4;
+            }
+
+    TAknWindowComponentLayout layout1 =
+        AknLayoutScalable_Apps::main_pane( main_pane_variety );
+    TAknWindowComponentLayout layout2 =
+        AknLayoutScalable_Apps::main_video_tele_pane();
+
+    TAknWindowLineLayout layout =
+        TAknWindowComponentLayout::Compose(
+         TAknWindowComponentLayout::Compose( layout1, layout2 ), aComponentLayout ).
+            LayoutLine();
+    
+    TRect screen;
+    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screen );
+    TAknLayoutRect layoutRect;
+    layoutRect.LayoutRect( screen, layout );
+    
+    // setting page is window owning control and its position is relative to mainpane
+    // layotdata is instead relative to screen
+    TRect rect( layoutRect.Rect() ); 
+    rect.Move( -PositionRelativeToScreen() );
+    
+    __VTPRINTEXIT( "CVtUiTransparentSettingPage.RectFromLayout" ) 
+    return rect;
+   }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/prefs/cvtuivideoquality.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,441 @@
+/*
+* 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:  Video quality UI feature implementation.
+*
+*/
+
+
+#include    <badesca.h>
+#include    <AknIconArray.h>
+#include    <AknsUtils.h>
+#include    <StringLoader.h>
+#include    <aknlists.h>
+#include    <aknPopup.h>
+#include    <aknselectionlist.h>
+#include    <mvtengmedia.h>
+#include    <cvtengmodel.h>
+#include    <cvtlogger.h>
+
+#include    <videotelui.rsg>
+#include    "cvtuivideoquality.h"
+#include    "tvtuifeatureids.h"
+#include    "VtUiLayout.h"
+#include    "VtUiUtility.h"
+#include    "CVtUiAppUi.h"
+#include    "cvtuifeaturemanager.h"
+#include    "mvtuicomponentmanager.h"
+#include	"tvtuilocalvariation.h"
+#include    "tvtuistates.h"
+
+// constants
+_LIT( KVtUiFormatActive, "0\t%S" );
+_LIT( KVtUiFormatInactive, "\t%S" );
+const TInt KVtUiMaxListItemLength = 128;
+
+// Implementation of TVtUiVideoQualityComponentState
+
+// ---------------------------------------------------------------------------
+// TVtUiVideoQualityComponentState::TVtUiVideoQualityComponentState
+// ---------------------------------------------------------------------------
+//
+TVtUiVideoQualityComponentState::TVtUiVideoQualityComponentState(
+    MVtUiComponent& aComponent ) :
+    TVtUiComponentState( aComponent,
+        TVtUiBlockListBitField(
+            MVtUiComponent::EComponentIdDialer |
+            MVtUiComponent::EComponentIdNumberEntry ) )
+    {
+    __VTPRINTENTER( "TVtUiVideoQualityComponentState.Ctor" )
+    __VTPRINTEXIT( "TVtUiVideoQualityComponentState.Ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiVideoQuality* CVtUiVideoQuality::NewL( CVtUiFeatureManager&
+    aFeatureManager )
+    {
+    __VTPRINTENTER( "CVtUiVideoQuality.NewL" )
+    CVtUiVideoQuality* self =
+        new ( ELeave ) CVtUiVideoQuality( aFeatureManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    __VTPRINTEXIT( "CVtUiVideoQuality.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::~CVtUiVideoQuality
+// ---------------------------------------------------------------------------
+//
+CVtUiVideoQuality::~CVtUiVideoQuality()
+    {
+    __VTPRINTENTER( "CVtUiVideoQuality.~CVtUiVideoQuality" )
+    
+	// Delete the callback
+    delete iShowSelectionListCallback;
+    
+    // unregister component
+    iFeatureManager.ComponentManager().ChangeComponentRegistration(
+        iComponentState, MVtUiComponentManager::EUnregister );
+
+    __VTPRINTEXIT( "CVtUiVideoQuality.~CVtUiVideoQuality" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::StartL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoQuality::StartL()
+    {
+    __VTPRINTENTER( "CVtUiVideoQuality.StartL" )
+    if ( iFeatureState == MVtUiFeature::EReady )
+        {
+        iFeatureManager.UiStates().SetIsFixedToolbarVisible( EFalse );
+        iFeatureManager.ComponentManager().
+            RequestActivationL ( MVtUiComponent::EComponentIdVideoQuality );
+        // set state
+        iFeatureState  = MVtUiFeature::EActive;
+        }
+    __VTPRINTEXIT( "CVtUiVideoQuality.StartL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::Stop
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoQuality::Stop()
+    {
+    __VTPRINTENTER( "CVtUiVideoQuality.Stop" )
+    TRAP_IGNORE(
+        {
+        if ( iFeatureState  == MVtUiFeature::EActive )
+            {
+            iFeatureManager.ComponentManager().
+            DeActivateComponentL ( MVtUiComponent::EComponentIdVideoQuality );
+            // set state
+            iFeatureState = MVtUiFeature::EReady;
+            }
+        } );
+    __VTPRINTEXIT( "CVtUiVideoQuality.Stop" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::InitFeatureL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoQuality::InitFeatureL()
+    {
+    __VTPRINTENTER( "CVtUiVideoQuality.InitFeatureL" )
+    // register component to conponent manager
+    User::LeaveIfError(
+       iFeatureManager.ComponentManager().ChangeComponentRegistration(
+       iComponentState, MVtUiComponentManager::ERegister ) );
+    iFeatureState  = EReady;
+    __VTPRINTEXIT( "CVtUiVideoQuality.InitFeatureL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::ComponentId
+// ---------------------------------------------------------------------------
+//
+MVtUiComponent::TComponentId CVtUiVideoQuality::ComponentId() const
+    {
+    __VTPRINTENTER( "CVtUiVideoQuality.ComponentId" )
+    __VTPRINTEXIT( "CVtUiVideoQuality.ComponentId" )
+    return MVtUiComponent::EComponentIdVideoQuality;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::ComponentAsControl
+// ---------------------------------------------------------------------------
+//
+CCoeControl* CVtUiVideoQuality::ComponentAsControl()
+    {
+    __VTPRINTENTER( "CVtUiWhiteBalance.ComponentAsControl" )
+    __VTPRINTEXIT( "CVtUiVideoQuality.ComponentAsControl" )
+    return NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::DoActivateL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoQuality::DoActivateL()
+    {
+    __VTPRINTENTER( "CVtUiVideoQuality.DoActivateL" )
+    __VTPRINTEXIT( "CVtUiVideoQuality.DoActivateL" )
+    iFeatureManager.UiStates().SetVideoQualityModeOn( ETrue );
+    iShowSelectionListCallback->CallBack();
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::DoDeactivateL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoQuality::DoDeactivateL()
+    {
+    __VTPRINTENTER( "CVtUiVideoQuality.DoDeactivateL" )
+    iFeatureManager.UiStates().SetVideoQualityModeOn( EFalse );
+    __VTPRINTEXIT( "CVtUiVideoQuality.DoDeactivateL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::CreateIconLC
+// ---------------------------------------------------------------------------
+//
+CGulIcon* CVtUiVideoQuality::CreateIconLC( TVtUiBitmapId aIconId,
+    TVtUiBitmapId aMaskId )
+    {
+    __VTPRINTENTER( "CVtUiVideoQuality.CreateIconLC" )
+    TFileName fileName;
+    TInt bitmapIndex;
+    TInt bitmapMaskIndex;
+	CFbsBitmap* newIconBmp;
+	CFbsBitmap* newIconMaskBmp;
+    VtUiLayout::Resolve( aIconId, fileName, bitmapIndex );
+    TAknsItemID skinId = VtUiLayout::MapBitmapToSkinId( aIconId );
+    VtUiLayout::Resolve( aMaskId, fileName, bitmapMaskIndex );
+	AknsUtils::CreateIconL( AknsUtils::SkinInstance(), skinId, newIconBmp,
+            newIconMaskBmp, fileName, bitmapIndex, bitmapMaskIndex );
+    CleanupStack::PushL( newIconBmp );
+    CleanupStack::PushL( newIconMaskBmp );
+	CGulIcon* gulIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp );
+    CleanupStack::Pop( newIconMaskBmp );
+    CleanupStack::Pop( newIconBmp );
+    CleanupStack::PushL( gulIcon );
+    __VTPRINTEXIT( "CVtUiVideoQuality.CreateIconLC" )
+    return gulIcon;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::ShowSelectionListL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoQuality::ShowSelectionListL()
+    {
+    __VTPRINTENTER( "CVtUiVideoQuality.ShowSelectionListL" )
+    // create listbox
+    CAknSingleGraphicPopupMenuStyleListBox* listBox =
+        new ( ELeave ) CAknSingleGraphicPopupMenuStyleListBox();
+    CleanupStack::PushL( listBox );
+
+    // create popuplist
+    CAknPopupList* popUpList =
+        CAknPopupList::NewL( listBox, R_VIDEOTELUI_SOFTKEYS_SELECT_CANCEL );
+    CleanupStack::PushL( popUpList );
+
+    listBox->ConstructL( popUpList,
+        EAknListBoxSelectionList | EAknListBoxLoopScrolling );
+
+    // Create an array of icons, reading them from the file and
+    // set them in the listbox
+	CArrayPtr<CGulIcon>* icons = new(ELeave) CAknIconArray( 1 );
+	CleanupStack::PushL(icons);
+	CGulIcon* icon = CreateIconLC( EVtUiBitmap_qgn_prop_sub_current,
+        EVtUiBitmap_qgn_prop_sub_current_mask );
+    icons->AppendL( icon );
+	listBox->ItemDrawer()->ColumnData()->SetIconArray( icons );
+	CleanupStack::Pop(2); //icon + icons
+
+    // Read item array from resources
+    CDesCArray* textArray =
+        iFeatureManager.AppUi().GetEikonEnv()->
+            ReadDesCArrayResourceL( R_VIDEOTELUI_VIDEO_QUALITY_ARRAY );
+    CleanupStack::PushL( textArray );
+
+    CDesCArraySeg* listBoxRows =  new ( ELeave ) CDesCArraySeg( 3 );
+    CleanupStack::PushL( listBoxRows );
+
+    // Read items to array
+    SetItemsL( *listBoxRows, *textArray );
+
+    // Create listbox model.
+    CTextListBoxModel* listBoxModel = listBox->Model();
+    // Set item array
+    listBoxModel->SetItemTextArray( listBoxRows );
+
+    // Set ownership
+    listBoxModel->SetOwnershipType( ELbmOwnsItemArray );
+
+    // Enable marquee
+	listBox->ItemDrawer()->ColumnData()->EnableMarqueeL( ETrue );
+
+    CleanupStack::Pop(2); // listBoxRows + testArray
+
+    TInt popupOk = popUpList->ExecuteLD();
+
+    CleanupStack::Pop(); // popUpList
+    popUpList = NULL;
+
+    if ( popupOk )
+        {
+        ItemSelectedL( listBox->CurrentItemIndex() );
+        }
+    else
+        {
+        // Selection canceled.
+        }
+
+    // Reset arrays
+    listBoxRows->Reset();
+    textArray->Reset();
+    icons->ResetAndDestroy(); // icons + icon
+
+    // Delete listbox
+    CleanupStack::PopAndDestroy( listBox ); // listBox
+
+    iAsyncCallback->Set( TCallBack( &DoStop, this ) );
+    iAsyncCallback->CallBack();
+    __VTPRINTEXIT( "CVtUiVideoQuality.ShowSelectionListL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::AsyncShowSelectionListL
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiVideoQuality::AsyncShowSelectionList( TAny* aPtr )
+    {
+    CVtUiVideoQuality* self = reinterpret_cast< CVtUiVideoQuality* > ( aPtr );
+    TRAPD( err, self->ShowSelectionListL() );
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::SetItemsL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoQuality::SetItemsL( CDesCArray& aTarget,
+    const CDesCArray& aSource )
+    {
+    __VTPRINTENTER( "CVtUiVideoQuality.SetItemsL" )
+    TInt activeItem( ActiveItem() );
+    TInt count( aSource.Count() );
+    for ( TInt i = 0; i < count; i++ )
+        {
+        TBuf< KVtUiMaxListItemLength > item;
+        TPtrC sourceItem( aSource[ i ] );
+        if ( i == activeItem )
+            {
+            item.Format( KVtUiFormatActive(), &sourceItem );
+            }
+        else
+            {
+            item.Format( KVtUiFormatInactive(), &sourceItem );
+            }
+        aTarget.AppendL( item );
+        }
+    __VTPRINTEXIT( "CVtUiVideoQuality.SetItemsL" )
+    }
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::ActiveItem
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiVideoQuality::ActiveItem() const
+    {
+    __VTPRINTENTER( "CVtUiVideoQuality.ActiveItem" )
+    TInt activeItem( 0 );
+    MVtEngMedia::TVideoQuality videoQuality;
+    VtUiUtility::GetVideoQuality(  iFeatureManager.AppUi().Model().Media(),
+        videoQuality );
+    switch( videoQuality )
+        {
+    case MVtEngMedia::EVideoQualityNormal:
+        activeItem = 0;
+        break;
+    case MVtEngMedia::EVideoQualityDetail:
+        activeItem = 1;
+        break;
+    case MVtEngMedia::EVideoQualityMotion:
+        activeItem = 2;
+        break;
+    default:
+        break;
+        }
+    __VTPRINTEXIT( "CVtUiVideoQuality.ActiveItem" )
+    return activeItem;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::ItemSelectedL
+// ---------------------------------------------------------------------------
+//
+ void CVtUiVideoQuality::ItemSelectedL( TInt aItemIndex )
+    {
+    __VTPRINTENTER( "CVtUiVideoQuality.ItemSelectedL" )
+    MVtEngMedia::TVideoQuality qualityLevel;
+    switch( aItemIndex )
+        {
+    case 0:
+        qualityLevel = MVtEngMedia::EVideoQualityNormal;
+        break;
+
+    case 1:
+        qualityLevel = MVtEngMedia::EVideoQualityDetail;
+        break;
+
+    case 2:
+        qualityLevel = MVtEngMedia::EVideoQualityMotion;
+        break;
+    default:
+        break;
+        }
+    // cast the parameter
+    TPtrC8 params( reinterpret_cast< TUint8* >( &qualityLevel ),
+        sizeof( MVtEngMedia::TVideoQuality ) );
+    iFeatureManager.AppUi().DoExecuteCmdL( KVtEngSetVideoQuality, &params );
+    __VTPRINTEXIT( "CVtUiVideoQuality.ItemSelectedL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::CVtUiVideoQuality
+// ---------------------------------------------------------------------------
+//
+CVtUiVideoQuality::CVtUiVideoQuality( CVtUiFeatureManager& aFeatureManager ) :
+    CVtUiFeatureBase( EVtUiFeatureIdVideoQuality, aFeatureManager ),
+    iComponentState( *this )
+    {
+    __VTPRINTENTER( "CVtUiWhiteBalance.CVtUiVideoQuality" )
+    __VTPRINTEXIT( "CVtUiVideoQuality.CVtUiVideoQuality" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVideoQuality::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVideoQuality::ConstructL()
+    {
+    __VTPRINTENTER( "CVtUiVideoQuality.ConstructL" )
+    BaseConstructL();
+    iShowSelectionListCallback = new ( ELeave ) CAsyncCallBack(
+            TCallBack( &AsyncShowSelectionList, this ),
+            CActive::EPriorityStandard );
+    __VTPRINTEXIT( "CVtUiVideoQuality.ConstructL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiVideoQuality::DoStop
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiVideoQuality::DoStop( TAny* aAny )
+    {
+    __VTPRINTENTER( "CVtUiVideoQuality.DoStop" )
+    CVtUiFeatureBase* self = static_cast< CVtUiFeatureBase* >( aAny );
+    self->Stop();
+    __VTPRINTEXIT( "CVtUiVideoQuality.DoStop" )
+    return KErrNone;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/prefs/cvtuiwhitebalance.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,390 @@
+/*
+* Copyright (c) 2007 - 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:  White balance UI feature implementation.
+*
+*/
+
+
+#include    <mvtengmedia.h>
+#include    <cvtengmodel.h>
+#include    <mvtengcamerapreferences.h>
+#include    "cvtuiwhitebalance.h"
+#include    "tvtuifeatureids.h"
+#include    <videotelui.rsg>
+#include    <cvtlogger.h>
+#include    "mvtuicomponentmanager.h"
+#include    "cvtuifeaturemanager.h"
+#include    "CVtUiAppUi.h"
+#include	"tvtuilocalvariation.h"
+#include    "tvtuistates.h"
+#include    "cvtuifeaturemanager.h"
+#include    "cvtuicommandmanager.h"
+
+// Implementation of TVtUiWhiteBalanceComponentState
+
+// ---------------------------------------------------------------------------
+// TVtUiWhiteBalanceComponentState::TVtUiWhiteBalanceComponentState
+// ---------------------------------------------------------------------------
+//
+TVtUiWhiteBalanceComponentState::TVtUiWhiteBalanceComponentState(
+    MVtUiComponent& aComponent ) :
+    TVtUiComponentState( aComponent,
+        TVtUiBlockListBitField(
+            MVtUiComponent::EComponentIdToolbar |
+            MVtUiComponent::EComponentIdNumberEntry ) )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiWhiteBalance::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiWhiteBalance* CVtUiWhiteBalance::NewL( CVtUiFeatureManager&
+    aFeatureManager )
+    {
+    __VTPRINTENTER( "CVtUiWhiteBalance.NewL" )
+    CVtUiWhiteBalance* self =
+        new ( ELeave ) CVtUiWhiteBalance( aFeatureManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    __VTPRINTEXIT( "CVtUiWhiteBalance.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiWhiteBalance::~CVtUiWhiteBalance
+// ---------------------------------------------------------------------------
+//
+CVtUiWhiteBalance::~CVtUiWhiteBalance()
+    {
+    __VTPRINTENTER( "CVtUiWhiteBalance.~CVtUiWhiteBalance" )
+    // unregister layout change
+    iFeatureManager.ComponentManager().ChangeLayoutChangeRegistration(
+        *this, MVtUiComponentManager::EUnregister );
+     // unregister component
+    iFeatureManager.ComponentManager().ChangeComponentRegistration(
+        iComponentState, MVtUiComponentManager::EUnregister );
+    __VTPRINTEXIT( "CVtUiWhiteBalance.~CVtUiWhiteBalance" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiWhiteBalance::StartL
+// ---------------------------------------------------------------------------
+//
+void CVtUiWhiteBalance::StartL()
+    {
+    __VTPRINTENTER( "CVtUiWhiteBalance.StartL" )
+    if ( iFeatureState == MVtUiFeature::EReady )
+        {
+        iFeatureManager.AppUi().EnableCommandActivatingAndCleanupPushL();
+        iFeatureManager.UiStates().SetIsFixedToolbarVisible( EFalse );
+        iFeatureManager.ComponentManager().
+            RequestActivationL ( MVtUiComponent::EComponentIdWhiteBalance );
+        CleanupStack::Pop(); // EnableCommandActivatingAndCleanupPushL
+        // set state
+        iFeatureState = MVtUiFeature::EActive;
+        }
+    __VTPRINTEXIT( "CVtUiWhiteBalance.StartL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiWhiteBalance::Stop
+// ---------------------------------------------------------------------------
+//
+void CVtUiWhiteBalance::Stop()
+    {
+    __VTPRINTENTER( "CVtUiWhiteBalance.Stop" )
+    iAsyncCallback->Cancel();
+    iAsyncCallback->Set( TCallBack( &DoStopL, this ) );
+    iAsyncCallback->CallBack();
+    __VTPRINTEXIT( "CVtUiWhiteBalance.Stop" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiWhiteBalance::InitFeatureL
+// ---------------------------------------------------------------------------
+//
+void CVtUiWhiteBalance::InitFeatureL()
+    {
+    __VTPRINTENTER( "CVtUiWhiteBalance.InitFeatureL" )
+    CVtUiPrefSettingListBase::InitFeatureL();
+    User::LeaveIfError(
+       iFeatureManager.ComponentManager().ChangeComponentRegistration(
+       iComponentState, MVtUiComponentManager::ERegister ) );
+    User::LeaveIfError(
+       iFeatureManager.ComponentManager().ChangeLayoutChangeRegistration(
+       *this, MVtUiComponentManager::ERegister ) );
+    iFeatureState  = EReady;
+    __VTPRINTEXIT( "CVtUiWhiteBalance.InitFeatureL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiWhiteBalance::ComponentId
+// ---------------------------------------------------------------------------
+//
+MVtUiComponent::TComponentId CVtUiWhiteBalance::ComponentId() const
+    {
+    __VTPRINTENTER( "CVtUiWhiteBalance.ComponentId" )
+    __VTPRINTEXIT( "CVtUiWhiteBalance.ComponentId" )
+    return MVtUiComponent::EComponentIdWhiteBalance;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiWhiteBalance::ComponentAsControl
+// ---------------------------------------------------------------------------
+//
+CCoeControl* CVtUiWhiteBalance::ComponentAsControl()
+    {
+    __VTPRINTENTER( "CVtUiWhiteBalance.ComponentAsControl" )
+    __VTPRINTEXIT( "CVtUiWhiteBalance.ComponentAsControl" )
+    return NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiWhiteBalance::DoActivateL
+// ---------------------------------------------------------------------------
+//
+void CVtUiWhiteBalance::DoActivateL()
+    {
+    __VTPRINTENTER( "CVtUiWhiteBalance.DoActivateL" )
+    // get supported white balance modes
+    iCameraPref->GetSupportedWhiteBalanceModes( iSupportedModes );
+    __VTPRINT2( DEBUG_GEN,"CVtUiWhiteBalance.DoActivateL=%d", iSupportedModes )
+    iFeatureManager.UiStates().SetWhiteBalanceModeOn( ETrue );
+    iAsyncCallback->Cancel();
+    iAsyncCallback->Set( TCallBack( &DoStartL, this ) );
+    iAsyncCallback->CallBack();
+    __VTPRINTEXIT( "CVtUiWhiteBalance.DoActivateL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiWhiteBalance::DoDeactivateL
+// ---------------------------------------------------------------------------
+//
+void CVtUiWhiteBalance::DoDeactivateL()
+    {
+    __VTPRINTENTER( "CVtUiWhiteBalance.DoDeactivateL" )
+    iFeatureManager.UiStates().SetWhiteBalanceModeOn( EFalse );
+    CVtUiPrefSettingListBase::StopSettingPageL();
+    __VTPRINTEXIT( "CVtUiWhiteBalance.DoDeactivateL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiWhiteBalance::HandleLayoutChangeL
+// ---------------------------------------------------------------------------
+//
+void CVtUiWhiteBalance::HandleLayoutChangeL()
+    {
+     __VTPRINTENTER( "CVtUiWhiteBalance.HandleLayoutChangeL" )
+    if ( iFeatureState  == MVtUiFeature::EActive )
+        {
+        SizeChanged();
+        }
+    __VTPRINTEXIT( "CVtUiWhiteBalance.HandleLayoutChangeL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiWhiteBalance::CurrentSelection
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiWhiteBalance::CurrentSelection()
+    {
+    __VTPRINTENTER( "CVtUiWhiteBalance.CurrentSelection" )
+    // ask from engine which item is currently active
+    MVtEngCameraPreferences::TWhiteBalance wb;
+    if ( iCameraPref->GetWhiteBalance( wb ) )
+        {
+        __VTPRINT( DEBUG_GEN, "CurrentSelection::error" );
+        __VTPRINTEXIT( "CVtUiWhiteBalance.CurrentSelection" )
+        // if error occured return 0 i.e. first list item
+        return 0;
+        }
+    __VTPRINTEXIT( "CVtUiWhiteBalance.CurrentSelection" )
+    return MapWBEnumToArrayIndex( wb );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiWhiteBalance::SetItemsL
+// ---------------------------------------------------------------------------
+//
+void CVtUiWhiteBalance::SetItemsL( CDesCArray& aArray )
+    {
+    __VTPRINTENTER( "CVtUiWhiteBalance.SetItemsL" )
+    __VTPRINT2( DEBUG_GEN, "CVtUiWhiteBalance.SetItemsL=%d", iSupportedModes )
+    // Auto mode allways supported
+    ReadAndAppendItemL( aArray, R_VIDEOTELUI_QTN_INCAL_AUTOMATIC_OPTION );
+    iActiveItems.Append( MVtEngCameraPreferences::EAuto );
+
+    if( iSupportedModes & MVtEngCameraPreferences::EDaylight )
+        {
+        ReadAndAppendItemL( aArray, R_VIDEOTELUI_QTN_INCAL_SUNNY_OPTION );
+        iActiveItems.Append( MVtEngCameraPreferences::EDaylight );
+        }
+    if( iSupportedModes & MVtEngCameraPreferences::ECloudy )
+        {
+        ReadAndAppendItemL( aArray, R_VIDEOTELUI_QTN_INCAL_CLOUDY_OPTION );
+        iActiveItems.Append( MVtEngCameraPreferences::ECloudy );
+        }
+    if( iSupportedModes & MVtEngCameraPreferences::ETungsten )
+        {
+        ReadAndAppendItemL( aArray, R_VIDEOTELUI_QTN_INCAL_INCANDESCENT_OPTION );
+        iActiveItems.Append( MVtEngCameraPreferences::ETungsten );
+        }
+    if( iSupportedModes & MVtEngCameraPreferences::EFluorescent )
+        {
+        ReadAndAppendItemL( aArray, R_VIDEOTELUI_QTN_INCAL_FLUORESCENT_OPTION );
+        iActiveItems.Append( MVtEngCameraPreferences::EFluorescent );
+        }
+    __VTPRINTEXIT( "CVtUiWhiteBalance.SetItemsL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiWhiteBalance::SettingPageResId
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiWhiteBalance::SettingPageResId() const
+    {
+    __VTPRINTENTER( "CVtUiWhiteBalance.SettingPageResId" )
+    __VTPRINTEXIT( "CVtUiWhiteBalance.SettingPageResId" )
+    return R_VIDEOTELUI_WHITE_BALANCE_SETTING_PAGE;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiWhiteBalance::SettingPageItemChangedL
+// ---------------------------------------------------------------------------
+//
+void CVtUiWhiteBalance::SettingPageItemChangedL( TInt aIndex )
+    {
+    __VTPRINTENTER( "CVtUiWhiteBalance.SettingPageItemChangedL" )
+    __VTPRINT2( DEBUG_GEN, "CVtUiWhiteBalance.index=%d", aIndex )
+    if ( iFeatureManager.UiStates().ExecState() == TVtUiStates::EExecStateResetting )
+        {
+        __VTPRINTEXIT( "CVtUiWhiteBalance.SettingPageItemChangedL" )
+        return;
+        }
+    // Map index to right white balance value
+    MVtEngCameraPreferences::TWhiteBalance wb = MapArrayIndexToWBEnum( aIndex );
+
+    // cast the parameter
+    TPtrC8 params( reinterpret_cast< TUint8* >( &wb ),
+        sizeof( MVtEngCameraPreferences::TWhiteBalance ) );
+
+    // Adjust white balance
+    MVtEngMedia::TCameraId camId;
+    iFeatureManager.AppUi().Model().Media().GetCurrentCameraId(camId);
+
+    if( camId == MVtEngMedia::ESecondaryCamera  )
+        {            
+         iFeatureManager.AppUi().DoExecuteCmdL( KVtEngSetWhiteBalance, &params );        
+         iPendingSettingChangeCmd = EFalse;
+         }
+    else
+        iPendingSettingChangeCmd = ETrue;
+    __VTPRINTEXIT( "CVtUiWhiteBalance.SettingPageItemChangedL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiWhiteBalance::CVtUiWhiteBalance
+// ---------------------------------------------------------------------------
+//
+CVtUiWhiteBalance::CVtUiWhiteBalance( CVtUiFeatureManager& aFeatureManager )
+    : CVtUiPrefSettingListBase( aFeatureManager, EVtUiFeatureIdWhiteBalance ),
+    iComponentState( *this )
+    {
+    __VTPRINTENTER( "CVtUiWhiteBalance.CVtUiWhiteBalance" )
+    __VTPRINTEXIT( "CVtUiWhiteBalance.CVtUiWhiteBalance" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiWhiteBalance::MapWBEnumToArrayIndex
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiWhiteBalance::MapWBEnumToArrayIndex( MVtEngCameraPreferences::
+    TWhiteBalance& aWhiteBalance ) const
+    {
+     __VTPRINTENTER( "CVtUiWhiteBalance.MapWBEnumToArrayIndex" )
+    __VTPRINT2( DEBUG_GEN, "CVtUiWhiteBalance.cpunt=%d", iActiveItems.Count() )
+    for ( TInt i = 0; i < iActiveItems.Count(); ++i )
+         {
+         if ( iActiveItems [ i ] ==  aWhiteBalance  )
+             {
+             __VTPRINT2( DEBUG_GEN, "CVtUiWhiteBalance.index=%d", i )
+             __VTPRINTEXIT( "CVtUiWhiteBalance.MapWBEnumToArrayIndex" )
+             return i;
+             }
+         }
+     // not found
+     __VTPRINTEXIT( "CVtUiWhiteBalance.MapWBEnumToArrayIndexNF" )
+     return KErrNotFound;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiWhiteBalance::MapArrayIndexToWBEnum
+// ---------------------------------------------------------------------------
+//
+MVtEngCameraPreferences::TWhiteBalance CVtUiWhiteBalance::
+    MapArrayIndexToWBEnum( TInt aIndex) const
+    {
+     __VTPRINTENTER( "CVtUiWhiteBalance.MapArrayIndexToWBEnum" )
+     __VTPRINT2( DEBUG_GEN, "CVtUiWhiteBalance.index=%d", aIndex )
+    __VTPRINT2( DEBUG_GEN, "CVtUiWhiteBalance.count=%d", iActiveItems.Count() )
+    const TInt count = iActiveItems.Count();
+    if ( count > 0 && aIndex < count && aIndex >= 0 )
+        {
+        __VTPRINTEXIT( "CVtUiWhiteBalance.MapArrayIndexToWBEnum" )
+        return static_cast< MVtEngCameraPreferences::TWhiteBalance >
+            ( iActiveItems[ aIndex ] );
+        }
+    else // not valid index return first item in the list
+        {
+        __VTPRINTEXIT( "CVtUiWhiteBalance.MapArrayIndexToWBEnum_ERROR_INDEX" )
+        return static_cast< MVtEngCameraPreferences::TWhiteBalance >
+            ( iActiveItems[ 0 ] );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiWhiteBalance::DoStop
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiWhiteBalance::DoStopL( TAny* aAny )
+    {
+    __VTPRINTENTER( "CVtUiWhiteBalance.DoStopL" )
+    CVtUiWhiteBalance* self = static_cast< CVtUiWhiteBalance* >( aAny );
+    if ( self->iFeatureState == MVtUiFeature::EActive )
+        {
+        __VTPRINT( DEBUG_GEN, "CVtUiWhiteBalance::Stop1" );
+        self->iFeatureManager.ComponentManager().
+            DeActivateComponentL ( MVtUiComponent::EComponentIdWhiteBalance );
+        // set state
+        self->iFeatureState = MVtUiFeature::EReady;
+        }
+    __VTPRINTEXIT( "CVtUiWhiteBalance.DoStopL" )
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiWhiteBalance::DoStart
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiWhiteBalance::DoStartL( TAny* aAny )
+    {
+    __VTPRINTENTER( "CVtUiWhiteBalance.DoStart" )
+    CVtUiWhiteBalance* self = static_cast< CVtUiWhiteBalance* >( aAny );
+    self->CVtUiPrefSettingListBase::StartSettingPageL();
+    self->iFeatureManager.UiStates().SetIsCommandActivating( EFalse );
+    __VTPRINTEXIT( "CVtUiWhiteBalance.DoStart" )
+    return KErrNone;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/softkey/cvtuisoftkeycontext.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,86 @@
+/*
+* 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:  Sofkey context class implementation.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "cvtuisoftkeycontext.h"
+
+/** Softkey context reference priority */
+const TInt KVtUiSoftkeyContextPriority = 200;
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeyContext::~CVtUiSoftkeyContext
+// ---------------------------------------------------------------------------
+//
+CVtUiSoftkeyContext::~CVtUiSoftkeyContext()
+    {
+    __VTPRINTENTER( "SKCtx.~" )
+    UnregisterCommandContext();
+    __VTPRINTEXIT( "SKCtx.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeyContext::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiSoftkeyContext* CVtUiSoftkeyContext::NewL(
+    MVtUiCommandManager& aCommandManager )
+    {
+    __VTPRINTENTER( "SKCtx.NewL" )
+    CVtUiSoftkeyContext* self =
+        new ( ELeave ) CVtUiSoftkeyContext( aCommandManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "SKCtx.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeyContext::ValidateL
+// ---------------------------------------------------------------------------
+//
+void CVtUiSoftkeyContext::ValidateL( CVtUiCmdValidationActionBase& aAction )
+    {
+    __VTPRINTENTER( "SKCtx.ValidateL" )
+    ValidateSoftkeyItemsL( aAction );
+    __VTPRINTEXIT( "SKCtx.ValidateL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeyContext::CVtUiSoftkeyContext
+// ---------------------------------------------------------------------------
+//
+CVtUiSoftkeyContext::CVtUiSoftkeyContext( MVtUiCommandManager& aCommandManager )
+    : CVtUiCmdContext( aCommandManager, EVtUiCmdContextTypeSoftkey,
+      KVtUiSoftkeyContextPriority )
+    {
+    __VTPRINTENTER( "SKCtx.ctor" )
+    __VTPRINTEXIT( "SKCtx.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeyContext::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiSoftkeyContext::ConstructL()
+    {
+    __VTPRINTENTER( "SKCtx.ConstructL" )
+    RegisterCommandContextL();
+    __VTPRINTEXIT( "SKCtx.ConstructL" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/softkey/cvtuisoftkeys.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,167 @@
+/*
+* 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:  Softkey UI feature implementation.
+*
+*/
+
+
+#include <cvtlogger.h>
+#include <eikbtgpc.h>
+#include "cvtuisoftkeys.h"
+#include "cvtuisoftkeysetting.h"
+#include "cvtuisoftkeyvalidationaction.h"
+#include "cvtuifeaturemanager.h"
+#include "mvtuicommandmanager.h"
+#include "cvtuisoftkeycontext.h"
+
+// ======== LOCAL FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeys::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiSoftkeys* CVtUiSoftkeys::NewL( CVtUiFeatureManager& aFeatureManager,
+    CEikButtonGroupContainer& aButtonGroupContainer )
+    {
+    __VTPRINTENTER( "SKs.NewL" )
+    CVtUiSoftkeys* self =
+        new ( ELeave ) CVtUiSoftkeys( aFeatureManager, aButtonGroupContainer );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "SKs.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeys::~CVtUiSoftkeys
+// ---------------------------------------------------------------------------
+//
+CVtUiSoftkeys::~CVtUiSoftkeys()
+    {
+    __VTPRINTENTER( "SKs.~" )
+    iFeatureManager.CommandManager().RemoveCommandUi( *this );
+    delete iSoftkeyCommandContext;
+    delete iSoftkeySetting;
+    delete iSoftkeyValidationAction;
+    __VTPRINTEXIT( "SKs.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeys::ButtonGroup
+// ---------------------------------------------------------------------------
+//
+CEikButtonGroupContainer& CVtUiSoftkeys::ButtonGroup()
+    {
+    __VTPRINTENTER( "SKs.ButtonGroup" )
+    __VTPRINTEXIT( "SKs.ButtonGroup" )
+    return iButtonGroupContainer;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeys::StartL
+// ---------------------------------------------------------------------------
+//
+void CVtUiSoftkeys::StartL()
+    {
+    __VTPRINTENTER( "SKs.StartL" )
+    __VTPRINTEXIT( "SKs.StartL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeys::Stop
+// ---------------------------------------------------------------------------
+//
+void CVtUiSoftkeys::Stop()
+    {
+    __VTPRINTENTER( "SKs.Stop" )
+    __VTPRINTEXIT( "SKs.Stop" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeys::InitFeatureL
+// ---------------------------------------------------------------------------
+//
+void CVtUiSoftkeys::InitFeatureL()
+    {
+    __VTPRINTENTER( "SKs.InitFeatureL" )
+    __VTPRINTEXIT( "SKs.InitFeatureL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeys::RefreshL
+// ---------------------------------------------------------------------------
+//
+void CVtUiSoftkeys::RefreshL()
+    {
+    __VTPRINTENTER( "SKs.RefreshL" )
+    iFeatureManager.CommandManager().ValidateSoftkeyItemsL(
+        *iSoftkeyValidationAction );
+    iSoftkeySetting->DefineCommandsL( *iSoftkeyValidationAction );
+    iButtonGroupContainer.DrawNow();
+    __VTPRINTEXIT( "SKs.RefreshL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeys::AddCommandModifierL
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiSoftkeys::AddCommandModifier( CVtUiCommandModifyBase& aModifier )
+    {
+    __VTPRINTENTER( "SKs.AddCommandModifier" )
+    TInt result( iSoftkeySetting->AddModifier( aModifier ) );
+    __VTPRINTEXITR( "SKs.AddCommandModifier %d", result )
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeys::RemoveCommandModifier
+// ---------------------------------------------------------------------------
+//
+void CVtUiSoftkeys::RemoveCommandModifier( CVtUiCommandModifyBase& aModifier )
+    {
+    __VTPRINTENTER( "SKs.RemoveCommandModifier" )
+    iSoftkeySetting->RemoveModifier( aModifier );
+    __VTPRINTEXIT( "SKs.RemoveCommandModifier" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeys::CVtUiSoftkeys
+// ---------------------------------------------------------------------------
+//
+CVtUiSoftkeys::CVtUiSoftkeys( CVtUiFeatureManager& aFeatureManager,
+    CEikButtonGroupContainer& aButtonGroupContainer )
+    : CVtUiFeatureBase( EVtUiFeatureIdSoftkey, aFeatureManager ),
+    iButtonGroupContainer( aButtonGroupContainer )
+    {
+    __VTPRINTENTER( "SKs.ctor" )
+    __VTPRINTEXIT( "SKs.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeys::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiSoftkeys::ConstructL()
+    {
+    __VTPRINTENTER( "SKs.ConstructL" )
+    iSoftkeyCommandContext = CVtUiSoftkeyContext::NewL(
+        iFeatureManager.CommandManager() );
+    iSoftkeySetting = new ( ELeave ) CVtUiSoftkeySetting( *this );
+    iSoftkeyValidationAction = CVtUiSoftkeyValidationAction::NewL();
+    User::LeaveIfError(
+        iFeatureManager.CommandManager().AddCommandUi( *this ) );
+    __VTPRINTEXIT( "SKs.ConstructL" )
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/softkey/cvtuisoftkeysetting.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,59 @@
+/*
+* 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:  Softkey setting implementation.
+*
+*/
+
+
+#include <cvtlogger.h>
+#include <eikbtgpc.h>
+
+#include "cvtuisoftkeys.h"
+#include "cvtuisoftkeysetting.h"
+#include "cvtuisoftkeyvalidationaction.h"
+
+// ======== LOCAL FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeySetting::~CVtUiSoftkeySetting
+// ---------------------------------------------------------------------------
+//
+CVtUiSoftkeySetting::~CVtUiSoftkeySetting()
+    {
+    __VTPRINTENTER( "SKSet.~" )
+    __VTPRINTEXIT( "SKSet.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeySetting::CVtUiSoftkeySetting
+// ---------------------------------------------------------------------------
+//
+CVtUiSoftkeySetting::CVtUiSoftkeySetting( CVtUiSoftkeys& aSoftkeys ) :
+    CVtUiCommandSetting( ECommandTypeSoftkeys ),
+    iSoftkeys( &aSoftkeys )
+    {
+    __VTPRINTENTER( "SKSet.ctor" )
+    __VTPRINTEXIT( "SKSet.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeySetting::DoDefineCommandsL
+// ---------------------------------------------------------------------------
+//
+void CVtUiSoftkeySetting::DoDefineCommandsL()
+    {
+    __VTPRINTENTER( "SKSet.DoDefineCommandsL" )
+    iSoftkeys->ButtonGroup().SetCommandSetL( Action().ResourceId() );
+    __VTPRINTEXIT( "SKSet.DoDefineCommandsL" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/softkey/cvtuisoftkeyvalidationaction.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,112 @@
+/*
+* 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:  Softkey validation action implementation.
+*
+*/
+
+
+#include <cvtlogger.h>
+#include <videotelui.rsg>
+#include <avkon.rsg>
+
+#include "cvtuisoftkeyvalidationaction.h"
+#include "tvtuicmdvalidatorcallback.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// softkey ids
+static const TInt SKIDS[] =
+    {
+    R_AVKON_SOFTKEYS_OPTIONS_BACK,
+    R_VIDEOTELUI_SOFTKEYS_EMPTY_ACTIVE_COMMAND,
+    R_VIDEOTELUI_SOFTKEYS_EMPTY_DIALEREXIT,
+    R_VIDEOTELUI_SOFTKEYS_SHARE_OBJECT_IMAGE,
+    R_VIDEOTELUI_SOFTKEYS_CAPTURE_VIDEO,
+    R_VIDEOTELUI_SOFTKEYS_ENABLE_AUDIO,
+    R_VIDEOTELUI_SOFTKEYS_ENABLE_VIDEO,
+    R_VIDEOTELUI_SOFTKEYS_DIALER,
+    R_VIDEOTELUI_SOFTKEYS_BT_HANDSFREE,
+    R_VIDEOTELUI_SOFTKEYS_LOUDSPEAKER,
+    R_VIDEOTELUI_SOFTKEYS_HANDSET_B,
+    R_VIDEOTELUI_SOFTKEYS_END_CALL,
+    R_AVKON_SOFTKEYS_EMPTY // this is end marker, keep it last
+    };
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeyValidationAction::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiSoftkeyValidationAction* CVtUiSoftkeyValidationAction::NewL()
+    {
+    __VTPRINTENTER( "SKValAct.NewL" )
+    CVtUiSoftkeyValidationAction* self =
+        new ( ELeave ) CVtUiSoftkeyValidationAction();
+    __VTPRINTEXIT( "SKValAct.NewL" )
+    return self;
+	}
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeyValidationAction::BeginProcess
+// ---------------------------------------------------------------------------
+//
+void CVtUiSoftkeyValidationAction::BeginProcess()
+    {
+    __VTPRINTENTER( "SKValAct.EndProcess" )
+    CVtUiCmdValidationActionBase::BeginProcess();
+    iCurrentIdx = 0;
+    __VTPRINTEXIT( "SKValAct.EndProcess" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeyValidationAction::ProcessL
+// ---------------------------------------------------------------------------
+//
+void CVtUiSoftkeyValidationAction::ProcessL(
+    const MVtUiCmdValidatorCallBack& aCallBack )
+    {
+    __VTPRINTENTER( "SKValAct.ProcessL" )
+    while ( SKIDS[ iCurrentIdx ] != R_AVKON_SOFTKEYS_EMPTY )
+        {
+        if ( aCallBack.Call( SKIDS[ iCurrentIdx ] ) )
+            {
+            break;
+            }
+        else
+            {
+            iCurrentIdx++;
+            }
+        }
+    __VTPRINTEXIT( "SKValAct.ProcessL" )
+	}
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeyValidationAction::ResourceId
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiSoftkeyValidationAction::ResourceId() const
+    {
+    __VTPRINTENTER( "SKValAct.ResourceId" )
+    __VTPRINTEXITR( "SKValAct.ResourceId %d", SKIDS[ iCurrentIdx ] )
+    return SKIDS[ iCurrentIdx ];
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSoftkeyValidationAction::CVtUiSoftkeyValidationAction
+// ---------------------------------------------------------------------------
+//
+CVtUiSoftkeyValidationAction::CVtUiSoftkeyValidationAction()
+    {
+    __VTPRINTENTER( "SKValAct.ctor" )
+    __VTPRINTEXIT( "SKValAct.ctor" )
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/toolbar/cvtuifixedtoolbar.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,299 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Fixed toolbar UI feature implementation.
+*
+*/
+
+
+// INCLUDE FILES
+
+#include    "cvtuifixedtoolbar.h"
+#include    "cvtuifeaturemanager.h"
+#include    "mvtuicomponentmanager.h"
+#include    "mvtuicommandmanager.h"
+#include    "videotelui.hrh"
+#include    "tvtuistates.h"
+#include    "cvtuitoolbarcmdpolicy.h"
+#include    "cvtuitoolbarskmodifier.h"
+#include    "CVtUiAppUi.h"
+#include    <videotelui.rsg>
+#include    <cvtlogger.h>
+#include    <akntoolbar.h>
+#include    "tvtuistates.h"
+#include    <layoutmetadata.cdl.h>
+
+// -----------------------------------------------------------------------------
+// CVtUiFixedToolbar::NewL
+// -----------------------------------------------------------------------------
+//
+CVtUiFixedToolbar* CVtUiFixedToolbar::NewL( CVtUiFeatureManager&
+     aFeatureManager )
+    {
+    __VTPRINTENTER( "FixedToolbar.NewL" )
+    CVtUiFixedToolbar* self = new ( ELeave ) CVtUiFixedToolbar(
+        aFeatureManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    __VTPRINTEXIT( "FixedToolbar.NewL" )
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFixedToolbar::CVtUiFixedToolbar
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CVtUiFixedToolbar::CVtUiFixedToolbar( CVtUiFeatureManager&
+    aFeatureManager ) : CVtUiToolbarBase( aFeatureManager )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFixedToolbar::ConstructL
+// Symbian 2nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CVtUiFixedToolbar::ConstructL()
+    {
+    __VTPRINTENTER( "FixedToolbar.ConstructL" )
+    BaseConstructL();
+
+    //create toolbar
+    iToolbar = iFeatureManager.AppUi().CurrentFixedToolbar();
+
+    // create and add items into the toolbar
+    CreateToolbarButtonsL();
+
+    // Dim all toolbar buttons until first refresh is called
+    DimToolbarbuttons( ETrue );
+
+    if ( !Layout_Meta_Data::IsLandscapeOrientation() )
+        {
+        MakeToolbarVisible( EFalse );
+        }
+
+    __VTPRINTEXIT( "FixedToolbar.ConstructL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFixedToolbar::~CVtUiFixedToolbar
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CVtUiFixedToolbar::~CVtUiFixedToolbar()
+    {
+    __VTPRINTENTER( "FixedToolbar.~" )
+    delete iIdle;
+    __VTPRINTEXIT( "FixedToolbar.~" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFixedToolbar::CreateToolbarButtons
+// -----------------------------------------------------------------------------
+//
+void CVtUiFixedToolbar::CreateToolbarButtonsL()
+    {
+    __VTPRINTENTER( "FixedToolbar.CreateToolbarButtons" )
+    // Default buttons created in base clase
+    CVtUiToolbarBase::CreateToolbarButtonsL();
+
+    // toggle microphone
+    CreateToolbarItemL( R_AVKONBUTTON_AUDIO_ROUTING_BUTTON,
+        EVtUiCmdToolbarAudioRouting, iFeatureManager.AppUi() );
+
+
+    __VTPRINTEXIT( "FixedToolbar.CreateToolbarButtons" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFixedToolbar::PopulateCmdsIdsL
+// -----------------------------------------------------------------------------
+//
+void CVtUiFixedToolbar::PopulateCmdsIdsL()
+    {
+    __VTPRINTENTER( "FixedToolbar.PopulateCmdsIdsL" )
+    // Default commands populated in base clase
+    CVtUiToolbarBase::PopulateCmdsIdsL();
+
+    CVtUiAppUi& appUi = iFeatureManager.AppUi();
+
+    iCmdIds.AppendL( EVtUiCmdActivateBT );
+    iCmdIds.AppendL( EVtUiCmdSwitchFromBTToIHF );
+    iCmdIds.AppendL( EVtUiCmdActivateLoudspeaker );
+    iCmdIds.AppendL( EVtUiCmdDeactivateLoudspeaker );
+
+    __VTPRINTEXIT( "FixedToolbar.PopulateCmdsIdsL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFixedToolbar::SetToolbarVisibilityAfterLayoutChangeL
+// -----------------------------------------------------------------------------
+//
+void CVtUiFixedToolbar::SetToolbarVisibilityAfterLayoutChangeL( TBool aVisible )
+    {
+    // Portrait to landscape show tb
+        __VTPRINTENTER( "FixedToolbar.SetToolbarVisibilityAfterLayoutChangeL" )
+    if( aVisible )
+        {
+        __VTPRINT(DEBUG_GEN, "FixedToolbar.SetToolbarVisibilityAfterLayoutChangeL.1" )
+        DimToolbarbuttons( ETrue );
+        // Set flag
+        iFeatureManager.UiStates().SetIsFixedToolbarVisible( ETrue );
+        // set visible
+        iFeatureManager.AppUi().CurrentFixedToolbar()
+            ->SetToolbarVisibility( ETrue );
+        // Set callback to dim toolbarbuttons
+//        if ( !iIdle )
+//            {
+//            iIdle = CIdle::NewL( CActive::EPriorityIdle );
+//            }
+//        
+//        if ( !iIdle->IsActive() )
+//            {
+//            iIdle->Start( TCallBack( &DoDimToolbarButtons, this ) );
+//            }
+        }
+    // Landsacpe to portrait hide tb
+    else
+        {
+        __VTPRINT(DEBUG_GEN, "FixedToolbar.SetToolbarVisibilityAfterLayoutChangeL.2" )
+        DimToolbarbuttons( EFalse );
+        iFeatureManager.AppUi().CurrentFixedToolbar()
+            ->SetToolbarVisibility( EFalse );
+         // Set flag
+        iFeatureManager.UiStates().SetIsFixedToolbarVisible( EFalse );
+        }
+    __VTPRINTEXIT( "FixedToolbar.SetToolbarVisibilityAfterLayoutChangeL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFixedToolbar::DimToolbarbuttons
+// -----------------------------------------------------------------------------
+//
+void CVtUiFixedToolbar::DimToolbarbuttons( TBool aIsDimmed )
+    {
+    __VTPRINTENTER( "FixedToolbar.DimToolbarbuttons" )
+    iToolbar->SetItemDimmed( EVtUiCmdToolbarToggleVideo, aIsDimmed, ETrue );
+    iToolbar->SetItemDimmed( EVtUiCmdToolbarToggleMicrophone, aIsDimmed, ETrue );
+    iToolbar->SetItemDimmed( EVtUiCmdToolbarAudioRouting, aIsDimmed, ETrue );
+    __VTPRINTEXITR( "FixedToolbar.DimToolbarbuttons %d", aIsDimmed )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFixedToolbar::MakeToolbarVisible
+// -----------------------------------------------------------------------------
+//
+void CVtUiFixedToolbar::MakeToolbarVisible( const TBool aVisible )
+    {
+    __VTPRINTENTER( "FixedToolbar.MakeToolbarVisible" )
+    iFeatureManager.AppUi().CurrentFixedToolbar()->
+        SetToolbarVisibility( aVisible );
+    iFeatureManager.UiStates().SetIsFixedToolbarVisible( aVisible );
+    __VTPRINTEXITR( "FixedToolbar.MakeToolbarVisible %d", aVisible )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFixedToolbar::DoShowToolbarL
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiFixedToolbar::DoShowToolbarL( TAny* aAny )
+    {
+    __VTPRINTENTER( "FixedToolbar.DoShowToolbarL" )
+    CVtUiFixedToolbar* self = static_cast< CVtUiFixedToolbar* >( aAny );
+    self->iFeatureManager.AppUi().CurrentFixedToolbar()
+        ->SetToolbarVisibility( ETrue );
+    __VTPRINTEXIT( "FixedToolbar.DoShowToolbarL" )
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFixedToolbar::DoToolbarButton
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiFixedToolbar::DoDimToolbarButtons( TAny* aAny )
+    {
+    __VTPRINTENTER( "FixedToolbar.DoDimToolbarButtons" )
+    CVtUiFixedToolbar* self = static_cast< CVtUiFixedToolbar* >( aAny );
+    self->DimToolbarbuttons( ETrue );
+    __VTPRINTEXIT( "FixedToolbar.DoDimToolbarButtons" )
+    return EFalse;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFixedToolbar::DoActivateL
+// -----------------------------------------------------------------------------
+//
+void CVtUiFixedToolbar::DoActivateL()
+    {
+    __VTPRINTENTER( "FixedToolbar.DoActivateL" )
+    if ( !iFeatureManager.UiStates().IsFixedToolbarVisible() &&
+         !Layout_Meta_Data::IsLandscapeOrientation() )
+        {
+        // reset flag
+        iFeatureManager.UiStates().SetIsFixedToolbarVisible( ETrue );
+        // Show toolbar with delay in order to prevent overdrawing
+        // witht other components.
+        iAsyncCallback->Cancel();
+        iAsyncCallback->Set( TCallBack( &DoShowToolbarL, this ) );
+        iAsyncCallback->CallBack();
+        }
+    else
+        {
+        // Undim buttons
+        __VTPRINT( DEBUG_GEN, "FixedToolbar.DoDeactivateL.DTB EFalse" )
+        // toolbar might be unvisible, because condition in the contructor 
+        // "if ( !Layout_Meta_Data::IsLandscapeOrientation() )"
+        // will be evaluated ture eventhough the orientation is forced to be landsacepe
+        // because it seems that the orientation is still portrait in the constructor phase
+        MakeToolbarVisible( ETrue );
+        DimToolbarbuttons( EFalse );
+        }
+    // Start blocking pointer events
+    BlockPointerEvents( ETrue );
+    // Base class
+    CVtUiToolbarBase::DoActivateL();
+    __VTPRINTEXIT( "FixedToolbar.DoActivateL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFixedToolbar::DoDeactivateL
+// -----------------------------------------------------------------------------
+//
+void CVtUiFixedToolbar::DoDeactivateL()
+    {
+    __VTPRINTENTER( "FixedToolbar.DoDeactivateL" )
+    iAsyncCallback->Cancel();
+    if ( !iFeatureManager.UiStates().IsFixedToolbarVisible() &&
+         !Layout_Meta_Data::IsLandscapeOrientation() )
+        {
+        iFeatureManager.AppUi().CurrentFixedToolbar()
+            ->SetToolbarVisibility( EFalse );
+        __VTPRINT( DEBUG_GEN, "FixedToolbar.DoDeactivateL.Vs" )
+        }
+    else
+        {
+        // Dim all buttons
+        __VTPRINT( DEBUG_GEN, "FixedToolbar.DoDeactivateL.DTB ETrue" )
+        DimToolbarbuttons( ETrue );
+        }
+    // Stop blocking pointer events
+    BlockPointerEvents( EFalse );
+    // Base class
+    CVtUiToolbarBase::DoDeactivateL();
+    __VTPRINTEXIT( "FixedToolbar.DoDeactivateL" )
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/toolbar/cvtuifloatingtoolbar.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,468 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Floating toolbar UI feature implementation.
+*
+*/
+
+
+// INCLUDE FILES
+
+#include    "cvtuifloatingtoolbar.h"
+#include    "cvtuifeaturemanager.h"
+#include    "mvtuicomponentmanager.h"
+#include    "mvtuicommandmanager.h"
+#include 	"cvtuitoolbarbutton.h"
+#include    "videotelui.hrh"
+#include 	"tVtuifeaturevariation.h"
+#include    "tvtuistates.h"
+#include    "cvtuitoolbarcmdpolicy.h"
+#include    "cvtuitoolbarskmodifier.h"
+#include    "CVtUiAppUi.h"
+#include    <videotelui.rsg>
+#include    <cvtlogger.h>
+#include    <akntoolbar.h>
+#include    <AknUtils.h>
+#include    <aknlayoutscalable_apps.cdl.h>
+#include    <layoutmetadata.cdl.h>
+#include    <gfxtranseffect/gfxtranseffect.h>
+
+// CONSTANTS
+static const TInt KThreeToolbarbuttons = 3;
+static const TInt KFourToolbarbuttons = 4;
+static const TInt KFiveToolbarbuttons = 5;
+static const TInt KSixToolbarbuttons = 6;
+static const TInt KSevenToolbarbuttons = 7;
+
+
+// -----------------------------------------------------------------------------
+// CVtUiFloatingToolbar::NewL
+// -----------------------------------------------------------------------------
+//
+CVtUiFloatingToolbar* CVtUiFloatingToolbar::NewL( CVtUiFeatureManager&
+     aFeatureManager )
+    {
+    __VTPRINTENTER( "FloatingToolbar.NewL" )
+        TVtUiSideVolumeKeysVariation svkvariation;
+    if ( !svkvariation.IsSideVolumeKeysSupported() )
+        {
+        // User of this class should notice that newl could return null,
+        // even if no leave happened.
+        __VTPRINT(DEBUG_GEN, "Toolbar.NewL.NULL" )
+        return NULL;
+        }
+    CVtUiFloatingToolbar* self = new ( ELeave ) CVtUiFloatingToolbar( 
+        aFeatureManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    __VTPRINTEXIT( "FloatingToolbar.NewL" )
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFloatingToolbar::CVtUiFloatingToolbar
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CVtUiFloatingToolbar::CVtUiFloatingToolbar( CVtUiFeatureManager& 
+    aFeatureManager ) : CVtUiToolbarBase( aFeatureManager )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFloatingToolbar::ConstructL
+// Symbian 2nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CVtUiFloatingToolbar::ConstructL()
+    {
+    __VTPRINTENTER( "FloatingToolbar.ConstructL" )
+    BaseConstructL();
+    
+    // fixed toolbar is always visible ( defined in resource) hide it
+    iFeatureManager.AppUi().CurrentFixedToolbar()->SetToolbarVisibility( EFalse );
+    
+    // create toolbar
+    iToolbar = CAknToolbar::NewL( R_VIDEOTELUI_FLOATING_TOOLBAR );
+
+    GfxTransEffect::Register( iToolbar, KNullUid, EFalse );
+    
+    // create and add items into the toolbar
+    CreateToolbarButtonsL();
+
+    iFeatureManager.UiStates().SetIsFloatingToolbarVisible( EFalse );
+    
+    // layout toolbar
+    LayoutToolbarL();
+    
+    User::LeaveIfError(
+        iFeatureManager.ComponentManager().ChangeResourceChangeRegistration(
+        *this, MVtUiComponentManager::ERegister ) );
+    
+    __VTPRINTEXIT( "FloatingToolbar.ConstructL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFloatingToolbar::~CVtUiFloatingToolbar
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CVtUiFloatingToolbar::~CVtUiFloatingToolbar()
+    {
+    __VTPRINTENTER( "FloatingToolbar.~" )
+    // unregister resource change registration
+    iFeatureManager.ComponentManager().ChangeResourceChangeRegistration(
+        *this, MVtUiComponentManager::EUnregister );
+    delete iToolbar;
+    iToolbar = NULL;
+    __VTPRINTEXIT( "FloatingToolbar.~" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFloatingToolbar::PopulateCmdsIdsL
+// -----------------------------------------------------------------------------
+//
+void CVtUiFloatingToolbar::PopulateCmdsIdsL()
+    {
+    __VTPRINTENTER( "FloatingToolbar.PopulateCmdsIdsL" )
+    CVtUiAppUi& appUi = iFeatureManager.AppUi();
+    
+    // Default commands populated in base clase
+    CVtUiToolbarBase::PopulateCmdsIdsL();
+    
+    iCmdIds.AppendL( EVtUiCmdZoom );
+    
+    switch( iNumberOfToolbarButtons )
+        {
+        case KFourToolbarbuttons:
+            iCmdIds.AppendL( EVtUiCmdUsePrimaryCamera );
+            iCmdIds.AppendL( EVtUiCmdUseSecondaryCamera );
+            break;
+
+        case KFiveToolbarbuttons:
+            iCmdIds.AppendL( EVtUiCmdUsePrimaryCamera );
+            iCmdIds.AppendL( EVtUiCmdUseSecondaryCamera );
+            iCmdIds.AppendL( EVtUiCmdSwapImagesPlaces );
+            break;
+
+        case KSixToolbarbuttons:
+            iCmdIds.AppendL( EVtUiCmdUsePrimaryCamera );
+            iCmdIds.AppendL( EVtUiCmdUseSecondaryCamera );
+            iCmdIds.AppendL( EVtUiCmdSwapImagesPlaces );
+            iCmdIds.AppendL( EVtUiCmdShareObjectImage );
+            break;
+        /*
+        case KSevenToolbarbuttons:
+            iCmdIds.AppendL( EVtUiCmdUsePrimaryCamera );
+            iCmdIds.AppendL( EVtUiCmdUseSecondaryCamera );
+            iCmdIds.AppendL( EVtUiCmdSwapImagesPlaces );
+            iCmdIds.AppendL( EVtUiCmdShareObjectImage );
+            iCmdIds.AppendL( EVtUiCmdSnapshot );
+            break;
+         */
+        default:
+            break;
+        }
+
+    __VTPRINTEXIT( "FloatingToolbar.PopulateCmdsIdsL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFloatingToolbar::CreateToolbarButtons
+// -----------------------------------------------------------------------------
+//
+void CVtUiFloatingToolbar::CreateToolbarButtonsL()
+    {
+    __VTPRINTENTER( "FloatingToolbar.CreateToolbarButtons" )
+    
+    // Default buttons created in base clase
+    CVtUiToolbarBase::CreateToolbarButtonsL(); 
+    
+    CVtUiAppUi& appUi = iFeatureManager.AppUi();
+
+    // activate zoom mode
+    CreateToolbarItemL( R_AVKONBUTTON_ACTIVATE_ZOOM_MODE_BUTTON,
+        EVtUiCmdZoom, appUi );
+    // disable tooltip from button's latched state
+    // because tooltip needs to be shown only when
+    // button gets focus not then when button is selected
+    FindToolbarItemByCommandId( EVtUiCmdZoom )->State( 1 )
+        ->SetHelpTextL( KNullDesC() );
+
+    switch( iNumberOfToolbarButtons )
+        {
+        case KFourToolbarbuttons:
+            // toggle camera
+            CreateToolbarItemL( R_AVKONBUTTON_TOGGLE_CAMERA_BUTTON,
+                EVtUiCmdToolbarToggleCamera, appUi );
+            break;
+
+        case KFiveToolbarbuttons:
+             // toggle camera
+             CreateToolbarItemL( R_AVKONBUTTON_TOGGLE_CAMERA_BUTTON,
+                EVtUiCmdToolbarToggleCamera, appUi );
+
+            // swap images
+            CreateToolbarItemL( R_AVKONBUTTON_SWAP_IMAGES_BUTTON,
+                EVtUiCmdSwapImagesPlaces, appUi );
+            break;
+
+        case KSixToolbarbuttons:
+            // toggle camera
+             CreateToolbarItemL( R_AVKONBUTTON_TOGGLE_CAMERA_BUTTON,
+                EVtUiCmdToolbarToggleCamera, appUi );
+
+            // swap images
+            CreateToolbarItemL( R_AVKONBUTTON_SWAP_IMAGES_BUTTON,
+                EVtUiCmdSwapImagesPlaces, appUi );
+
+            // share file
+            CreateToolbarItemL(R_AVKONBUTTON_SHARE_FILE_BUTTON,
+                EVtUiCmdShareObjectImage, appUi );
+            break;
+        /*
+        case KSevenToolbarbuttons:
+            // toggle camera
+             CreateToolbarItemL( R_AVKONBUTTON_TOGGLE_CAMERA_BUTTON,
+                EVtUiCmdToolbarToggleCamera, appUi );
+
+            // swap images
+            CreateToolbarItemL( R_AVKONBUTTON_SWAP_IMAGES_BUTTON,
+                EVtUiCmdSwapImagesPlaces, appUi );
+
+            // share file
+            CreateToolbarItemL(R_AVKONBUTTON_SHARE_FILE_BUTTON,
+                EVtUiCmdShareObjectImage, appUi );
+
+            CreateToolbarItemL( R_AVKONBUTTON_SNAPSHOT_BUTTON,
+                EVtUiCmdSnapshot, appUi );
+
+            break;
+        */
+        default:
+            break;
+        }
+
+    __VTPRINTEXIT( "FloatingToolbar.CreateToolbarButtons" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFloatingToolbar::DoActivateL
+// -----------------------------------------------------------------------------
+//
+void CVtUiFloatingToolbar::DoActivateL()
+    {
+    __VTPRINTENTER( "FloatingToolbar.DoActivateL" )
+    // start blocking key events
+    BlockKeyEvents( ETrue );
+    // make toolbar visible
+    if ( !iToolbar->IsVisible() ||
+            !iFeatureManager.UiStates().IsFloatingToolbarVisible() )
+        {
+        // Show toolbar
+        iToolbar->SetToolbarVisibility( ETrue );
+        }
+    else
+        {
+        // Undim toolbar
+        DimToolbar( EFalse, EFalse );
+        if ( iCmdFocus != KErrNotFound )
+            {
+            // Set focus item
+            iToolbar->SetItemDimmed( iCmdFocus, EFalse, ETrue );
+            iToolbar->SetFocusedItemL( iCmdFocus );
+            iCmdFocus = KErrNotFound;
+            }
+        }
+    iFeatureManager.UiStates().SetIsFloatingToolbarVisible( EFalse );
+    CVtUiToolbarBase::DoActivateL();
+    __VTPRINTEXIT( "FloatingToolbar.DoActivateL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFloatingToolbar::DoDeactivateL
+// -----------------------------------------------------------------------------
+//
+void CVtUiFloatingToolbar::DoDeactivateL()
+    {
+    __VTPRINTENTER( "FloatingToolbar.DoDeactivateL" )
+     // stop blocking key events
+    BlockKeyEvents( EFalse );
+    if ( iToolbar )
+        {
+        // Save foces item;
+        if ( iToolbar->FocusedItem() != KErrNotFound )
+            {
+            iCmdFocus = iToolbar->FocusedItem();
+            }
+        TVtUiStates& uiStates = iFeatureManager.UiStates();
+        if ( !uiStates.IsFloatingToolbarVisible() )
+            {
+            __VTPRINT( DEBUG_GEN, "FloatingToolbar.DoDeactivateL.Vs" )
+            iToolbar->SetToolbarVisibility( EFalse );
+            }
+        else
+            {
+            // Dim toolbar
+            __VTPRINT( DEBUG_GEN, "FloatingToolbar.DoDeactivateL.Dim ETrue" )
+            DimToolbar( ETrue, EFalse );
+            }
+        CVtUiAppUi& appUi = iFeatureManager.AppUi();
+        const TBool isZoomModeOn( uiStates.IsZoomModeOn() );
+        if ( isZoomModeOn )
+            {
+            // set zoom indicator to be hidden
+            appUi.SetZoomModeL( EFalse );
+            }
+        }
+    CVtUiToolbarBase::DoDeactivateL();
+    __VTPRINTEXIT( "FloatingToolbar.DoDeactivateL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFloatingToolbar::HandleResourceChangeL
+// -----------------------------------------------------------------------------
+//
+void CVtUiFloatingToolbar::HandleResourceChangeL( TInt /*aType*/ )
+    {
+    __VTPRINTENTER( "FloatingToolbar.HandleResourceChangeL" )
+    // akntoolbar should allways be in the control stack
+    // no need to call
+    // iToolbar->HandleResourceChange
+    LayoutToolbarL();
+    __VTPRINTEXIT( "FloatingToolbar.HandleResourceChangeL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFloatingToolbar::RectFromLayout
+// -----------------------------------------------------------------------------
+//
+TRect CVtUiFloatingToolbar::RectFromLayout(
+   const TAknWindowComponentLayout& aComponentLayout ) const
+   {
+   __VTPRINTENTER( "FloatingToolbar.RectFromLayout" )
+   TRect mainPaneRect;
+   AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect );
+
+   TAknWindowLineLayout lineLayout = aComponentLayout.LayoutLine();
+   TAknLayoutRect layoutRect;
+   layoutRect.LayoutRect( mainPaneRect, lineLayout );
+   __VTPRINTEXIT( "FloatingToolbar.RectFromLayout" )
+   return layoutRect.Rect();
+   }
+
+// -----------------------------------------------------------------------------
+// CVtUiFloatingToolbar::LayoutToolbarL
+// -----------------------------------------------------------------------------
+//
+void CVtUiFloatingToolbar::LayoutToolbarL()
+    {
+    __VTPRINTENTER( "FloatingToolbar.LayoutToolbarL" )
+
+    // Get variety
+    TInt variety = GetVariety( Layout_Meta_Data::IsLandscapeOrientation() );
+    // get toolbar rect from layout
+    TRect toolbarRect = RectFromLayout( AknLayoutScalable_Apps::
+        popup_toolbar_window_cp04( variety ).LayoutLine() );
+    //set top left coordinates i.e. placeholder
+    iToolbar->SetPosition( toolbarRect.iTl );
+
+    if ( Layout_Meta_Data::IsLandscapeOrientation() )
+        {
+        __VTPRINT( DEBUG_GEN, "Toolbar.LayoutToolbarL.LS" )
+        iToolbar->SetOrientation( EAknOrientationVertical );
+        }
+    else
+        {
+        __VTPRINT( DEBUG_GEN, "Toolbar.LayoutToolbarL.PR" )
+        iToolbar->SetOrientation( EAknOrientationHorizontal );
+        }
+    __VTPRINTEXIT( "FloatingToolbar.LayoutToolbarL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiFloatingToolbar::GetVariety
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiFloatingToolbar::GetVariety( TBool aIsLandscapeOrientation )
+    {
+    __VTPRINTENTER( "FloatingToolbar.GetVariety" )
+    TInt variety = 0;
+    switch ( iNumberOfToolbarButtons )
+        {
+        case KThreeToolbarbuttons:
+            if( aIsLandscapeOrientation )
+                {
+                variety = 5;
+                }
+            else
+                {
+                variety = 9;
+                }
+            break;
+
+        case KFourToolbarbuttons:
+            if( aIsLandscapeOrientation )
+                {
+                variety = 4;
+                }
+            else
+                {
+                variety = 8;
+                }
+            break;
+
+        case KFiveToolbarbuttons:
+            if( aIsLandscapeOrientation )
+                {
+                variety = 3;
+                }
+            else
+                {
+                variety = 7;
+                }
+            break;
+
+        case KSixToolbarbuttons:
+            if( aIsLandscapeOrientation )
+                {
+                variety = 2;
+                }
+            else
+                {
+                variety = 6;
+                }
+            break;
+
+        case KSevenToolbarbuttons:
+            if( aIsLandscapeOrientation )
+                {
+                variety = 1;
+                }
+            else
+                {
+                variety = 4;
+                }
+            break;
+
+        default:
+
+            break;
+        }
+    __VTPRINTEXITR( "FloatingToolbar.GetVariety =%d",variety )
+    return variety;
+    }
+//  End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/toolbar/cvtuihidetoolbaritemaction.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,244 @@
+/*
+* 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:  Toolbar hide item action class.
+*
+*/
+
+
+#include <cvtlogger.h>
+#include "cvtuihidetoolbaritemaction.h"
+#include "tvtuicmdvalidatorcallback.h"
+#include "tvtuitoolbarcommanditerator.h"
+#include "cvtuitoolbarbase.h"
+#include "videotelui.hrh"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiHideToolbarItemAction::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiHideToolbarItemAction* CVtUiHideToolbarItemAction::NewL(
+    CVtUiToolbarBase* aToolbar, const TVtUiStates& aUiStates )
+    {
+    __VTPRINTENTER( "HideTbAct.NewL" )
+    CVtUiHideToolbarItemAction* self =
+        new ( ELeave ) CVtUiHideToolbarItemAction( aToolbar, aUiStates );
+    __VTPRINTEXIT( "HideTbAct.NewL" )
+    return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CVtUiHideToolbarItemAction::~CVtUiHideToolbarItemAction
+// ---------------------------------------------------------------------------
+//
+CVtUiHideToolbarItemAction::~CVtUiHideToolbarItemAction()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiHideToolbarItemAction::ProcessL
+// ---------------------------------------------------------------------------
+//
+void CVtUiHideToolbarItemAction::ProcessL(
+    const MVtUiCmdValidatorCallBack& aCallBack )
+    {
+    __VTPRINTENTER( "HideTbAct.ProcessL" )
+    for ( TVtUiToolbarCommandIterator i( *iToolbar ); i.HasNext(); )
+        {
+        TInt commandId( i.Next() );
+    	if ( !IsCommandHandled( commandId ) )
+    	    {
+    	    __VTPRINT2( DEBUG_GEN, "HideTbAct.cb.call.cmddId=%d", commandId )
+            if ( aCallBack.Call( commandId ) )  // primarypolicy 
+                {                               // says can't be shown
+        	    CommandHandledL( commandId );
+        	    SetItemHiddenL( commandId );
+                }
+             else
+                {
+                HideOrShowToolbarControlL( commandId );
+                }
+    	    }
+        }
+    __VTPRINTEXIT( "HideTbAct.ProcessL" )
+	}
+
+// ---------------------------------------------------------------------------
+// CVtUiHideToolbarItemAction::CVtUiHideToolbarItemAction
+// ---------------------------------------------------------------------------
+//
+CVtUiHideToolbarItemAction::CVtUiHideToolbarItemAction
+    ( CVtUiToolbarBase* aToolbar, const  TVtUiStates& aUiStates )
+    : iToolbar( aToolbar ), iUiStates ( aUiStates )
+    {
+    __VTPRINTENTER( "HideTbAct.ctor" )    
+    __VTPRINTEXIT( "HideTbAct.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiHideToolbarItemAction::SetItemHiddenL
+// ---------------------------------------------------------------------------
+//
+void CVtUiHideToolbarItemAction::SetItemHiddenL( TInt aCommandId )
+    {
+    __VTPRINTENTER( "HideTbAct.SetItemHidden" )
+    iToolbar->SetCmdIdVisibilityStateL( aCommandId, 
+        CVtUiToolbarBase::EHidden );
+    __VTPRINTEXIT( "HideTbAct.SetItemHidden" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiHideToolbarItemAction::HideOrShowToolbarControlL
+// ---------------------------------------------------------------------------
+//
+void CVtUiHideToolbarItemAction::HideOrShowToolbarControlL
+    ( TInt aCommandId )
+    {
+    __VTPRINTENTER( "HideTbAct.HideOrShowToolbarControlL" )
+    TBool isZoomModeOn = iUiStates.IsZoomModeOn();
+    TBool isVolumeModeOn = iUiStates.IsVolumeModeOn();
+    TBool isBrightnessModeOn = iUiStates.IsBrightnessModeOn();
+    TBool isContrastModeOn = iUiStates.IsContrastModeOn();
+    TBool isDialerOpen = iUiStates.IsDialerOpen();
+    TBool isDialerActivating = iUiStates.IsDialerActivating();
+    TBool isWhiteBalanceModeOn = iUiStates.IsWhiteBalanceModeOn();
+    TBool isColorToneModeOn = iUiStates.IsColorToneModeOn();
+    TBool isCaptureModeOn = iUiStates.IsCaptureModeOn();
+    TBool isSomeElseZoomOn = isBrightnessModeOn || isContrastModeOn || isDialerOpen || isVolumeModeOn
+            || isDialerActivating || isWhiteBalanceModeOn || isColorToneModeOn || isCaptureModeOn;
+    TBool isSomeoneOn = isZoomModeOn || isSomeElseZoomOn;
+    TBool dimmed = EFalse;
+    const TVtUiMediaState& mediaState( iUiStates.MediaState() );
+    const TVtUiAudioState& audioState( iUiStates.AudioState() );
+
+    switch ( aCommandId )
+    {
+        case EVtUiCmdDisableVideo:
+        case EVtUiCmdSwapImagesPlaces:
+        case EVtUiCmdDisableAudio:
+        case EVtUiCmdEnableAudio:
+        case EVtUiCmdEnableVideo:
+            if ( isSomeoneOn )
+                {
+                dimmed = ETrue;
+                }
+            break;
+
+        case EVtUiCmdUsePrimaryCamera:
+        case EVtUiCmdUseSecondaryCamera:
+            if ( mediaState.IsSharing()
+                || isSomeoneOn )        
+                {
+                dimmed = ETrue;
+                } 
+            break;
+        case EVtUiCmdZoom:
+            if ( !mediaState.IsVideo() ||
+                mediaState.IsFrozen() ||
+                mediaState.IsSharing() ||
+                isSomeElseZoomOn )
+                {
+                dimmed = ETrue;
+                }
+            break;
+        
+        case EVtUiCmdShareObjectImage:
+            if ( mediaState.IsFrozen() ||
+                mediaState.IsVideoPermanentlyStopped() ||
+                isSomeoneOn )
+                {
+                dimmed = ETrue;
+                } 
+            break;
+        
+        case EVtUiCmdActivateBT:
+            if ( !audioState.CanActivateBtHf() ||
+                audioState.IsAudioPermanentlyStopped() ||
+                isSomeoneOn )
+                {
+                dimmed = ETrue;
+                }
+            break;
+        
+        case EVtUiCmdDeactivateLoudspeaker:
+            if ( !audioState.CanDeactivateLoudspeaker() ||
+                audioState.IsAudioPermanentlyStopped() ||
+                isSomeoneOn )
+                {
+                dimmed = ETrue;
+                }
+            break;
+        
+        case EVtUiCmdSwitchFromBTToIHF:
+            if ( !audioState.CanDeactivateBtHf() ||
+                !audioState.CanActivateLoudspeaker() ||
+                audioState.IsAudioPermanentlyStopped() ||
+                isSomeoneOn )
+                {
+                dimmed = ETrue;
+                }
+            break;
+        
+        case EVtUiCmdActivateLoudspeaker:
+            if ( !audioState.CanActivateLoudspeaker() ||
+                audioState.IsAudioPermanentlyStopped() ||
+                isSomeoneOn )
+                {
+                dimmed = ETrue;
+                }
+            break;
+        
+            /*
+            case EVtUiCmdSnapshot:
+            if ( iUiStates.IsContrastModeOn() || iUiStates.IsBrightnessModeOn ()
+            || isZoomModeOn || ( !iUiStates.MediaState().IsVideo() && 
+            !iUiStates.MediaState().IsFrozen() ) ||
+            !iUiStates.MediaState().IsFreezeSupported() || iUiStates.IsContrastModeOn() || 
+            iUiStates.IsBrightnessModeOn() || isVolumeModeOn )
+            {
+            dimmed = ETrue;
+            } 
+            break;
+            */                 
+        default:
+            dimmed = EFalse;
+            break;
+    }
+    
+    // update toolbar's commands visibility values
+    if ( dimmed )
+        {
+        iToolbar->SetCmdIdVisibilityStateL( aCommandId, 
+                CVtUiToolbarBase::EDimmed );
+        }
+    else
+        {
+        iToolbar->SetCmdIdVisibilityStateL( aCommandId, 
+                CVtUiToolbarBase::EShown );
+        }
+    __VTPRINTEXIT( "HideTbAct.HideOrShowToolbarControlL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiHideToolbarItemAction::EndProcess
+// ---------------------------------------------------------------------------
+//
+void CVtUiHideToolbarItemAction::EndProcess()
+    {
+    __VTPRINTENTER( "HideTbAct.EndProcess" )    
+    TRAP_IGNORE( iToolbar->UpdateToolbarL() );
+    __VTPRINTEXIT( "HideTbAct.EndProcess" )    
+    }   
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/toolbar/cvtuitoolbarbase.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,1260 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Base class for toolbar.
+*
+*/
+
+
+// INCLUDE FILES
+#include    <centralrepository.h>
+#include    <cvtlogger.h>
+#include    <akntoolbar.h>
+#include    <featmgr.h>
+#include    <StringLoader.h>
+#include    <videotelui.rsg>
+#include    "videotelui.hrh"
+#include    "cvtuitoolbarbase.h"
+#include    "mvtuifeature.h"
+#include    "tvtuistates.h"
+#include    "cvtuitoolbarcontext.h"
+#include    "cvtuitoolbarcmdpolicy.h"
+#include    "cvtuicommandpolicymanager.h"
+#include    "cvtuihidetoolbaritemaction.h"
+#include    "cvtuifeaturemanager.h"
+#include    "CVtUiAppUi.h"
+#include    "mvtuicommandui.h"
+#include    "cvtuitoolbarskmodifier.h"
+#include    "mvtuicommandmanager.h"
+#include    "mvtuicomponentmanager.h"
+#include    "cvtuitoolbarbutton.h"
+#include    "VideoTelephonyInternalCRKeys.h"
+#include 	"tVtuifeaturevariation.h"
+#include 	"cvtuitoolbarbutton.h"
+#include    <layoutmetadata.cdl.h>
+
+// Implementation of TVtUiToolbarComponentState
+
+// ---------------------------------------------------------------------------
+// TVtUiToolbarComponentState::TVtUiToolbarComponentState
+// ---------------------------------------------------------------------------
+//
+TVtUiToolbarComponentState::TVtUiToolbarComponentState(
+    MVtUiComponent& aComponent ) :
+    TVtUiComponentState( aComponent,
+        TVtUiBlockListBitField(
+            MVtUiComponent::EComponentIdNull ) )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// Used in FindToolbaItemByCommandId method to search toolbar item by cmd id.
+// ---------------------------------------------------------------------------
+//
+TInt ToolbarItemIdCmpFunc( const TInt* aId,
+    const CVtUiToolbarButton& aToolbarItem )
+    {
+    return ( *aId - aToolbarItem.CmdId() );
+    }
+
+
+// ---------------------------------------------------------------------------
+// Used in CreateToolbarItemL method to search feature by cmd id.
+// ---------------------------------------------------------------------------
+//
+TInt ToolbarCmpFunc( const CVtUiToolbarButton& aV1, const CVtUiToolbarButton& aV2 )
+    {
+    return ( aV1.CmdId() - aV2.CmdId() );
+    }
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::CVtUiToolbarBase
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CVtUiToolbarBase::CVtUiToolbarBase( CVtUiFeatureManager& aFeatureManager )
+    : CVtUiFeatureBase( EVtUiFeatureIdToolbar, aFeatureManager ),
+      iComponentState( *this )
+    {
+    __VTPRINTENTER( "Toolbar.CVtUiToolbarBase" )
+    // Get number of supported buttons.
+    // Six is the default value for floating toolbar
+    // and three buttons for fixed toolbar
+    TVtUiToolbarVariation toolbar;
+    iNumberOfToolbarButtons = toolbar.NumberOfButtons();
+    iCmdFocus = KErrNotFound;
+    __VTPRINTEXITR( "Toolbar.CVtUiToolbarBase %d", iNumberOfToolbarButtons )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::BaseConstructL
+// Symbian 2nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::BaseConstructL()
+    {
+    __VTPRINTENTER( "Toolbar.ConstructL" )
+    CVtUiFeatureBase::BaseConstructL();
+    iFeatureManager.UiStates().SetIsToolbarAvailable( ETrue );
+    __VTPRINTEXIT( "Toolbar.ConstructL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::~CVtUiToolbarBase
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CVtUiToolbarBase::~CVtUiToolbarBase()
+    {
+    __VTPRINTENTER( "Toolbar.~" )
+    // Stop();
+    // Stop can not be called here if toolbar is asked from ui fw = fixed toolbar.
+    // If stop is called a crash occurs, whose root cause can not be solved.
+    // It is related somehow with focus lost in ui fw.
+
+    Clean();
+    // unregister layout change
+    iFeatureManager.ComponentManager().ChangeLayoutChangeRegistration(
+        *this, MVtUiComponentManager::EUnregister );   
+    // no need tot call resetanddestroy because buttons ownership is
+    // transferred to akntoolbar.
+    iToolBarControls.Reset();
+    delete iToolbarCtx;
+    delete iToolbarCmdPolicy;
+    delete iHideToolbarItemAction;
+    delete iToolbarSKModifier;
+    iCmdIds.Close();
+    iCmdStates.Close();
+    __VTPRINTEXIT( "Toolbar.~" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::DynInitToolbarL
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::DynInitToolbarL( TInt /*aResourceId*/,
+    CAknToolbar* /*aToolbar*/ )
+    {
+    __VTPRINTENTER( "Toolbar.DynInitToolbarL" )
+    __VTPRINTEXIT( "Toolbar.DynInitToolbarL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::OfferToolbarEventL
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::OfferToolbarEventL( TInt aCommand )
+    {
+    __VTPRINTENTER( "Toolbar.OfferToolbarEventL" )
+    __VTPRINT2( DEBUG_GEN, "Toolbar.OfferToolbarEventL.aCommand=%d", aCommand )
+
+    // if capture mode is on all msk events must be converted to capture command
+    if ( iFeatureManager.UiStates().IsCaptureModeOn() )
+        {
+        iFeatureManager.AppUi().HandleCommandL( EVtUiCmdCapture );
+        return;
+        }
+
+        TInt command = MapCmdIdToChilId( aCommand );
+
+        if ( EVtUiCmdSwapImagesPlaces == command )
+            {
+            if ( !( iFeatureManager.AppUi().CanSwapImagePlaces() ) )
+                {
+                return;
+                }
+            }
+
+        iFeatureManager.AppUi().HandleCommandL( command );
+
+    __VTPRINTEXITR( "Toolbar.OfferToolbarEventL.cmd %d", aCommand )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::StartL
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::StartL()
+    {
+    CVtUiFeatureBase::StartL();
+    __VTPRINTENTER( "Toolbar.StartL" )
+    TInt error;
+    if ( iFeatureState == MVtUiFeature::EReady )
+        { 
+        TRAP( error, iFeatureManager.ComponentManager().
+            RequestActivationL( MVtUiComponent::EComponentIdToolbar ) );
+
+        // set state
+        iFeatureState = MVtUiFeature::EActive;
+        }
+    __VTPRINTEXITR( "Toolbar.StartL error = %d", error )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::Stop
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::Stop()
+    {
+    __VTPRINTENTER( "Toolbar.Stop" )
+    TInt error;
+    if ( iFeatureState == MVtUiFeature::EActive )
+        {
+        TRAP( error, iFeatureManager.ComponentManager().
+            DeActivateComponentL ( MVtUiComponent::EComponentIdToolbar ) );
+        // set state
+        iFeatureState = MVtUiFeature::EReady;
+        }
+    __VTPRINTEXITR( "Toolbar.Stop error = %d", error )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::InitFeature
+// Delayed initialization of the feature
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::InitFeatureL()
+    {
+    __VTPRINTENTER( "Toolbar.InitFeatureL" )
+    iFeatureState = EPreparing;
+    iToolBarControls.ReserveL( iNumberOfToolbarButtons );
+
+    //create toolbar
+    //iToolbar = CAknToolbar::NewL( R_VIDEOTELUI_TOOLBAR );
+
+    iToolbar->SetToolbarObserver( this );
+
+    // Prohibit toolbar sliding on UI.    
+    iToolbar->SetWithSliding( EFalse );
+
+    // create toolbar context and policy
+    iToolbarCtx =
+         CVtUiToolbarContext::NewL( iFeatureManager.CommandManager() );
+
+    iToolbarCmdPolicy = CVtUiToolbarCmdPolicy::NewL( *this );
+
+    // create toolbaraction
+    iHideToolbarItemAction = CVtUiHideToolbarItemAction::NewL( this,
+        iFeatureManager.UiStates() );
+
+    // create sofkey modifier
+    iToolbarSKModifier = CVtUiToolbarSKModifier::
+        NewL( iFeatureManager.AppUi(), iFeatureManager.UiStates() );
+
+    // set supported commands
+    PopulateCmdsIdsL();
+
+    User::LeaveIfError(
+       iFeatureManager.ComponentManager().ChangeComponentRegistration(
+       iComponentState, MVtUiComponentManager::ERegister ) );
+
+    User::LeaveIfError(
+       iFeatureManager.ComponentManager().ChangeLayoutChangeRegistration(
+       *this, MVtUiComponentManager::ERegister ) );
+
+    iFeatureState = EReady;
+
+    __VTPRINTEXIT( "Toolbar.InitFeatureL" )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::MapCmdIdToChilId
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiToolbarBase::MapCmdIdToChilId( TInt aCmdId )
+    {
+    __VTPRINTENTER( "Toolbar.MapCmdIdToChilId" )
+     __VTPRINT2( DEBUG_GEN, "Toolbar.MapCmdIdToChilId.aCmdId=%d", aCmdId )
+    TInt result = aCmdId;
+
+    CVtUiToolbarButton* tbButton = FindToolbarItemByCommandId( aCmdId );
+
+    const TInt stateIndexValue( tbButton->StateIndex() );
+    __VTPRINT2( DEBUG_GEN, "Toolbar.MapCmdIdToChilId.idx=%d", stateIndexValue )
+    switch( aCmdId )
+        {
+        case EVtUiCmdToolbarToggleVideo:
+            { 
+            switch ( stateIndexValue )
+                {
+            case 0:  
+            case 1:
+                result = EVtUiCmdDisableVideo;
+                break;
+            case 2:
+            case 3:
+                result = EVtUiCmdEnableVideo;
+                break;
+                }    
+            }
+            break;
+
+        case EVtUiCmdToolbarToggleMicrophone:
+            { 
+            switch ( stateIndexValue )
+                {
+            case 0:    
+            case 1:
+                result = EVtUiCmdDisableAudio;
+                break;
+            case 2:
+            case 3:
+                result = EVtUiCmdEnableAudio;
+                break;
+                }    
+            }
+            break;            
+
+        case EVtUiCmdToolbarAudioRouting:
+            {
+            switch ( stateIndexValue )
+                {
+            case 0:
+            case 1:
+                result = EVtUiCmdDeactivateLoudspeaker;
+                break;
+            case 2:
+            case 3:
+                result = EVtUiCmdSwitchFromBTToIHF;
+                break;
+            case 4:
+            case 5:
+                result = EVtUiCmdActivateLoudspeaker;
+                break;
+            case 6:
+            case 7:
+                result = EVtUiCmdActivateBT;
+                break;
+            default:
+                break;
+                };
+            }
+            break;
+
+        case EVtUiCmdToolbarToggleCamera:
+            {
+            switch ( stateIndexValue )
+                {
+            case 0:   
+            case 1:
+                result = EVtUiCmdUsePrimaryCamera;
+                break;
+            case 2:
+            case 3:
+                result = EVtUiCmdUseSecondaryCamera;
+                break;
+                }    
+            }
+            break;  
+     
+        default:
+            break;
+        }
+
+    if ( aCmdId == result )
+        {
+        TInt index( stateIndexValue - 1 );
+        if ( index < 0 )
+            {
+            index = tbButton->StatesCount() - 1;
+            }
+        tbButton->SetCurrentState( index, EFalse );
+        }
+
+    __VTPRINTEXITR( "Toolbar.MapCmdIdToChilId.result %d", (TInt)result )
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::MapCmdIdToParentId
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiToolbarBase::MapCmdIdToParentId( TInt aCmdId )
+    {
+    __VTPRINTENTER( "Toolbar.MapCmdIdToParentId" )
+    TInt result = aCmdId;
+        switch( aCmdId )
+            {
+            case EVtUiCmdDisableVideo:
+            case EVtUiCmdEnableVideo:
+                result = EVtUiCmdToolbarToggleVideo;
+                break;
+
+            case EVtUiCmdDisableAudio:
+            case EVtUiCmdEnableAudio:
+                result = EVtUiCmdToolbarToggleMicrophone;
+                break;
+
+            case EVtUiCmdActivateBT:
+            case EVtUiCmdSwitchFromBTToIHF:
+            case EVtUiCmdActivateLoudspeaker:
+            case EVtUiCmdDeactivateLoudspeaker:
+                result = EVtUiCmdToolbarAudioRouting;
+                break;
+
+            case EVtUiCmdUsePrimaryCamera:
+            case EVtUiCmdUseSecondaryCamera:
+                result = EVtUiCmdToolbarToggleCamera;
+                break;
+
+            default:
+                break;
+            }
+    __VTPRINTEXITR( "Toolbar.MapCmdIdToParentId.result %d", (TInt)result )
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::IsCmdIdVisibleInToggleButton
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiToolbarBase::IsCmdIdVisibleInToggleButton( TInt aCmdId )
+    {
+    __VTPRINTENTER( "Toolbar.IsCMdIdVisibleInTogB" )
+    TBool result( ETrue );
+    TInt cmdId( MapCmdIdToParentId( aCmdId ) );
+    TInt targetStateIndex( KErrNotFound );
+    switch( aCmdId )
+        {
+        case EVtUiCmdActivateBT:
+            targetStateIndex = 6;
+            break;
+
+        case EVtUiCmdActivateLoudspeaker:
+            targetStateIndex = 4;
+            break;
+
+        case EVtUiCmdSwitchFromBTToIHF:
+        case EVtUiCmdEnableVideo:
+        case EVtUiCmdEnableAudio:
+        case EVtUiCmdUseSecondaryCamera:
+            targetStateIndex = 2;
+            break;
+
+        case EVtUiCmdDisableVideo:
+        case EVtUiCmdDisableAudio:
+        case EVtUiCmdUsePrimaryCamera:
+        case EVtUiCmdDeactivateLoudspeaker:
+            targetStateIndex = 0;
+            break;
+
+        default:
+            break;
+        }
+
+    if ( targetStateIndex != KErrNotFound )
+        {
+        result = ( FindToolbarItemByCommandId( cmdId )
+            ->StateIndex() == targetStateIndex );
+        }
+
+    __VTPRINTEXITR( "Toolbar.IsCMdIdVisibleInTogB.result %d", (TInt)result )
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::PopulateCmdsIdsL
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::PopulateCmdsIdsL()
+    {
+    __VTPRINTENTER( "Toolbar.PopulateCmdsIdsL" )
+    CVtUiAppUi& appUi = iFeatureManager.AppUi();
+
+    // default commands
+    iCmdIds.AppendL( EVtUiCmdDisableVideo );
+    iCmdIds.AppendL( EVtUiCmdEnableVideo );
+    iCmdIds.AppendL( EVtUiCmdDisableAudio );
+    iCmdIds.AppendL( EVtUiCmdEnableAudio );
+
+    __VTPRINTEXIT( "Toolbar.PopulateCmdsIdsL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::SetToolbarVisibilityAfterLayoutChangeL
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::SetToolbarVisibilityAfterLayoutChangeL( TBool /*aVisible*/ )
+    {
+    __VTPRINTENTER( "Toolbar.SetToolbarVisibilityAfterLayoutChangeL" )
+    __VTPRINTEXIT( "Toolbar.SetToolbarVisibilityAfterLayoutChangeL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::IsToggleButtonHidden
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiToolbarBase::IsToggleButtonHidden(TInt aFirstCmdId, TInt aSecondCmdId )
+    {
+    __VTPRINTENTER( "Toolbar.IsToggleButtonHidden" )
+    TInt count = 0;
+    TBool result = EFalse;
+    for ( TInt i = 0; i < iCmdStates.Count(); i++ )
+        {
+        if ( iCmdStates[ i ].iCmdId == aFirstCmdId ||
+            iCmdStates[ i ].iCmdId == aSecondCmdId )
+            {
+            if ( iCmdStates[ i ].iNewState == EHidden )
+                {
+                count++;
+                }
+            }
+        }
+
+    if ( count > 1 )
+        {
+        __VTPRINT(DEBUG_GEN, "IsToggleButtonHidden.Count>1" )
+        result = ETrue;
+        }
+   __VTPRINTEXITR( "Toolbar.IsToggleButtonHidden.result%d", result )
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::Clean
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::Clean()
+    {
+    __VTPRINTENTER( "Toolbar.Clean" )
+    TRAP_IGNORE( CVtUiToolbarBase::DoDeactivateL() );
+    // unregister component change registration
+    iFeatureManager.ComponentManager().ChangeComponentRegistration(
+        iComponentState, MVtUiComponentManager::EUnregister );
+    __VTPRINTEXIT( "Toolbar.Clean" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::CreateToolbarButtons
+// -----------------------------------------------------------------------------
+//
+
+void CVtUiToolbarBase::CreateToolbarButtonsL()
+    {
+    __VTPRINTENTER( "Toolbar.CreateToolbarButtons" )
+    CVtUiAppUi& appUi = iFeatureManager.AppUi();
+
+    // two default buttons
+    // toggle video
+    CreateToolbarItemL( R_AVKONBUTTON_TOGGLE_VIDEO_BUTTON,
+        EVtUiCmdToolbarToggleVideo, appUi );
+
+    // toggle microphone
+    CreateToolbarItemL( R_AVKONBUTTON_TOGGLE_MICROPHONE_BUTTON,
+        EVtUiCmdToolbarToggleMicrophone, appUi );
+
+    __VTPRINTEXIT( "Toolbar.CreateToolbarButtons" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::CreateToolbarItemL
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::CreateToolbarItemL( TInt aResourceId, TInt aCommandId,
+    CVtUiAppUi& appUi  )
+    {
+    __VTPRINTENTER( "Toolbar.CreateToolbarItemL" )
+
+    CVtUiToolbarButton* toolbarItem = NULL;
+    TLinearOrder< CVtUiToolbarButton > linOrder( ::ToolbarCmpFunc );
+
+    // create toolbaritem
+    toolbarItem = CVtUiToolbarButton::NewLC( aResourceId, appUi, aCommandId );
+
+    // add toolbar item to toolbar
+    // CVtUiToolbarButton  ownership is transferred to akntoolbar
+    iToolbar->AddItemL( toolbarItem, EAknCtButton,
+                          aCommandId , NULL );
+
+    // add toolbar item to array
+    iToolBarControls.InsertInOrderL( toolbarItem, linOrder );
+
+    CleanupStack::Pop(); // toolbaritem
+
+    __VTPRINTEXIT( "Toolbar.CreateToolbarItemL" )
+    }
+
+
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::HideToolbarButton
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::HideToolbarButton( const TInt aCommandId, const TBool aHide,
+    const TBool aDrawNow )
+    {
+    __VTPRINTENTER( "Toolbar.HideToolbarButton" )
+    __VTPRINT2( DEBUG_GEN, "Toolbar.HideToolbarButton.aCommandId=%d", aCommandId )
+    TInt cmdId = MapCmdIdToParentId( aCommandId );
+
+    // unhide for toggle buttons not handled
+    if ( !aHide && cmdId != aCommandId )
+       {
+       return;
+       }
+
+    // Get toolbar item
+    CVtUiToolbarButton* tbItem = FindToolbarItemByCommandId( cmdId );
+
+    // get button's current state
+    TInt stateIndex = tbItem->StateIndex();
+
+    switch ( cmdId )
+        {
+        case EVtUiCmdToolbarToggleVideo:
+            // if both items should be hidden in togglebutton,
+            // then dim togglebutton
+            if ( IsToggleButtonHidden( EVtUiCmdDisableVideo,
+                    EVtUiCmdEnableVideo ) )
+                {
+                // update visibility state
+                TRAP_IGNORE(
+                    SetCmdIdVisibilityStateL( EVtUiCmdDisableVideo, EDimmed );
+                    SetCmdIdVisibilityStateL( EVtUiCmdEnableVideo, EDimmed );
+                    );
+                iToolbar->SetItemDimmed( cmdId, ETrue, EFalse );
+                return;
+                }
+            if ( ( stateIndex == 0 || stateIndex == 1 ) && 
+                EVtUiCmdDisableVideo == aCommandId )
+                {
+                tbItem->SetCurrentState ( 2, EFalse );
+                }
+             else if( ( stateIndex == 2 || stateIndex == 3 )&& 
+                EVtUiCmdEnableVideo == aCommandId )
+                {
+                tbItem->SetCurrentState ( 0, EFalse );
+                }
+            break;
+
+        case EVtUiCmdToolbarToggleMicrophone:
+            // if both items should be hidden in togglebutton,
+            // then dim togglebutton
+            if ( IsToggleButtonHidden( EVtUiCmdDisableAudio,
+                    EVtUiCmdEnableAudio ) )
+                {
+                // update visibility state
+                TRAP_IGNORE(
+                    SetCmdIdVisibilityStateL( EVtUiCmdDisableAudio, EDimmed );
+                    SetCmdIdVisibilityStateL( EVtUiCmdEnableAudio, EDimmed );
+                    );
+                iToolbar->SetItemDimmed( cmdId, ETrue, EFalse );
+                return;
+                }
+            if ( ( stateIndex == 0 || stateIndex == 1 ) && 
+                EVtUiCmdDisableAudio == aCommandId )
+                {
+                tbItem->SetCurrentState ( 2, EFalse );
+                }
+             else if( ( stateIndex == 2 || stateIndex == 3 ) &&
+                EVtUiCmdEnableAudio == aCommandId )
+                {
+                tbItem->SetCurrentState ( 0, EFalse );
+                }
+            break;
+
+        case EVtUiCmdToolbarAudioRouting:
+            {
+            const TBool isToggleButtonHidden(
+                IsToggleButtonHidden( EVtUiCmdActivateBT,
+                    EVtUiCmdSwitchFromBTToIHF ) &&
+                IsToggleButtonHidden( EVtUiCmdActivateLoudspeaker,
+                    EVtUiCmdDeactivateLoudspeaker )
+            );
+
+            if ( isToggleButtonHidden )
+                {
+                TRAP_IGNORE(
+                    SetCmdIdVisibilityStateL( EVtUiCmdActivateBT, EDimmed );
+                    SetCmdIdVisibilityStateL( EVtUiCmdDeactivateLoudspeaker,
+                        EDimmed );
+                    SetCmdIdVisibilityStateL( EVtUiCmdSwitchFromBTToIHF, EDimmed );
+                    SetCmdIdVisibilityStateL( EVtUiCmdActivateLoudspeaker,
+                        EDimmed );
+                    );
+                iToolbar->SetItemDimmed( cmdId, ETrue, EFalse );
+                return;
+                }
+            else
+                {
+                if ( tbItem )
+                    {
+                    const TVtUiAudioState& audioState(
+                        iFeatureManager.UiStates().AudioState() );
+
+                    TInt state( 0 ); // Deactivate loudspeaker
+
+                    if ( audioState.CanDeactivateBtHf() )
+                        {
+                        state = 2; //  Deactivate bthf
+                        }
+                    else if ( audioState.CanActivateBtHf() )
+                        {
+                        state = 6; // Activate bthf
+                        }
+                    else if ( audioState.CanActivateLoudspeaker() )
+                        {
+                        state = 4; // Activate loudspeaker
+                        }
+                    __VTPRINT2( DEBUG_GEN,
+                        "Toolbar.HideToolbarButton.AudioRoutingState=%d",
+                        state )
+                    tbItem->SetCurrentState ( state, EFalse );
+                    }
+                }
+            }
+            break;
+
+        case EVtUiCmdToolbarToggleCamera:
+            // if both items should be hidden in togglebutton,
+            // then dim togglebutton
+            if ( IsToggleButtonHidden( EVtUiCmdUsePrimaryCamera,
+                    EVtUiCmdUseSecondaryCamera ) )
+                {
+                // update visibility state
+                TRAP_IGNORE(
+                    SetCmdIdVisibilityStateL( EVtUiCmdUsePrimaryCamera, EDimmed );
+                    SetCmdIdVisibilityStateL( EVtUiCmdUseSecondaryCamera, EDimmed );
+                    );
+                iToolbar->SetItemDimmed( cmdId, ETrue, EFalse );
+                return;
+                }
+            if ( ( stateIndex == 0 || stateIndex == 1 ) && 
+                EVtUiCmdUsePrimaryCamera == aCommandId )
+                {
+                tbItem->SetCurrentState ( 2, EFalse );
+                }
+             else if( ( stateIndex == 2 || stateIndex == 3 ) &&
+                EVtUiCmdUseSecondaryCamera == aCommandId )
+                {
+                tbItem->SetCurrentState ( 0, EFalse );
+                }
+            break;
+
+        default:
+            iToolbar->HideItem( cmdId, aHide, aDrawNow);
+            __VTPRINT( DEBUG_GEN, "Toolbar.HideToolbarButton" )
+            break;
+        }
+    __VTPRINTEXIT( "Toolbar.HideToolbarButton" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::DimToolbar
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::DimToolbar( const TBool aDimmed, const TBool aDrawNow )
+    {
+    __VTPRINTENTER( "Toolbar.DimToolbar" )
+    __VTPRINT2( DEBUG_GEN, "Toolbar.DimToolbar.aDimmed=%d", (TInt)aDimmed )
+
+    TInt count = iCmdStates.Count();
+    for( TInt i = 0; i < count; i++ )
+        {
+        __VTPRINT2( DEBUG_GEN, "iCmdId = %d", iCmdStates[ i ].iCmdId )
+        __VTPRINT3( DEBUG_GEN, "iCmdStates.iOldState=%d iCmdStates.iNewState=%d", 
+                iCmdStates[ i ].iOldState, iCmdStates[ i ].iNewState )
+        // dim item
+        if ( iCmdStates[ i ].iNewState == EShown )
+            {
+            DimToolbarButton( iCmdStates[ i ].iCmdId, aDimmed, aDrawNow );
+            }
+        }
+    __VTPRINTEXIT( "Toolbar.DimToolbar" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::DimToolbarButton
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::DimToolbarButton( const TInt aCommandId, const TBool aDimmed,
+    const TBool aDrawNow )
+    {
+    __VTPRINTENTER( "Toolbar.DimToolbarButton" )
+    __VTPRINT2( DEBUG_GEN, "Toolbar.DimToolbarButton.aCmdId=%d", aCommandId )
+
+    // command not visible, no need to update button
+    if ( !IsCmdIdVisibleInToggleButton( aCommandId ) )
+        {
+        __VTPRINTEXIT("Toolbar.DimToolbarButton.NotVisible" )
+        return;
+        }
+    TInt cmdId = MapCmdIdToParentId( aCommandId );
+    // dim item
+    iToolbar->SetItemDimmed( cmdId, aDimmed, aDrawNow );
+    __VTPRINTEXIT( "Toolbar.DimToolbarButton" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::FindToolbaItemByCommandId
+// -----------------------------------------------------------------------------
+//
+CVtUiToolbarButton* CVtUiToolbarBase::FindToolbarItemByCommandId
+    ( const TInt aCommandId )
+    {
+    __VTPRINTENTER( "Toolbar.FindToolbarItemByCmdId" )
+    CVtUiToolbarButton* result = NULL;
+
+    TInt index( iToolBarControls.
+        FindInOrder( aCommandId,::ToolbarItemIdCmpFunc ) );
+
+    if ( index != KErrNotFound )
+        {
+        result = iToolBarControls[ index ];
+        }
+    __VTPRINTEXITR( "Toolbar.FindToolbarItemByCmdId.result %d", (TInt)result )
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::StartBlocking
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::BlockPointerEvents( TBool aIsBlocking )
+    {
+     __VTPRINTENTER( "Toolbar.BlockPointerEvents" )
+    for (TInt i = 0; i < iToolBarControls.Count(); ++i )
+        {
+        iToolBarControls[ i ]->BlockPointerEvents( aIsBlocking );
+        }
+    __VTPRINTEXITR( "Toolbar.BlockPointerEvents =%d", aIsBlocking )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::StopBlocking
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::BlockKeyEvents( TBool aIsBlocking )
+    {
+    __VTPRINTENTER( "Toolbar.BlockKeyEvents" )
+    for ( TInt i = 0; i < iToolBarControls.Count(); ++i )
+        {
+        iToolBarControls[ i ]->BlockKeyEvents( aIsBlocking );
+        }
+    __VTPRINTEXITR( "Toolbar.BlockKeyEvents =%d", aIsBlocking )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::IsDialerActive
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiToolbarBase::IsDialerActive() const
+    {
+    __VTPRINTENTER( "Toolbar.IsDialerActive" )
+    TBool ret( EFalse );
+    MVtUiFeature* dialer = iFeatureManager.
+        GetFeatureById( EVtUiFeatureIdDialer );
+        if ( dialer )
+            {
+            if ( dialer->State() == MVtUiFeature::EActive  )
+                {
+                ret = ETrue;
+                }
+            } 
+    __VTPRINTEXITR( "Toolbar.IsDialerActive =%d", ret )
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::NumberOfToolbarControls
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiToolbarBase::NumberOfToolbarControls() const
+    {
+    __VTPRINTENTER( "Toolbar.NumberOfToolbarControls" )
+    __VTPRINTEXIT( "Toolbar.NumberOfToolbarControls" )
+    return iCmdIds.Count();
+    }
+
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::CommandIdByCmdIdsArrayIndex
+// -----------------------------------------------------------------------------
+//
+ TInt CVtUiToolbarBase::CommandIdByCmdIdsArrayIndex( TInt aIndex ) const
+    {
+    __VTPRINTENTER( "Toolbar.CommandIdByCmdIdsArrayIndex" )
+    __VTPRINTEXIT( "Toolbar.CommandIdByCmdIdsArrayIndex.cmdId" )
+    return iCmdIds[aIndex];
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::UpdateToolbar
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::UpdateToolbarL()
+    {
+    __VTPRINTENTER( "Toolbar.UpdateToolbar" )
+    TVtUiStates& uiStates = iFeatureManager.UiStates();
+
+    // Zoom mode can be activated also from options menu
+    // therefore set zoom buttons state to latched
+    if ( uiStates.IsZoomModeOn() &&
+         IsCommandInToolbar( EVtUiCmdZoom )&&
+         FindToolbarItemByCommandId( EVtUiCmdZoom )
+           ->StateIndex() == 0  )
+        {
+        FindToolbarItemByCommandId( EVtUiCmdZoom )
+           ->SetCurrentState ( 1, ETrue );
+        }
+
+
+    if ( uiStates.IsCaptureModeOn() && IsCommandInToolbar( EVtUiCmdZoom ) )
+        {
+         __VTPRINT( DEBUG_GEN, "Toolbar.UpdateToolbarL.IsCaptureModeOn" )
+        // remove zoom mode button tooltip
+        FindToolbarItemByCommandId( EVtUiCmdZoom )
+           ->State( 0 )->SetHelpTextL( KNullDesC() );
+        // set zoom mode button to be focused
+        iToolbar->SetFocusedItemL( EVtUiCmdZoom );
+        }
+
+    TInt count = iCmdStates.Count();
+    for( TInt i = 0; i < count; i++ )
+       {
+       // no need to do anything
+       if ( iCmdStates[ i ].iOldState == iCmdStates[ i ].iNewState  )
+           {
+           if ( ( iCmdStates[ i ].iCmdId == EVtUiCmdDisableVideo ||
+                iCmdStates[ i ].iCmdId == EVtUiCmdEnableVideo ) &&
+                iCmdStates[ i ].iNewState != EShown  &&
+                !( iFeatureManager.UiStates().MediaState().IsSharing() ) )
+                {
+                CVtUiToolbarButton* tbButton =  static_cast< CVtUiToolbarButton* >(
+                    FindToolbarItemByCommandId( EVtUiCmdToolbarToggleVideo ) );
+                tbButton->SetCurrentState(
+                iFeatureManager.UiStates().MediaState().IsVideo() ? 0 : 2 , ETrue );
+                }
+           // for the case that EVtUiCmdDisableVideo and
+           // EVtUiCmdActivateBT command
+           // need to be shown but it is not visible in
+           // toogle button.
+           if ( ( iCmdStates[ i ].iCmdId == EVtUiCmdSwitchFromBTToIHF ||
+               iCmdStates[ i ].iCmdId == EVtUiCmdActivateBT ||
+               iCmdStates[ i ].iCmdId == EVtUiCmdActivateLoudspeaker ||
+               iCmdStates[ i ].iCmdId == EVtUiCmdDeactivateLoudspeaker ||
+               iCmdStates[ i ].iCmdId == EVtUiCmdDisableAudio ||
+               iCmdStates[ i ].iCmdId == EVtUiCmdEnableAudio  ||
+               iCmdStates[ i ].iCmdId == EVtUiCmdDisableVideo  ||
+               iCmdStates[ i ].iCmdId == EVtUiCmdEnableVideo) &&
+                   iCmdStates[ i ].iNewState == EShown )
+               {
+               // Nothing goes here.
+               }
+           else
+               {
+               continue;
+               }
+           }
+       // dim item
+       if ( iCmdStates[ i ].iNewState == EDimmed )
+           {
+           DimToolbarButton( iCmdStates[ i ].iCmdId, ETrue, EFalse );
+           }
+       // hide item
+       // currently used only for toggle buttons
+       // otherwise EDrawNow parameter must be updated for last element
+       else if ( iCmdStates[ i ].iNewState == EHidden )
+           {
+           HideToolbarButton( iCmdStates[ i ].iCmdId, ETrue, EFalse );
+           }
+       // show item
+       else if ( iCmdStates[ i ].iNewState == EShown )
+           {
+           // items are undimmed if they were dimmed
+           // iCmdStates[ i ].iOldState == EDimmed  comparison does
+           // not work with toggle buttons.
+           // That is why all buttons are undimmed.
+           DimToolbarButton( iCmdStates[ i ].iCmdId, EFalse, EFalse );
+
+           HideToolbarButton( iCmdStates[ i ].iCmdId, EFalse, EFalse );
+           }
+       }
+
+    // capture mode ended remove zoom button's latched state
+    if ( !uiStates.IsZoomModeOn() &&
+         IsCommandInToolbar( EVtUiCmdZoom )&&
+         FindToolbarItemByCommandId( EVtUiCmdZoom )->StateIndex() == 1 )
+        {
+        FindToolbarItemByCommandId( EVtUiCmdZoom )
+            ->SetCurrentState ( 0, ETrue );
+        }
+
+    // if capture mode was activated set zoom mode button active
+    if ( uiStates.IsCaptureModeOn() && IsCommandInToolbar( EVtUiCmdZoom ) )
+       {
+       // set latched (selected) state
+       FindToolbarItemByCommandId( EVtUiCmdZoom )
+            ->SetCurrentState ( 1, ETrue);
+       }
+    else
+       {
+       // tooltip must be returned to zoom mode button
+       // only after zoom mode buttons latched state is changed
+       // because changing the buttons state will draw the tooltip
+       if ( IsCommandInToolbar( EVtUiCmdZoom ) &&
+            ( KNullDesC() == ( FindToolbarItemByCommandId( EVtUiCmdZoom )
+                ->State(0)->HelpText() ) ) )
+            {
+            HBufC* tooltip = StringLoader::LoadLC( R_VIDEOTELUI_TOOLTIP_ZOOM );
+            FindToolbarItemByCommandId( EVtUiCmdZoom )
+                ->State(0)->SetHelpTextL( *tooltip );
+            CleanupStack::PopAndDestroy( ); // tooltip
+            }
+        }
+
+    // draw toolbar
+    //iToolbar->DrawDeferred();
+    iToolbar->DrawNow();
+    __VTPRINTEXIT( "Toolbar.UpdateToolbar" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::SetCmdIdVisibilityStateL
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::SetCmdIdVisibilityStateL( TInt aCmdId,
+    TCmdStateFlags aNewState )
+    {
+    __VTPRINTENTER( "Toolbar.SetCmdIdVisibilityStateL" )
+    __VTPRINT2( DEBUG_GEN, "Toolbar.SetCmdIdVbStateL.aCmdId=%d", aCmdId )
+    __VTPRINT2( DEBUG_GEN, "Toolbar.SetCmdIdVbStateL.aNewState=%d", aNewState )
+
+    TInt result = KErrNotFound;
+    for ( TInt i = 0; i < iCmdStates.Count(); i++ )
+        {
+        if ( iCmdStates[ i ].iCmdId == aCmdId )
+            {
+            // command found
+            result = i;
+            break;
+            }
+        }
+    // new item
+    // add to array
+    if( result == KErrNotFound )
+        {
+        TCommandState state;
+        state.iCmdId = aCmdId;
+        state.iOldState = ENotInitialized;
+        state.iNewState = aNewState;
+        iCmdStates.AppendL( state );
+        }
+    else // old item
+        {
+        iCmdStates[ result ].iOldState = iCmdStates[ result ].iNewState;
+        iCmdStates[ result ].iNewState = aNewState;
+        }
+
+    __VTPRINTEXIT( "Toolbar.SetCmdIdVbStateL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::IsCommandInToolbar
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiToolbarBase::IsCommandInToolbar( TInt aCmdId ) const
+    {
+    __VTPRINTENTER( "Toolbar.SetCmdIdVisibilityStateL" )
+    TBool result = EFalse;
+    for ( TInt i = 0; i < iCmdIds.Count(); i++ )
+        {
+        if ( iCmdIds[ i ] == aCmdId )
+            {
+            result = ETrue;
+            break;
+            }
+        }
+    __VTPRINTEXITR( "Toolbar.IsCommandInToolbar.result %d", (TInt)result )
+    return result;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::RefreshL
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::RefreshL()
+    {
+    __VTPRINTENTER( "Toolbar.RefreshL" )
+    iFeatureManager.CommandManager().
+        ValidateToolbarItemsL( *iHideToolbarItemAction );
+    __VTPRINTEXIT( "Toolbar.RefreshL" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::AddCommandModifier
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiToolbarBase::AddCommandModifier( CVtUiCommandModifyBase& /*aModifier*/ )
+    {
+    __VTPRINTENTER( "Toolbar.AddCommandModifier" )
+    __VTPRINTEXIT( "Toolbar.AddCommandModifier" )
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::RemoveCommandModifier
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::RemoveCommandModifier( CVtUiCommandModifyBase& /*aModifier*/ )
+    {
+    __VTPRINTENTER( "Toolbar.RemoveCommandModifier" )
+    __VTPRINTEXIT( "Toolbar.RemoveCommandModifier" )
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::ComponentId
+// -----------------------------------------------------------------------------
+//
+MVtUiComponent::TComponentId CVtUiToolbarBase::ComponentId() const
+    {
+    __VTPRINTENTER( "Toolbar.ComponentId" )
+    __VTPRINTEXIT( "Toolbar.ComponentId" )
+    return MVtUiComponent::EComponentIdToolbar;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::ComponentAsControl
+// -----------------------------------------------------------------------------
+//
+CCoeControl* CVtUiToolbarBase::ComponentAsControl()
+    {
+    __VTPRINTENTER( "Toolbar.ComponentAsControl" )
+    __VTPRINTEXIT( "Toolbar.ComponentAsControl" )
+    return NULL;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::DoActivateL
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::DoActivateL()
+    {
+    __VTPRINTENTER( "Toolbar.DoActivateL" )
+    // add command ui to commandmanager
+    User::LeaveIfError(
+        iFeatureManager.CommandManager().AddCommandUi( *this ) );
+    // add command modifier
+    User::LeaveIfError( iFeatureManager.
+       CommandManager().AddCommandModifier( *iToolbarSKModifier ) );
+    // add validator
+    User::LeaveIfError( iFeatureManager.CommandManager().
+        AddValidator( *iToolbarCmdPolicy ) );
+    // refresh
+    iFeatureManager.CommandManager().RefreshL();
+    __VTPRINTEXIT( "Toolbar.DoActivateL" )
+    }
+
+
+// -----------------------------------------------------------------------------
+// CVtUiToolbarBase::DoDeactivateL
+// -----------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::DoDeactivateL()
+    {
+    __VTPRINTENTER( "Toolbar.DoDeactivateL" )
+    // remove command modifier
+    iFeatureManager.CommandManager().
+        RemoveCommandModifier( *iToolbarSKModifier );
+    // remove command validator
+    iFeatureManager.CommandManager().RemoveValidator( *iToolbarCmdPolicy );
+     // remove commandui
+    iFeatureManager.CommandManager().RemoveCommandUi( *this );
+    if ( iToolbar )
+        {
+        __VTPRINT(DEBUG_GEN, "Toolbar.DoDeactivateL, iToolbar is not null" )
+        iToolbar->DrawNow();
+        }
+    __VTPRINTEXIT( "Toolbar.DoDeactivateL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiToolbarBase::HandleLayoutChangeL
+// ---------------------------------------------------------------------------
+//
+void CVtUiToolbarBase::HandleLayoutChangeL()
+    {
+    __VTPRINTENTER( "CVtUiToolbarBase.HandleLayoutChangeL" )
+    TBool isLandscape  = Layout_Meta_Data::IsLandscapeOrientation();
+    CEikMenuBar* menuBar = CEikonEnv::Static()->AppUiFactory()->MenuBar();
+    
+    // This check prevents toolbar from drawing over the dialer
+    // when orientation is changed from landscape to portrait
+    
+    // Transition from landsacpe to portrait
+    // toolbar must be hided
+    if ( !isLandscape && IsDialerActive() )
+        {
+        __VTPRINT( DEBUG_GEN, "ToolbarBase::HandleLayoutChangeL DialerActive." )
+        SetToolbarVisibilityAfterLayoutChangeL( EFalse );
+        }
+    else if ( !isLandscape && iFeatureManager.UiStates().IsCaptureModeOn() )
+        {
+        __VTPRINT( DEBUG_GEN, "ToolbarBase::HandleLayoutChangeL CaptureOn." )
+        SetToolbarVisibilityAfterLayoutChangeL( EFalse );
+        }
+    else if ( iFeatureManager.UiStates().IsSelectingShare() )
+        {
+        __VTPRINT( DEBUG_GEN, "ToolbarBase::HandleLayoutChangeL ShareImage." )
+        SetToolbarVisibilityAfterLayoutChangeL( EFalse );
+        }
+    else if ( !isLandscape && iFeatureManager.UiStates().IsVideoQualityModeOn() )
+        {
+        __VTPRINT( DEBUG_GEN, "ToolbarBase::HandleLayoutChangeL Video Quality." )
+        SetToolbarVisibilityAfterLayoutChangeL( EFalse );
+        }
+    else if ( !isLandscape && iFeatureManager.UiStates().IsWhiteBalanceModeOn() )
+        {
+        __VTPRINT( DEBUG_GEN, "ToolbarBase::HandleLayoutChangeL White Balance." )
+        SetToolbarVisibilityAfterLayoutChangeL( EFalse );
+        }
+    else if ( !isLandscape && iFeatureManager.UiStates().IsColorToneModeOn() )
+        {
+        __VTPRINT( DEBUG_GEN, "ToolbarBase::HandleLayoutChangeL Color Tone." )
+        SetToolbarVisibilityAfterLayoutChangeL( EFalse );
+        }
+    else if ( !isLandscape && iFeatureManager.UiStates().IsVolumeModeOn() )
+        {
+        SetToolbarVisibilityAfterLayoutChangeL( EFalse );
+        }
+    else if ( !isLandscape && menuBar && menuBar->IsDisplayed() )
+        {
+        __VTPRINT( DEBUG_GEN, "ToolbarBase::HandleLayoutChangeL Menu Displayed." )
+        SetToolbarVisibilityAfterLayoutChangeL( EFalse );
+        }
+    // Transition from portrait to landsacpe
+    // toolbar must be set to visible
+    else if ( isLandscape && ( 
+            IsDialerActive() ||
+            iFeatureManager.UiStates().IsCaptureModeOn() ||
+            iFeatureManager.UiStates().IsVideoQualityModeOn() ||
+            iFeatureManager.UiStates().IsWhiteBalanceModeOn() ||
+            iFeatureManager.UiStates().IsColorToneModeOn() ||
+            iFeatureManager.UiStates().IsVolumeModeOn() ||
+            menuBar && menuBar->IsDisplayed() ) )
+        {
+        __VTPRINT(DEBUG_GEN, "CVtUiToolbarBase.LayoutChangeL.StartL" )
+        SetToolbarVisibilityAfterLayoutChangeL( ETrue );
+        }
+    __VTPRINTEXIT( "CVtUiToolbarBase.HandleLayoutChangeL" )
+    }
+
+//  End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/toolbar/cvtuitoolbarbutton.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,191 @@
+/*
+* 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:  CVtUiToolbarButton implementation.
+*
+*/
+
+
+// INCLUDE FILES
+#include    <cvtlogger.h>
+#include    "cvtuitoolbarbutton.h"
+#include    "CVtUiAppUi.h"
+#include    "videotelui.hrh"
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPane::NewL
+// -----------------------------------------------------------------------------
+//
+CVtUiToolbarButton* CVtUiToolbarButton::NewL( TInt aResourceId,
+	CVtUiAppUi& aAppUi, TInt aCmdId  )
+    {
+    __VTPRINTENTER( "CVtUiToolbarButton.NewL" )
+    CVtUiToolbarButton* self = CVtUiToolbarButton::NewLC( aResourceId, aAppUi,
+        aCmdId );
+    CleanupStack::Pop( self );
+    __VTPRINTEXIT( "CVtUiToolbarButton.NewL" )
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiNaviPane::NewLC
+// -----------------------------------------------------------------------------
+//
+CVtUiToolbarButton* CVtUiToolbarButton::NewLC( TInt aResourceId,
+	CVtUiAppUi& aAppUi, TInt aCmdId  )
+    {
+    __VTPRINTENTER( "CVtUiToolbarButton.NewLC" )
+    CVtUiToolbarButton* self = new ( ELeave ) CVtUiToolbarButton( aAppUi,
+        aCmdId );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    self->ConstructFromResourceL( aResourceId );
+    __VTPRINTEXIT( "CVtUiToolbarButton.NewLC" )
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CVtUiToolbarButton::~CVtUiToolbarButton
+// ----------------------------------------------------------------------------
+//
+CVtUiToolbarButton::~CVtUiToolbarButton()
+    {
+    __VTPRINTENTER( "CVtUiToolbarButton.~" )
+    __VTPRINTEXIT( "CVtUiToolbarButton.~" )
+    }
+
+// ----------------------------------------------------------------------------
+// CVtUiToolbarButton::CVtUiToolbarButton
+// ----------------------------------------------------------------------------
+//
+CVtUiToolbarButton::CVtUiToolbarButton( CVtUiAppUi& aAppUi, TInt aCmdId )
+: CAknButton( 0 ), iAppUi( aAppUi ), iCmdId ( aCmdId ),
+    iIsBlockingKeyEvents ( EFalse ), iIsBlockingPointerEvents( EFalse )
+    {
+    __VTPRINTENTER( "CVtUiToolbarButton.CVtUiToolbarButton" )
+    __VTPRINTEXIT( "CVtUiToolbarButton.CVtUiToolbarButton")
+    }
+
+// ----------------------------------------------------------------------------
+// CVtUiToolbarButton::ShowHelpL
+// ----------------------------------------------------------------------------
+//
+void CVtUiToolbarButton::ShowHelpL()
+    {
+    __VTPRINTENTER( "CVtUiToolbarButton.ShowHelpL" )
+    CAknButton::ShowHelpL();
+    __VTPRINTEXIT( "CVtUiToolbarButton.ShowHelpL")
+    }
+
+// ----------------------------------------------------------------------------
+// CVtUiToolbarButton::CmdId
+// ----------------------------------------------------------------------------
+//
+TInt CVtUiToolbarButton::CmdId() const
+    {
+    __VTPRINTENTER( "CVtUiToolbarButton.CmdId" )
+    __VTPRINTEXIT( "CVtUiToolbarButton.CmdId")
+    return iCmdId;
+    }
+
+// ----------------------------------------------------------------------------
+// CVtUiToolbarButton::BlockPointerEvents
+// ----------------------------------------------------------------------------
+//
+void CVtUiToolbarButton::BlockPointerEvents( TBool aIsBlocking )
+    {
+    __VTPRINTENTER( "CVtUiToolbarButton.BlockPointerEvents" )
+    iIsBlockingPointerEvents = aIsBlocking;
+    __VTPRINTEXITR( "CVtUiToolbarButton.BlockPointerEvents=%d", aIsBlocking )
+    }
+
+// ----------------------------------------------------------------------------
+// CVtUiToolbarButton::BlockKeyEvents
+// ----------------------------------------------------------------------------
+//
+void CVtUiToolbarButton::BlockKeyEvents( TBool aIsBlocking )
+    {
+    __VTPRINTENTER( "CVtUiToolbarButton.BlockKeyEvents" )
+    iIsBlockingKeyEvents = aIsBlocking;
+    __VTPRINTEXITR( "CVtUiToolbarButton.BlockKeyEvents=%d", aIsBlocking )
+    }
+
+// ----------------------------------------------------------------------------
+// CVtUiToolbarButton::OfferKeyEventL
+// ----------------------------------------------------------------------------
+//
+TKeyResponse CVtUiToolbarButton::OfferKeyEventL( const TKeyEvent& aKeyEvent,
+    TEventCode aType )
+    {
+    __VTPRINTENTER( "CVtUiToolbarButton.OfferKeyEventL" )
+    if ( IsCommandActive() && iIsBlockingKeyEvents )
+        {
+         __VTPRINTEXIT( "CVtUiToolbarButton.OfferKeyEventL.Blocked" )
+        return EKeyWasConsumed;
+        }
+ 	__VTPRINTEXIT( "CVtUiToolbarButton.OfferKeyEventL" )
+    return CAknButton::OfferKeyEventL( aKeyEvent, aType);
+   }
+
+// ----------------------------------------------------------------------------
+// CVtUiToolbarButton::HandlePointerEventL
+// ----------------------------------------------------------------------------
+//
+void CVtUiToolbarButton::HandlePointerEventL( const
+    TPointerEvent& aPointerEvent )
+    {
+    __VTPRINTENTER( "CVtUiToolbarButton.HandlePointerEventL" )
+    if ( IsCommandActive() && iIsBlockingPointerEvents )
+        {
+        __VTPRINTEXIT( "CVtUiToolbarButton.HandlePointerEventL.Blocked" )
+        return;
+        }
+    __VTPRINTEXIT( "CVtUiToolbarButton.HandlePointerEventL.To.AknButton" )
+    return CAknButton::HandlePointerEventL( aPointerEvent );
+    }
+
+// ----------------------------------------------------------------------------
+// CVtUiToolbarButton::StatesCount
+// ----------------------------------------------------------------------------
+//
+TInt CVtUiToolbarButton::StatesCount() const
+    {
+    return iStates->Count();
+    }
+
+// ----------------------------------------------------------------------------
+// CVtUiToolbarButton::IsCommandActive
+// ----------------------------------------------------------------------------
+//
+TBool CVtUiToolbarButton::IsCommandActive() const
+    {
+    __VTPRINTENTER( "CVtUiToolbarButton.IsCommandActive" )
+    TBool value( EFalse );
+    value = ( iAppUi.IsActiveCommand( EVtUiCmdDisableVideo ) ||
+              iAppUi.IsActiveCommand( EVtUiCmdEnableVideo ) ||
+              iAppUi.IsActiveCommand( EVtUiCmdEnableAudio ) ||
+              iAppUi.IsActiveCommand( EVtUiCmdDisableAudio ) ||
+              iAppUi.IsActiveCommand( EVtUiCmdUsePrimaryCamera ) ||
+              iAppUi.IsActiveCommand( EVtUiCmdUseSecondaryCamera ) ||
+              // Audio routing to blocking
+              iAppUi.IsActiveCommand( EVtUiCmdActivateBT ) ||
+              iAppUi.IsActiveCommand( EVtUiCmdSwitchFromBTToIHF ) ||
+              iAppUi.IsActiveCommand( EVtUiCmdActivateLoudspeaker ) ||
+              iAppUi.IsActiveCommand( EVtUiCmdDeactivateLoudspeaker )
+              );
+
+    __VTPRINTEXITR( "CVtUiToolbarButton.IsCommandActive=%d", value )
+    return value;
+    }
+//  End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/toolbar/cvtuitoolbarcmdpolicy.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,142 @@
+/*
+* 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:  Toolbar command policy implementation.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "cvtuitoolbarcmdpolicy.h"
+#include "cvtuicmdvalidationactionbase.h"
+#include "tvtuicmdvalidatorcallback.h"
+#include "cvtuitoolbarbase.h"
+#include "videotelui.hrh"
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiToolbarCmdPolicy::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiToolbarCmdPolicy* CVtUiToolbarCmdPolicy::NewL( CVtUiToolbarBase& aToolbar )
+    {
+    __VTPRINTENTER( "ToolbarCmdPolicy.NewL" )
+    CVtUiToolbarCmdPolicy* self = new ( ELeave ) CVtUiToolbarCmdPolicy(
+        aToolbar );
+    __VTPRINTEXIT( "ToolbarCmdPolicy.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiToolbarCmdPolicy::ValidateMenuItemsL
+// ---------------------------------------------------------------------------
+//
+void CVtUiToolbarCmdPolicy::ValidateMenuItemsL(
+    CVtUiCmdValidationActionBase& aAction, TInt /*aReferencePriority*/ )
+    {
+    __VTPRINTENTER( "ToolbarCmdPolicy.ValidateMenuItemsL" )
+    aAction.ProcessL(
+        TVtUiCmdValidatorCallBack< CVtUiToolbarCmdPolicy >( *this,
+            ValidateMenuCommand ) );
+    __VTPRINTEXIT( "ToolbarCmdPolicy.ValidateMenuItemsL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiToolbarCmdPolicy::ValidateSoftkeyItemsL
+// ---------------------------------------------------------------------------
+//
+void CVtUiToolbarCmdPolicy::ValidateSoftkeyItemsL(
+    CVtUiCmdValidationActionBase& /*aAction*/, TInt /*aReferencePriority*/ )
+    {
+    __VTPRINTENTER( "ToolbarCmdPolicy.ValidateSoftkeyItemsL" )
+    __VTPRINTEXIT( "ToolbarCmdPolicy.ValidateSoftkeyItemsL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiToolbarCmdPolicy::ValidateToolbarItemsL
+// ---------------------------------------------------------------------------
+//
+void CVtUiToolbarCmdPolicy::ValidateToolbarItemsL(
+    CVtUiCmdValidationActionBase& /*aAction*/, TInt /*aReferencePriority*/ )
+    {
+    __VTPRINTENTER( "ToolbarCmdPolicy.ValidateToolbarItemsL" )
+    __VTPRINTEXIT( "ToolbarCmdPolicy.ValidateToolbarItemsL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiToolbarCmdPolicy::CustomValidationL
+// ---------------------------------------------------------------------------
+//
+void CVtUiToolbarCmdPolicy::CustomValidationL(
+    CVtUiCmdCustomValidationActionBase&, TInt )
+    {
+    __VTPRINTENTER( "ToolbarCmdPolicy.CustomValidationL" )
+    __VTPRINTEXIT( "ToolbarCmdPolicy.CustomValidationL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiToolbarCmdPolicy::ValidatesContext
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiToolbarCmdPolicy::ValidatesContext(
+    const TVtUiCmdContextType& aCtxType ) const
+    {
+    __VTPRINTENTER( "ToolbarCmdPolicy.ValidatesContext" )
+
+    TBool result( EFalse );
+
+    switch ( aCtxType )
+        {
+    case EVtUiCmdContextTypeMenu:
+    case EVtUiCmdContextTypeSoftkey:
+    case EVtUiCmdContextTypeToolbar:
+        result = ETrue;
+        break;
+
+    default:
+        break;
+        }
+
+    __VTPRINTEXITR( "ToolbarCmdPolicy.ValidatesContext %d", result )
+
+    return result;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiToolbarCmdPolicy::CVtUiToolbarCmdPolicy
+// ---------------------------------------------------------------------------
+//
+CVtUiToolbarCmdPolicy::CVtUiToolbarCmdPolicy( CVtUiToolbarBase& aToolbar )
+    : CVtUiCmdValidatorBase( EVtUiCmdPolicyPriorityToolbar ),
+      iToolbar( aToolbar )
+    {
+    __VTPRINTENTER( "ToolbarCmdPolicy.ctor" )
+    __VTPRINTEXIT( "ToolbarCmdPolicy.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiToolbarCmdPolicy::ValidateMenuCommand
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiToolbarCmdPolicy::ValidateMenuCommand( TInt /*aCommandId*/ ) const
+    {
+    __VTPRINTENTER( "ToolbarCmdPolicy.ValidateMenuCommand" )
+    // all commands are also in options menu
+    __VTPRINTEXIT( "ToolbarCmdPolicy.ValidateMenuCommand")
+    return EFalse;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/toolbar/cvtuitoolbarcontext.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,91 @@
+/*
+* 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:  Toolbar context implementation.
+*
+*/
+
+
+#include <cvtlogger.h>
+
+#include "cvtuitoolbarcontext.h"
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiToolbarContext::~CVtUiToolbarContext
+// ---------------------------------------------------------------------------
+//
+CVtUiToolbarContext::~CVtUiToolbarContext()
+    {
+    __VTPRINTENTER( "ToolbarCtx.~" )
+    UnregisterCommandContext();
+    __VTPRINTEXIT( "ToolbarCtx.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiToolbarContext::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiToolbarContext* CVtUiToolbarContext::NewL(
+    MVtUiCommandManager& aCommandManager )
+    {
+    __VTPRINTENTER( "ToolbarCtx.NewL" )
+    CVtUiToolbarContext* self =
+        new ( ELeave ) CVtUiToolbarContext( aCommandManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "ToolbarCtx.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiToolbarContext::ValidateL
+// ---------------------------------------------------------------------------
+//
+void CVtUiToolbarContext::ValidateL( CVtUiCmdValidationActionBase& aAction )
+    {
+    __VTPRINTENTER( "ToolbarCtx.ValidateL" )
+    ValidateToolbarItemsL( aAction );
+    __VTPRINTEXIT( "ToolbarCtx.ValidateL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiToolbarContext::CVtUiToolbarContext
+// ---------------------------------------------------------------------------
+//
+CVtUiToolbarContext::CVtUiToolbarContext(
+    MVtUiCommandManager& aCommandManager )
+    : CVtUiCmdContext( aCommandManager, EVtUiCmdContextTypeToolbar,
+      KVtUiToolbarContextPriority )
+    {
+    __VTPRINTENTER( "ToolbarCtx.ctor" )
+    __VTPRINTEXIT( "ToolbarCtx.ctor" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiToolbarContext::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiToolbarContext::ConstructL()
+    {
+    __VTPRINTENTER( "ToolbarCtx.ConstructL" )
+    RegisterCommandContextL();
+    __VTPRINTEXIT( "ToolbarCtx.ConstructL" )
+    }
+    
+//  End of File
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/toolbar/cvtuitoolbarskmodifier.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,116 @@
+/*
+* 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:  Softkey modifier class implementation.
+*
+*/
+
+
+#include    <cvtlogger.h>
+#include    "cvtuitoolbarskmodifier.h"
+#include    "mvtuicommandsetting.h"
+#include    "tvtuicommandmodifierpriority.h"
+#include    "CVtUiAppUi.h"
+#include    "tvtuistates.h"
+#include    <eikbtgpc.h>
+#include    <videotelui.rsg>
+
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CVtUiToolbarSKModifier::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiToolbarSKModifier* CVtUiToolbarSKModifier::NewL( CVtUiAppUi& aAppUi,
+    const TVtUiStates& aUiStates )
+    {
+    __VTPRINTENTER( "CVtUiToolbarSKModifier.NewL" )
+    CVtUiToolbarSKModifier* self =
+        new ( ELeave ) CVtUiToolbarSKModifier( aAppUi, aUiStates );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(); // self
+    __VTPRINTEXIT( "CVtUiToolbarSKModifier.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiToolbarSKModifier::~CVtUiToolbarSKModifier
+// ---------------------------------------------------------------------------
+//
+CVtUiToolbarSKModifier::~CVtUiToolbarSKModifier()
+    {
+    __VTPRINTENTER( "CVtUiToolbarSKModifier.~" )
+    __VTPRINTEXIT( "CVtUiToolbarSKModifier.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiToolbarSKModifier::CVtUiToolbarSKModifier
+// ---------------------------------------------------------------------------
+//
+CVtUiToolbarSKModifier::CVtUiToolbarSKModifier( CVtUiAppUi& aAppUi,
+    const TVtUiStates& aUiStates ) :
+    CVtUiCommandModifyBase ( EVtUiCmdModifierPriorityToolbar ),
+    iAppUi ( aAppUi ), iUiStates ( aUiStates )
+    {
+    __VTPRINTENTER( "CVtUiToolbarSKModifier.Ctr" )
+    __VTPRINTEXIT( "CVtUiToolbarSKModifier.Ctr" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiToolbarSKModifier::CVtUiToolbarSKModifier
+// ---------------------------------------------------------------------------
+//
+void CVtUiToolbarSKModifier::ConstructL()
+    {
+    __VTPRINTENTER( "CVtUiToolbarSKModifier.ConstructL" )
+    __VTPRINTEXIT( "CVtUiToolbarSKModifier.ConstructL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiToolbarSKModifier::CVtUiToolbarSKModifier
+// ---------------------------------------------------------------------------
+//
+void CVtUiToolbarSKModifier::ModifyCommandsL(
+     MVtUiCommandSetting& aCommandSettings )
+    {
+    __VTPRINTENTER( "CVtUiToolbarSKModifier.ModifyCommandsL" )
+    aCommandSettings.DoDefineCommandsL();
+
+    // No need to change MSK during snapshot
+    if ( iUiStates.IsCaptureModeOn() )
+        {
+        return;
+        }
+
+    CEikButtonGroupContainer* cba = iAppUi.GetCba();
+    const TInt mskIndex = 3;
+    // Set selection key to msk
+    cba->SetCommandL( mskIndex, R_VIDEOTELUI_SELECT_CBA_BUTTON );
+    __VTPRINTEXIT( "CVtUiToolbarSKModifier.ModifyCommandsL" )
+    }
+// ---------------------------------------------------------------------------
+// CVtUiToolbarSKModifier::CVtUiToolbarSKModifier
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiToolbarSKModifier::Supports( MVtUiCommandSetting::Type aType ) const
+    {
+    __VTPRINTENTER( "CVtUiToolbarSKModifier.Supports" )
+    __VTPRINTEXIT( "CVtUiToolbarSKModifier.Supports" )
+    return ( aType == MVtUiCommandSetting::ECommandTypeSoftkeys );
+    }
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/toolbar/tvtuitoolbarcommanditerator.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,53 @@
+/*
+* 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:  Toolbar command iterator implementation.
+*
+*/
+
+
+#include "cvtuitoolbarbase.h"
+#include "tvtuitoolbarcommanditerator.h"
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// TVtUiToolbarCommandIterator::TVtUiToolbarCommandIterator
+// ---------------------------------------------------------------------------
+//
+TVtUiToolbarCommandIterator::TVtUiToolbarCommandIterator( CVtUiToolbarBase&
+    aToolbar ) : iToolbar( &aToolbar ), iCurrent( 0 )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// TVtUiToolbarCommandIterator::HasNext
+// ---------------------------------------------------------------------------
+//
+TBool TVtUiToolbarCommandIterator::HasNext() const
+    {
+    return ( iCurrent < iToolbar->NumberOfToolbarControls() );
+    }
+
+// ---------------------------------------------------------------------------
+// TVtUiToolbarCommandIterator::Next
+// ---------------------------------------------------------------------------
+//
+TInt TVtUiToolbarCommandIterator::Next()
+    {
+    return iToolbar->CommandIdByCmdIdsArrayIndex( iCurrent++ );
+    }
+    
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/volume/cvtuivolume.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,159 @@
+/*
+* 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:  Volume feature implementation.
+*
+*/
+
+
+#include    <cvtlogger.h>
+#include    "cvtuivolume.h"
+#include    "tvtuifeatureids.h"
+#include    "cvtuivolumepopup.h"
+#include    "cvtuifeaturemanager.h"
+#include    "tvtuifeatureids.h"
+#include    "tvtuistates.h"
+
+// ---------------------------------------------------------------------------
+// CVtUiVolume::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiVolume* CVtUiVolume::NewL( CVtUiFeatureManager&
+    aFeatureManager )
+    {
+    __VTPRINTENTER( "CVtUiVolume.NewL" )
+    CVtUiVolume* self =
+        new ( ELeave ) CVtUiVolume( aFeatureManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    __VTPRINTEXIT( "CVtUiVolume.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVolume::~CVtUiVolume
+// ---------------------------------------------------------------------------
+//
+CVtUiVolume::~CVtUiVolume()
+    {
+    __VTPRINTENTER( "CVtUiVolume.~" )
+    __VTPRINTEXIT( "CVtUiVolume.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVolume::RefreshL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVolume::RefreshL()
+    {
+    __VTPRINTENTER( "CVtUiVolume.RefreshL" )
+    if ( State() == EActive )
+        {
+        __VTPRINT( DEBUG_GEN, "CVtUiPopupBase.RefreshL.EActive" )
+        static_cast< CVtUiVolumePopup& >( Popup() ).RefreshL();
+        }
+    else
+        {
+        __VTPRINT( DEBUG_GEN, "CVtUiVolume.RefreshL.Else" )
+        static_cast< CVtUiVolumePopup& >( Popup() ).UpdateVolumeAndRoutingL();
+        }        
+    __VTPRINTEXIT( "CVtUiVolume.RefreshL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVolume::StartL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVolume::StartL()
+    {
+    __VTPRINTENTER( "CVtUiVolume.StartL" )
+    // if brightness or contrast slider is active stop those
+    MVtUiFeature* br = iFeatureManager.
+    	GetFeatureById( EVtUiFeatureIdBrightness );
+    if ( br && br->State() == EActive )
+    	{
+        __VTPRINT( DEBUG_GEN, "CVtUiPopupBase.StartL.br->Stop" )
+    	br->Stop();
+    	}
+    
+    MVtUiFeature* cr = iFeatureManager.
+	GetFeatureById( EVtUiFeatureIdContrast );
+		if ( cr && cr->State() == EActive )
+			{
+			__VTPRINT( DEBUG_GEN, "CVtUiPopupBase.StartL.cr->Stop" )
+			cr->Stop();
+			}
+
+    if ( State() == EActive )
+        {
+        // need to refresh when already active to replenish the close timer
+        RefreshL();
+        }
+    else
+        {
+        iFeatureManager.UiStates().SetIsFloatingToolbarVisible( ETrue );
+        CVtUiSliderBase::StartL();
+        iFeatureManager.UiStates().SetVolumeModeOn( ETrue );
+        // Toolbar needs to be refreshed if contrat and brightness were dismissed
+        
+        }
+    __VTPRINTEXIT( "CVtUiVolume.StartL" )
+    }
+    
+// ---------------------------------------------------------------------------
+// CVtUiVolume::Stop
+// ---------------------------------------------------------------------------
+//
+void CVtUiVolume::Stop()
+    {
+    __VTPRINTENTER( "CVtUiVolume.Stop" )    	
+    iFeatureManager.UiStates().SetVolumeModeOn( EFalse );
+    CVtUiSliderBase::Stop();
+    __VTPRINTEXIT( "CVtUiVolume.Stop" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVolume::GetVolumeValue
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiVolume::GetVolumeValue()
+    {
+    __VTPRINTENTER( "CVtUiVolume.GetVolumeValue" )    	
+    __VTPRINTEXITR( "CVtUiVolume.GetVolumeValue%d", Popup().Value() )
+    return Popup().Value();
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVolume::CVtUiVolume
+// ---------------------------------------------------------------------------
+//
+CVtUiVolume::CVtUiVolume( CVtUiFeatureManager& aFeatureManager )
+    : CVtUiSliderBase( aFeatureManager, EVtUiFeatureIdVolume )
+    {
+
+    __VTPRINTENTER( "CVtUiVolume.CVtUiVolume" )
+    __VTPRINTEXIT( "CVtUiVolume.CVtUiVolume" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVolume::CVtUiVolume
+// ---------------------------------------------------------------------------
+//
+void CVtUiVolume:: ConstructL()
+    {
+    __VTPRINTENTER( "CVtUiVolume.ConstructL" )
+    BaseConstructL();
+    SetPopup( CVtUiVolumePopup::NewL( iFeatureManager ) );
+    __VTPRINTEXIT( "CVtUiVolume.ConstructL" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/volume/cvtuivolumecontrol.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,157 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Implementation of the cvtuivolumecontrol class.
+*
+*/
+
+
+#include    "cvtuivolumecontrol.h"
+#include    "MVtUiEngineCommandManager.h"
+#include    <mvtengcommandhandler.h>
+#include    <cvtlogger.h>
+#include    "cvtuivolume.h"
+#include    "cvtuifeaturemanager.h"
+
+// -----------------------------------------------------------------------------
+// CVtUiVolumeControl::CVtUiVolumeControl
+// -----------------------------------------------------------------------------
+//
+CVtUiVolumeControl::CVtUiVolumeControl(
+        MVtEngCommandHandler& aCommandHandler,
+        MVtEngAudio& aAudio,
+        MVtUiEngineCommandManager& aCommandManager,
+        CVtUiFeatureManager& aFeatureManager )
+    :  iCommandHandler( aCommandHandler ),
+      iAudio( aAudio ),
+      iCommandManager( aCommandManager ),
+      iVolumePtr( (TUint8*)&iVolume, sizeof( TVolume ) ),
+      iFeatureManager( aFeatureManager )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiVolumeControl::~CVtUiVolumeControl
+// -----------------------------------------------------------------------------
+//
+CVtUiVolumeControl::~CVtUiVolumeControl()
+    {
+    if ( iIsActive )
+        {
+        iCommandHandler.CancelCommand( KVtEngSetAudioVolume ); // ignore error
+        }
+    iCommandManager.RemoveObserver( *this );               
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiVolumeControl::ExecuteDialogLD
+// -----------------------------------------------------------------------------
+//
+void CVtUiVolumeControl::ConstructL()
+    {
+    CleanupStack::PushL( this );
+    iCommandManager.AddObserverL( *this );
+    CleanupStack::Pop( this );
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiVolumeControl::SetVoAdjustVolumeL
+// -----------------------------------------------------------------------------
+//
+void CVtUiVolumeControl::AdjustVolumeL( TVolume aVolume  )
+    {
+    __VTPRINTENTER( "VtUiVolCtrl.AdjustVolumeL")
+    if ( iIsActive )
+        {
+        __VTPRINTENTER( "VtUiVolCtrl.AdjustVolumeL.Isactive")
+        return;
+        }
+    iIsActive = ETrue;         
+    iVolume = aVolume;
+    iCommandHandler.ExecuteL( KVtEngSetAudioVolume, &iVolumePtr );
+    __VTPRINTEXIT( "VtUiVolCtrl.AdjustVolumeL")
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiVolumeControl::HandleVTCommandPerformedL
+// -----------------------------------------------------------------------------
+//
+void CVtUiVolumeControl::HandleVTCommandPerformedL(
+        TVtEngCommandId aCommand,
+        const TInt aError )
+    {
+    __VTPRINTENTER( "VtUiVolCtrl.HandleVTCommandPerformedL")
+    if ( aCommand == KVtEngSetAudioVolume )
+        {
+        __VTPRINT( DEBUG_GEN, "VtUiVolCtrl.perf" )
+        TInt error = aError;
+        // If volume has been changed, then try to set volume again.
+        //iIsActive = ETrue;
+        if ( IsVolumeChangedL() )
+            {
+            __VTPRINT( DEBUG_GEN, "VtUiVolCtrl.retry" )
+            TRAP( error,
+               iCommandHandler.ExecuteL(
+                   KVtEngSetAudioVolume,
+                   &iVolumePtr ) );
+            __VTPRINT2( DEBUG_GEN, "VtUiVolCtrl.err.%d", error )
+            iIsActive = ( error == KErrNone );
+            }
+        else
+            {
+             __VTPRINT( DEBUG_GEN,
+              "VtUiVolCtrl.HandleVTCommandPerformedL iIsActive = EFalse; " )
+            iIsActive = EFalse; 
+            }            
+      
+        }
+    __VTPRINTEXIT( "VtUiVolCtrl.HandleVTCommandPerformedL")        
+    }
+
+// -----------------------------------------------------------------------------
+// CVtUiVolumeControl::IsVolumeChangedL
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiVolumeControl::IsVolumeChangedL()
+    {
+    __VTPRINTENTER( "VtUiVolCtrl.IsVolumeChangedL" )
+    MVtEngAudio::TAudioRoutingState audioRouting;
+    User::LeaveIfError( iAudio.GetRoutingState( audioRouting ) );
+    const TInt volume( iAudio.OutputVolume(
+        !( audioRouting == MVtEngAudio::EAudioLoudspeaker ) ) );
+     
+    CVtUiVolume* vp = static_cast< CVtUiVolume* >(
+    iFeatureManager.GetFeatureById( EVtUiFeatureIdVolume ) );
+    TInt sliderVolume( volume );
+    if ( vp )
+        {
+        sliderVolume = vp->GetVolumeValue();
+        // update correct volume
+        if ( audioRouting == MVtEngAudio::EAudioLoudspeaker )
+            {
+            __VTPRINT( DEBUG_GEN, "VtUiVolCtrl.IsVolumeChangedL.LS")
+            iVolume.iHandsfreeVolume = sliderVolume;
+            }
+        else
+            {
+            __VTPRINT( DEBUG_GEN, "VtUiVolCtrl.IsVolumeChangedL.HS")
+            iVolume.iHandsetVolume = sliderVolume;
+            }
+        }
+        
+    __VTPRINT2( DEBUG_GEN, "VtUiVolCtrl.vol %d", volume )        
+    __VTPRINT2( DEBUG_GEN, "VtUiVolCtrl.slidvol %d", sliderVolume )
+    __VTPRINTEXITR( "VtUiVolCtrl.IsVolumeChangedL %d", sliderVolume == volume )    
+    return sliderVolume == volume ? EFalse : ETrue; 
+    }
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/volume/cvtuivolumepopup.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,277 @@
+/*
+* 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:  Volume popup implementation.
+*
+*/
+
+
+#include    <AknVolumePopup.h>
+#include    <cvtlogger.h>
+#include    "cvtuivolumepopup.h"
+#include    "cvtuifeaturemanager.h"
+#include	"tVtuifeaturevariation.h"
+#include    "CVtUiAppUi.h"
+#include    "cvtengmodel.h"
+
+// ---------------------------------------------------------------------------
+// CVtUiVolumePopup::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiVolumePopup* CVtUiVolumePopup::NewL( CVtUiFeatureManager&
+    aFeatureManager )
+    {
+    __VTPRINTENTER( "CVtUiVolumePopup.NewL" )
+    CVtUiVolumePopup* self =
+        new ( ELeave ) CVtUiVolumePopup( aFeatureManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    __VTPRINTEXIT( "CVtUiVolumePopup.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVolumePopup::~CVtUiVolumePopup
+// ---------------------------------------------------------------------------
+//
+CVtUiVolumePopup::~CVtUiVolumePopup()
+    {
+    __VTPRINTENTER( "CVtUiVolumePopup.~" )
+    __VTPRINTEXIT( "CVtUiVolumePopup.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVolumePopup::UpdateVolumeAndRouting
+// ---------------------------------------------------------------------------
+//
+void CVtUiVolumePopup::UpdateVolumeAndRoutingL()
+    {
+    __VTPRINTENTER( "CVtUiVolumePopup.UpdateVolumeAndRoutingL" )
+    MVtEngAudio& audio( iModel.Audio() );
+    MVtEngAudio::TAudioRoutingState audioRouting;
+    User::LeaveIfError( audio.GetRoutingState( audioRouting ) );
+    //update routing and volume for this routing
+    iAudioRouting = audioRouting;
+    iVolume = OutputVolume( iAudioRouting );
+    SetValue( iVolume );    
+    __VTPRINTEXIT( "CVtUiVolumePopup.UpdateVolumeAndRoutingL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVolumePopup::RefreshL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVolumePopup::RefreshL()
+    {
+    __VTPRINTENTER( "CVtUiVolumePopup.RefreshL" )
+    MVtEngAudio& audio( iModel.Audio() );
+    MVtEngAudio::TAudioRoutingState audioRouting;
+    User::LeaveIfError( audio.GetRoutingState( audioRouting ) );
+
+    // Check if audio routing has changed
+    if ( audioRouting != iAudioRouting )
+        {
+        __VTPRINT( DEBUG_GEN,
+            "CVtUiVolumePopup.RefreshL audio routing changed" )
+        // Audio routing changed -> update routing and volume for this routing
+        iAudioRouting = audioRouting;
+        iVolume = OutputVolume( iAudioRouting );
+        SetValue( iVolume );
+        __VTPRINT2( DEBUG_GEN, "CVtUiVolumePopup.RefreshL routing = %d",
+            iAudioRouting )
+        __VTPRINT2( DEBUG_GEN, "CVtUiVolumePopup.RefreshL volume = %d",
+            iVolume )
+        ClosePopup();
+        }
+    else
+        {
+        // No change in audio routing
+        const TInt volume( OutputVolume( iAudioRouting ) );
+        if ( volume != iVolume )
+            {
+            __VTPRINT( DEBUG_GEN, "CVtUiVolumePopup.RefreshL volume changed" )
+            iVolume = volume;
+            SetValue( iVolume );
+            __VTPRINT2( DEBUG_GEN, "CVtUiVolumePopup.RefreshL volume = %d",
+                iVolume )
+            if ( !IsPopUpVisible() )
+                {
+                __VTPRINT( DEBUG_GEN, "CVtUiVolumePopup.RefreshL OpenPopupL" )
+                OpenPopupL();
+                }
+            else
+                {
+                __VTPRINT( DEBUG_GEN, "CVtUiVolumePopup.RefreshL ShowPopupL" )
+                ShowPopupL();
+                }
+            }
+        else
+            {
+            __VTPRINT( DEBUG_GEN, "CVtUiVolumePopup.RefreshL ShowPopupL2" )
+            ShowPopupL();
+            }
+        }
+    __VTPRINTEXIT( "CVtUiVolumePopup.RefreshL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVolumePopup::DoActivateL()
+// ---------------------------------------------------------------------------
+//
+void CVtUiVolumePopup::DoActivateL()
+    {
+    __VTPRINTENTER( "CVtUiVolumePopup.DoActivateL" )
+    CVtUiPopupBase::DoActivateL();
+    // In order to refresh softkey.
+    iFeatureManager.AppUi().RefreshSoftkeysL();
+    __VTPRINTEXIT( "CVtUiVolumePopup.DoActivateL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVolumePopup::OfferKeyEventL()
+// ---------------------------------------------------------------------------
+//
+TKeyResponse CVtUiVolumePopup::OfferKeyEventL( const TKeyEvent& aEvent,
+    TEventCode /*aCode*/ )
+    {
+    __VTPRINTENTER( "CVtUiVolumePopup.OfferKeyEventL" )
+    TKeyResponse response( EKeyWasNotConsumed );
+    TVtUiSideVolumeKeysVariation svkvariation;
+    if ( !svkvariation.IsSideVolumeKeysSupported() &&
+         ( aEvent.iScanCode == EStdKeyLeftArrow ||
+           aEvent.iScanCode == EStdKeyRightArrow ) )
+        {
+        ShowPopupL();
+        UpdateVolumeL();
+        }
+    __VTPRINTEXITR( "CVtUiVolumePopup.OfferKeyEventL %d", response )
+    return response;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVolumePopup::HandleControlEventL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVolumePopup::HandleControlEventL( CCoeControl* aControl,
+    TCoeEvent aEventType )
+    {
+    __VTPRINTENTER( "CVtUiVolumePopup.HandleControlEventL" )
+    CVtUiPopupBase::HandleControlEventL( aControl, aEventType );
+    if ( aEventType == EEventStateChanged )
+        {
+        UpdateVolumeL();
+        }
+    __VTPRINTEXIT( "CVtUiVolumePopup.HandleControlEventL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVolumePopup::CVtUiVolumePopup
+// ---------------------------------------------------------------------------
+//
+CVtUiVolumePopup::CVtUiVolumePopup( CVtUiFeatureManager& aFeatureManager )
+    : CVtUiPopupBase( aFeatureManager.ComponentManager(),
+      TVtUiBlockListBitField(
+        MVtUiComponent::EComponentIdToolbar |
+        MVtUiComponent::EComponentIdNumberEntry |
+        MVtUiComponent::EComponentIdZoom |
+        MVtUiComponent::EVComponentIdContrast |
+        MVtUiComponent::EVComponentIdBrightness ),
+      EComponentIdVolume ),
+      iModel( aFeatureManager.AppUi().Model() ), 
+      iFeatureManager ( aFeatureManager ) 
+    {
+    __VTPRINTENTER( "CVtUiVolumePopup.CVtUiVolumePopup" )
+    __VTPRINTEXIT( "CVtUiVolumePopup.CVtUiVolumePopup" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVolumePopup::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVolumePopup::ConstructL()
+    {
+    __VTPRINTENTER( "CVtUiVolumePopup.ConstructL" )
+    BaseConstructL();
+    // set default value
+    MVtEngAudio& audio( iModel.Audio() );
+    MVtEngAudio::TAudioRoutingState audioRouting;
+    User::LeaveIfError( audio.GetRoutingState( audioRouting ) );
+    SetValue( OutputVolume( audioRouting ) );
+    // set default audiorouting
+    iAudioRouting = audioRouting;
+    __VTPRINTEXIT( "CVtUiVolumePopup.ConstructL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVolumePopup::OutputVolume
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiVolumePopup::OutputVolume(
+    MVtEngAudio::TAudioRoutingState aRouting ) const
+    {
+    __VTPRINTENTER( "CVtUiVolumePopup.OutputVolume" )
+    const MVtEngAudio& audio( iModel.Audio() );
+    const TInt volume( audio.OutputVolume(
+        !( aRouting == MVtEngAudio::EAudioLoudspeaker ) ) );
+    __VTPRINTEXITR( "CVtUiVolumePopup.OutputVolume %d", volume )
+    return volume;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiVolumePopup::UpdateVolumeL
+// ---------------------------------------------------------------------------
+//
+void CVtUiVolumePopup::UpdateVolumeL()
+    {
+    __VTPRINTENTER( "CVtUiVolumePopup.UpdateVolumeL" )
+    
+    MVtEngAudio& audio( iModel.Audio() );
+    MVtEngAudio::TAudioRoutingState audioRouting;
+    User::LeaveIfError( audio.GetRoutingState( audioRouting ) );
+
+    const TInt volume( OutputVolume( iAudioRouting ) );
+    
+    __VTPRINT2( DEBUG_GEN, "CVtUiVolumePopup.UpdateVolumeL volume = %d",
+                volume )      
+    __VTPRINT2( DEBUG_GEN, "CVtUiVolumePopup.UpdateVolumeL Value() = %d",
+                Value() )                
+    if ( volume != Value() )
+        {
+        MVtEngAudio::TVtEngOutputVolume newVolume;
+        
+        // Get current audio values from engine
+        // and set new audio volume to right routing
+        if ( iAudioRouting == MVtEngAudio::EAudioLoudspeaker )
+            {
+            __VTPRINT( DEBUG_GEN, "CVtUiVolumePopup.UpdateVolumeL.LS")
+            // changed value
+            newVolume.iHandsfreeVolume = Value();
+            // old value
+            TInt volume = audio.OutputVolume( ETrue );
+            newVolume.iHandsetVolume = volume;
+            }
+        else
+            {
+            __VTPRINT( DEBUG_GEN, "CVtUiVolumePopup.UpdateVolumeL.HS")
+            // changed value
+            newVolume.iHandsetVolume = Value();
+            // old value
+            TInt volume = audio.OutputVolume( EFalse );
+            newVolume.iHandsfreeVolume = volume;
+            }
+            
+      iFeatureManager.AppUi().CmdUpdateVolumeL( newVolume );
+      }
+    __VTPRINTEXIT( "CVtUiVolumePopup.UpdateVolumeL" )    
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/zoom/cvtuizoom.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,139 @@
+/*
+* 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:  Zoom feature implementation.
+*
+*/
+
+
+#include <cvtlogger.h>
+#include "cvtuizoom.h"
+#include "tvtuifeatureids.h"
+#include "cvtuizoompopup.h"
+#include "cvtuifeaturemanager.h"
+#include "tvtuistates.h"
+
+// ---------------------------------------------------------------------------
+// CVtUiZoom::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiZoom* CVtUiZoom::NewL( CVtUiFeatureManager&
+    aFeatureManager )
+    {
+    __VTPRINTENTER( "CVtUiZoom.NewL" )
+    CVtUiZoom* self =
+        new ( ELeave ) CVtUiZoom( aFeatureManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    __VTPRINTEXIT( "CVtUiZoom.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoom::~CVtUiZoom
+// ---------------------------------------------------------------------------
+//
+CVtUiZoom::~CVtUiZoom()
+    {
+    __VTPRINTENTER( "CVtUiZoom.~" )
+    __VTPRINTEXIT( "CVtUiZoom.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoom::RefreshL
+// ---------------------------------------------------------------------------
+//
+void CVtUiZoom::RefreshL()
+    {
+    __VTPRINTENTER( "CVtUiZoom.RefreshL" )
+    if ( State() == EActive )
+        {
+        static_cast< CVtUiZoomPopup& >( Popup() ).RefreshL();
+        }
+    __VTPRINTEXIT( "CVtUiZoom.RefreshL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoom::StartL
+// ---------------------------------------------------------------------------
+//
+void CVtUiZoom::StartL()
+    {
+    __VTPRINTENTER( "CVtUiZoom.StartL" )
+    if ( State() == EActive )
+        {
+        // need to refresh when already active to replenish the close timer
+        RefreshL();
+        }
+    else
+        {
+        iFeatureManager.UiStates().SetIsFloatingToolbarVisible( ETrue );
+        CVtUiSliderBase::StartL();
+        iFeatureManager.UiStates().SetZoomModeOn( ETrue );
+        }
+    __VTPRINTEXIT( "CVtUiZoom.StartL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoom::Stop
+// ---------------------------------------------------------------------------
+//
+void CVtUiZoom::Stop()
+    {
+    __VTPRINTENTER( "CVtUiZoom.Stop" )
+    iFeatureManager.UiStates().SetZoomModeOn( EFalse );
+    CVtUiSliderBase::Stop();
+    __VTPRINTEXIT( "CVtUiZoom.Stop" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoom::ComponenStateChangedL()
+// ---------------------------------------------------------------------------
+//
+void CVtUiZoom::ComponenStateChangedL()
+    {
+    __VTPRINTENTER( "CVtUiZoom.ComponenStateChangedL()" )
+    // Close event received stop the feature
+    // If this was a block event then do not stop the feature
+    // Currently we can't separate block and stop events from component manager
+    if ( !iFeatureManager.UiStates().IsCaptureModeOn() )
+        {
+       __VTPRINT( DEBUG_GEN, "CVtUiZoom.ComponenStateChangedL.Stop" )
+        Stop();
+        }
+    __VTPRINTEXIT( "CVtUiZoom.ComponenStateChangedL()" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoom::CVtUiZoom
+// ---------------------------------------------------------------------------
+//
+CVtUiZoom::CVtUiZoom( CVtUiFeatureManager& aFeatureManager )
+    : CVtUiSliderBase( aFeatureManager, EVtUiFeatureIdZoom )
+    {
+    __VTPRINTENTER( "CVtUiZoom.CVtUiZoom" )
+    __VTPRINTEXIT( "CVtUiZoom.CVtUiZoom" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoom::CVtUiZoom
+// ---------------------------------------------------------------------------
+//
+void CVtUiZoom::ConstructL()
+    {
+    __VTPRINTENTER( "CVtUiZoom.ConstructL" )
+    BaseConstructL();
+    SetPopup( CVtUiZoomPopup::NewL( iFeatureManager ) );
+    __VTPRINTEXIT( "CVtUiZoom.ConstructL" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/zoom/cvtuizoompopup.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,282 @@
+/*
+* 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:  Zoom popup implementation.
+*
+*/
+
+
+#include    <AknVolumePopup.h>
+#include    <cvtlogger.h>
+#include    "cvtuizoompopup.h"
+#include    "cvtuifeaturemanager.h"
+#include	"tVtuifeaturevariation.h"
+#include    "CVtUiAppUi.h"
+#include    "cvtengmodel.h"
+
+// Number of zoom steps
+static const TInt KZoomStepCount = 10;
+
+// Minimum zoom factor value
+static const TInt KMinZoomFactor = 0;
+
+// default time out time for zoom popup
+const TInt KDefaultZoomTimeOutTime = 5;  
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::NewL
+// ---------------------------------------------------------------------------
+//
+CVtUiZoomPopup* CVtUiZoomPopup::NewL( CVtUiFeatureManager&
+    aFeatureManager )
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.NewL" )
+    CVtUiZoomPopup* self =
+        new ( ELeave ) CVtUiZoomPopup( aFeatureManager );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    __VTPRINTEXIT( "CVtUiZoomPopup.NewL" )
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::~CVtUiZoomPopup
+// ---------------------------------------------------------------------------
+//
+CVtUiZoomPopup::~CVtUiZoomPopup()
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.~" )
+    __VTPRINTEXIT( "CVtUiZoomPopup.~" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::RefreshL
+// ---------------------------------------------------------------------------
+//
+void CVtUiZoomPopup::RefreshL()
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.RefreshL" )
+    
+    UpdateAdjustRangeL();
+    
+    iCurrent = CurrentZoomStep();
+    if ( iCurrent < KMinZoomFactor )
+        {
+        User::Leave( KErrArgument );
+        }
+    SetValue( iCurrent );
+    ShowPopupL();
+    __VTPRINTEXIT( "CVtUiZoomPopup.RefreshL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::DoActivateL()
+// ---------------------------------------------------------------------------
+//
+void CVtUiZoomPopup::DoActivateL()
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.DoActivateL" )
+    UpdateAdjustRangeL();
+    CVtUiPopupBase::DoActivateL();
+    // In order to refresh softkey.
+    iFeatureManager.AppUi().RefreshSoftkeysL();
+    __VTPRINTEXIT( "CVtUiZoomPopup.DoActivateL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::OfferKeyEventL()
+// ---------------------------------------------------------------------------
+//
+TKeyResponse CVtUiZoomPopup::OfferKeyEventL( const TKeyEvent& aEvent,
+    TEventCode aCode )
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.OfferKeyEventL" )
+    TKeyResponse response( EKeyWasNotConsumed );
+    // Don't  handle other types here
+    if ( aCode != EEventKey )
+        {
+        return response;
+        }
+        
+    if ( aEvent.iScanCode == EStdKeyUpArrow ||
+         aEvent.iScanCode == EStdKeyDownArrow ||
+         aEvent.iCode == EKeyZoomIn ||
+         aEvent.iCode == EKeyZoomOut )
+        {
+        __VTPRINT( DEBUG_GEN, "CVtUiZoomPopup.OfferKeyEventL zoom key" )
+        TInt step( 1 );
+        if ( aEvent.iScanCode == EStdKeyDownArrow ||
+             aEvent.iCode == EKeyZoomOut )
+            {
+            step = -step;
+            }
+        const TInt current( Value() );
+        TInt value( current + step );
+        value = Max( KMinZoomFactor, Min( value, KZoomStepCount ) );
+        if ( value != current )
+            {
+            __VTPRINT2( DEBUG_GEN, "CVtUiZoomPopup.OfferKeyEventL zoom = %d",
+                value )
+            SetValue( value );
+            iFeatureManager.AppUi().SetZoomFactorL( ScaledValue() );
+            response = EKeyWasConsumed;
+            }
+        ShowPopupL();
+        }
+    __VTPRINTEXITR( "CVtUiZoomPopup.OfferKeyEventL %d", response )
+    return response;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::HandleControlEventL
+// ---------------------------------------------------------------------------
+//
+void CVtUiZoomPopup::HandleControlEventL( CCoeControl* aControl,
+    TCoeEvent aEventType )
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.HandleControlEventL" )
+    CVtUiPopupBase::HandleControlEventL( aControl, aEventType );
+    
+    if ( aEventType == EEventStateChanged )
+        {
+        __VTPRINT2( DEBUG_GEN, "CVtUiZoomPopup.HandleControlEventL zoom = %d", ScaledValue() )
+        
+        if ( CurrentZoomStep() != Value() )
+            {
+            iFeatureManager.AppUi().SetZoomFactorL( ScaledValue() );
+            }
+        }
+        
+    __VTPRINTEXIT( "CVtUiZoomPopup.HandleControlEventL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::CVtUiZoomPopup
+// ---------------------------------------------------------------------------
+//
+CVtUiZoomPopup::CVtUiZoomPopup( CVtUiFeatureManager& aFeatureManager )
+    : CVtUiPopupBase( aFeatureManager.ComponentManager(),
+      TVtUiBlockListBitField(
+        MVtUiComponent::EComponentIdDialer |
+        MVtUiComponent::EComponentIdToolbar |
+        MVtUiComponent::EComponentIdNumberEntry |
+        MVtUiComponent::EComponentIdVolume  |
+        MVtUiComponent::EVComponentIdBrightness |
+        MVtUiComponent::EVComponentIdContrast
+        ),
+      EComponentIdZoom ),
+      iFeatureManager( aFeatureManager ),
+      iMedia( aFeatureManager.AppUi().Model().Media() ),
+      iCurrent( KErrNotReady )
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.CVtUiZoomPopup" )
+    __VTPRINTEXIT( "CVtUiZoomPopup.CVtUiZoomPopup" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiZoomPopup::ConstructL()
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.ConstructL" )
+    BaseConstructL();
+    // Set slider type to percentage
+    SetValueType( EAknSliderValuePercentage );
+    
+    // Set timeout
+    SetTimeOut( KDefaultZoomTimeOutTime );
+    __VTPRINTEXIT( "CVtUiZoomPopup.ConstructL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::UpdateAdjustRangeL
+// ---------------------------------------------------------------------------
+//
+void CVtUiZoomPopup::UpdateAdjustRangeL()
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.UpdateAdjustRangeL" )
+    // Get max zoom step from engine
+    iMax = MaxZoomStep();
+    // Set value range to visible slider control
+    // range 0-10 or 0-iMax if max < 0
+    // stepcount = 10 or iMax if max < 10
+    SetAdjustRange( KMinZoomFactor, Min( KZoomStepCount, iMax ), Min( KZoomStepCount, iMax ) );
+   
+    // Set value range to baseclass
+    // range on e.g. 0-20
+    SetMinAndMaxValues( KMinZoomFactor, iMax );    
+    
+    // Get current zoom step
+    iCurrent = CurrentZoomStep();    
+    
+    if ( iCurrent == KErrNotFound || iMax == KErrNotFound || iCurrent > iMax )
+        {
+        User::Leave( KErrNotFound );
+        }
+    // Set new value
+    SetValue( iCurrent );
+    __VTPRINTEXIT( "CVtUiZoomPopup.UpdateAdjustRangeL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::CurrentZoomStep
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiZoomPopup::CurrentZoomStep() const
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.CurrentZoomStep" )
+    TInt current( KMinZoomFactor );
+    const TInt error( iMedia.GetCurrentZoomStep( current ) );
+    current = ( error ? KErrNotFound : current );
+    
+    // Value asked from the engine must be scaled.
+    // If the current asked  value is 1 then the scaling formula in the 
+    // popupbase doesn't round the value to 1 there fore value is 
+    // initalized to 1.
+    TInt  val = 1; 
+    if ( current != 1 )
+        {
+        val =  SliderValueWithScaling( current );
+        }
+    __VTPRINTEXITR( "CVtUiZoomPopup.CurrentZoomStep %d", val )
+    return val;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::MaxZoomStep
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiZoomPopup::MaxZoomStep() const
+    {
+    __VTPRINTENTER( "CVtUiZoomPopup.MaxZoomStep" )
+    TInt max( KMinZoomFactor );
+    const TInt error( iMedia.GetMaxZoomStep( max ) );
+    max = ( error ? KErrNotFound : max );
+    __VTPRINTEXITR( "CVtUiZoomPopup.MaxZoomStep %d", max )
+    return max;
+    }
+    
+// ---------------------------------------------------------------------------
+// CVtUiZoomPopup::ScaleAndSetZoomFactorL
+// ---------------------------------------------------------------------------
+//
+void CVtUiZoomPopup::ScaleAndSetZoomFactorL( TInt aValue )
+    {
+       __VTPRINTENTER( "CVtUiZoomPopup.ScaleAndSetZoomFactorL" )
+    const TInt value = aValue * MaxZoomStep() / 10; // 10 vakioksi count + 1 ei yhtä
+    iFeatureManager.AppUi().SetZoomFactorL( value );  
+     __VTPRINTEXITR( "CVtUiZoomPopup.ScaleAndSetZoomFactorL %d", value )
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/sliders/cvtuipopupbase.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,509 @@
+/*
+* 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:  Base class for video telephone popups
+*
+*/
+
+
+#include    <cvtlogger.h>
+#include    <AknUtils.h>
+#include    <AknVolumePopup.h>
+#include    <fbs.h>
+
+#include    "cvtuipopupbase.h"
+#include    "mvtuicomponentmanager.h"
+#include    "mvtuicomponentstateobserver.h"
+#include    "VtUiPanic.h"
+#include    <layoutmetadata.cdl.h>
+#include    <videotelui.rsg>
+#include    <aknlayoutscalable_apps.cdl.h>
+
+// default time out time for popup
+const TInt KDefaultTimeOutTime = 2;  
+
+// max value for slider is 100 (100%)
+const TInt KMaxSliderValue = 100;  
+
+// Implementation of TVtUiBaseComponentState
+
+// ---------------------------------------------------------------------------
+// TVtUiBaseComponentState::TVtUiBaseComponentState
+// ---------------------------------------------------------------------------
+//
+TVtUiBaseComponentState::TVtUiBaseComponentState(
+    MVtUiComponent& aComponent, TVtUiBlockListBitField aBitField  ) :
+    TVtUiComponentState( aComponent, aBitField )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::~CVtUiPopupBase
+// ---------------------------------------------------------------------------
+//
+CVtUiPopupBase::~CVtUiPopupBase()
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.~CVtUiPopupBase" )
+    if ( iPopup )
+        {
+        iPopup->CloseVolumePopup();
+        }
+     // unregister component change registration
+    iComponentManager.ChangeComponentRegistration(
+        iComponentState, MVtUiComponentManager::EUnregister );
+    delete iPopup;
+    __VTPRINTEXIT( "CVtUiPopupBase.~CVtUiPopupBase" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::ComponentId
+// ---------------------------------------------------------------------------
+//
+ MVtUiComponent::TComponentId CVtUiPopupBase::ComponentId() const
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.ComponentId" )
+    __VTPRINTEXIT( "CVtUiPopupBase.ComponentId" )
+    return iComponentId;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::ComponentAsControl
+// ---------------------------------------------------------------------------
+//
+ CCoeControl* CVtUiPopupBase::ComponentAsControl()
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.ComponentAsControl" )
+    __VTPRINTEXIT( "CVtUiPopupBase.ComponentAsControl" )
+    return NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::DoActivateL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPopupBase::DoActivateL()
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.DoActivateL" )
+    User::LeaveIfError(
+       iComponentManager.ChangeResourceChangeRegistration(
+        *this, MVtUiComponentManager::ERegister ) );
+
+    User::LeaveIfError( iComponentManager.ChangeKeyEventRegistration(
+        *this, MVtUiComponentManager::ERegister ) );
+
+    ShowPopupL();
+    __VTPRINTEXIT( "CVtUiPopupBase.DoActivateL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::DoDeactivateL()
+// ---------------------------------------------------------------------------
+//
+void CVtUiPopupBase::DoDeactivateL()
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.DoDeactivateL()" )
+    iPopup->CloseVolumePopup();
+    //notify observer that popup has been closed
+    if ( iCompStateObserver )
+        {
+        iCompStateObserver->ComponenStateChangedL();
+        }
+    // unregister resource change registration
+    iComponentManager.ChangeResourceChangeRegistration(
+        *this, MVtUiComponentManager::EUnregister );
+
+    iComponentManager.ChangeKeyEventRegistration(
+        *this, MVtUiComponentManager::EUnregister );
+    __VTPRINTEXIT( "CVtUiPopupBase.DoDeactivateL()" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::HandleResourceChangeL()
+// ---------------------------------------------------------------------------
+//
+void CVtUiPopupBase::HandleResourceChangeL( TInt aType )
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.HandleResourceChangeL()" )
+    if ( aType == KEikDynamicLayoutVariantSwitch )
+        {
+        iPopup->SetPosition( PopupPosition() );
+        }
+    __VTPRINTEXIT( "CVtUiPopupBase.HandleResourceChangeL()" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::HandleControlEventL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPopupBase::HandleControlEventL( CCoeControl* /*aControl*/,
+    TCoeEvent aEventType )
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.HandleControlEventL" )
+    if ( aEventType == EEventStateChanged )
+        {
+        // popup closed
+        if( !IsPopUpVisible() )
+            {
+            ClosePopup();
+            }
+        }
+    __VTPRINTEXIT( "CVtUiPopupBase.HandleControlEventL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::OfferKeyEventL()
+// ---------------------------------------------------------------------------
+//
+TKeyResponse CVtUiPopupBase::OfferKeyEventL( const TKeyEvent& aEvent,
+    TEventCode aCode )
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.OfferKeyEventL" )
+    TKeyResponse response( EKeyWasNotConsumed );
+    // Don't  handle other types here
+    if ( aCode != EEventKey )
+        {
+        return response;
+        }
+
+    if ( aEvent.iScanCode == EStdKeyUpArrow ||
+            aEvent.iScanCode == EStdKeyDownArrow )
+        {
+        __VTPRINT( DEBUG_GEN, "CVtUiPopupBase.OfferKeyEventL" )
+        TInt step( 1 );
+        if ( aEvent.iScanCode == EStdKeyDownArrow )
+            {
+            step = -step;
+            }
+        
+        const TInt current( Value() );
+        TInt value( current + step );
+        
+        TInt maxValue;
+        TInt minValue;
+        iPopup->GetRange( minValue, maxValue );
+        
+        __VTPRINT2( DEBUG_GEN, "CVtUiPopupBase.OfferKeyEventL iPopup minValue = %d",
+                minValue )
+        __VTPRINT2( DEBUG_GEN, "CVtUiPopupBase.OfferKeyEventL iPopup maxValue = %d",
+                maxValue )
+         
+        minValue = minValue / iScalingConstant;
+        value = Max( minValue, Min( value, iStepCount ) );
+        if ( value != current )
+            {
+            __VTPRINT2( DEBUG_GEN, "CVtUiPopupBase.OfferKeyEventL Volume value = %d",
+                    value )
+            SetValue( value );
+            response = EKeyWasConsumed;
+            }
+        ShowPopupL();
+        }
+    __VTPRINTEXITR( "CVtUiPopupBase.OfferKeyEventL %d", response )
+    return response;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::SetObserver()
+// ---------------------------------------------------------------------------
+//
+void CVtUiPopupBase::SetObserver( MVtUiComponentStateObserver& aCompStateObserver )
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.SetObserver()" )
+    iCompStateObserver = &aCompStateObserver;
+    __VTPRINTEXIT( "CVtUiPopupBase.SetObserver()" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::SetValueType()
+// ---------------------------------------------------------------------------
+//
+void CVtUiPopupBase::SetValueType( TInt aValueType )
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.SetValueType" )
+    iPopup->SetValueType( aValueType );
+    __VTPRINTEXIT( "CVtUiPopupBase.SetValueType" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::SetPermanenVisibility()
+// ---------------------------------------------------------------------------
+//
+void CVtUiPopupBase::SetPermanenVisibility( TBool aPermanent )
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.SetPermanenVisibility" )
+    __VTPRINT2( DEBUG_GEN, "CVtUiPopupBase = %d", aPermanent  );
+    const TInt longPeriod( 86400 ); // 24 h
+    if ( aPermanent ) 
+        {
+        iPopup->SetTimeOutAsSecond( longPeriod );
+        iPopup->ClosePopupWhenTappedOutside( !aPermanent );
+        }
+     else
+        {
+        iPopup->ClosePopupWhenTappedOutside( !aPermanent );
+        iPopup->SetTimeOutAsSecond( iTimeOutTime );
+        }
+     __VTPRINTEXIT( "CVtUiPopupBase.SetPermanenVisibility" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::CVtUiPopupBase
+// ---------------------------------------------------------------------------
+//
+CVtUiPopupBase::CVtUiPopupBase(  MVtUiComponentManager& aComponentManager,
+  TVtUiBlockListBitField aBitField, TComponentId aComponentId ) :
+  iComponentManager ( aComponentManager ), iComponentState( *this, aBitField ),
+  iComponentId( aComponentId ), iScalingConstant( 1 )
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.CVtUiPopupBase" )
+    __VTPRINTEXIT( "CVtUiPopupBase.CVtUiPopupBase" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::BaseConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPopupBase::BaseConstructL()
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.BaseConstructL" )
+    iPopup = CAknVolumePopup::NewL( NULL, ETrue );
+    iPopup->SetObserver( this );
+
+    // Initialized to 2 seconds
+    iTimeOutTime = KDefaultTimeOutTime;
+    
+    // set position
+    iPopup->SetPosition( PopupPosition() );
+   
+    User::LeaveIfError(
+        iComponentManager.ChangeComponentRegistration(
+        iComponentState, MVtUiComponentManager::ERegister ) );
+    __VTPRINTEXIT( "CVtUiPopupBase.BaseConstructL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::ShowPopupL
+// ---------------------------------------------------------------------------
+//
+void  CVtUiPopupBase::ShowPopupL()
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.ShowPopupL" )
+    iPopup->ShowVolumePopupL();
+    __VTPRINTEXIT( "CVtUiPopupBase.ShowPopupL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::OpenPopupL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPopupBase::OpenPopupL()
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.OpenPopupL" )
+    TRAPD( error,
+        iComponentManager.RequestActivationL( ComponentId() ) );
+    __VTPRINT2( DEBUG_GEN, "CVtUiPopupBase.OpenPopupL reqAct=%d", error );
+    User::LeaveIfError( error );
+    __VTPRINTEXIT( "CVtUiPopupBase.OpenPopupL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::ClosePopup
+// ---------------------------------------------------------------------------
+//
+void CVtUiPopupBase::ClosePopup()
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.ClosePopup" )
+    TInt error( KErrNone );
+    TRAP( error, iComponentManager.DeActivateComponentL( ComponentId() ) );
+    __VTPRINTEXITR( "CVtUiPopupBase.ClosePopup %d", error )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::SetTimeOut
+// ---------------------------------------------------------------------------
+//
+void CVtUiPopupBase::SetTimeOut( TInt aTime )
+    {
+    iTimeOutTime = aTime;
+    iPopup->SetTimeOutAsSecond( aTime );
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::IsPopUpVisible
+// ---------------------------------------------------------------------------
+//
+TBool CVtUiPopupBase::IsPopUpVisible()
+    {
+    return iPopup->IsVisible();
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::PopupPosition
+// ---------------------------------------------------------------------------
+//
+TPoint CVtUiPopupBase::PopupPosition() const
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.PopupPosition" )
+    TRect mainPaneRect;
+    TAknWindowLineLayout popupLineLayout;
+    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect );
+    if ( Layout_Meta_Data::IsLandscapeOrientation() )
+        {
+        popupLineLayout =
+            AknLayoutScalable_Apps::aid_placing_vt_slider_lsc().LayoutLine();
+        }
+    else
+        {
+        popupLineLayout = 
+            AknLayoutScalable_Apps::aid_placing_vt_slider_prt().LayoutLine();
+        }
+    
+    TAknLayoutRect layoutRect;
+    layoutRect.LayoutRect( mainPaneRect, popupLineLayout );
+    __VTPRINTEXIT( "CVtUiPopupBase.PopupPosition" )
+    return layoutRect.Rect().iTl;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::SetPopupValue
+// ---------------------------------------------------------------------------
+//
+void CVtUiPopupBase::SetPopupValue( TInt aValue )
+    {
+    iPopup->SetValue( aValue * iScalingConstant );
+    }
+       
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::SetAdjustRange
+// ---------------------------------------------------------------------------
+//
+void CVtUiPopupBase::SetAdjustRange( TInt aMinValue, TInt aMaxValue,
+    TInt aStepCount )
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.SetAdjustRange" )
+    __ASSERT_ALWAYS( aMinValue <= aMaxValue &&
+        ( aMaxValue - aMinValue ) >= aStepCount &&
+        aStepCount > 0, VtUiPanic::Panic( EVtUiPanicOutOfRange ) );
+    
+    // store stepcount
+    iStepCount = aStepCount;
+    
+    // Aknvolumepopup does not do any scaling i.e max value
+    // must be 100 or otherwise the per cent value is not shown right.
+    // Scaling constant is used to multiple max value to be 100.
+    iScalingConstant = KMaxSliderValue / aMaxValue;
+    iPopup->SetRange( aMinValue, KMaxSliderValue );
+    TInt stepSize = KMaxSliderValue / aStepCount;
+    iPopup->SetStepSize( stepSize );
+    __VTPRINTEXIT( "CVtUiPopupBase.SetAdjustRange" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::SetValue
+// ---------------------------------------------------------------------------
+//
+void CVtUiPopupBase::SetValue( TInt aValue )
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.SetValue" )
+    SetPopupValue( aValue ); 
+    __VTPRINTEXITR( "CVtUiPopupBase.SetValue %d", Value() )
+    }
+ 
+ // ---------------------------------------------------------------------------
+// CVtUiPopupBase::ScaleAndSetValue
+// ---------------------------------------------------------------------------
+//
+ void CVtUiPopupBase::ScaleAndSetValue( TInt aValue )
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.ScaleAndSetValue" )
+    SetPopupValue( SliderValueWithScaling( aValue ) );
+    __VTPRINTEXITR( "CVtUiPopupBase.ScaleAndSetValue %d", Value() )
+    }
+ 
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::ScaledValue
+// ---------------------------------------------------------------------------
+//
+ TInt CVtUiPopupBase::ScaledValue() const
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.ScaledValue" )
+     TInt value = Value() * ( iMax-iMin ) / iStepCount + iMin;
+    __VTPRINTEXITR( "CVtUiPopupBase.ScaledValue %d", value )    
+    return value;
+    }
+    
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::SliderValueWithScaling
+// ---------------------------------------------------------------------------
+//
+ TInt CVtUiPopupBase::SliderValueWithScaling( TInt aValue) const
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.SliderValueWithScaling" )
+    __VTPRINT2( DEBUG_GEN, "CVtUiPopupBase.aValue=%d", aValue )
+    __VTPRINT2( DEBUG_GEN, "CVtUiPopupBase.iStepCount=%d", iStepCount )
+    __VTPRINT2( DEBUG_GEN, "CVtUiPopupBase.iMax=%d", iMax )
+    
+    if ( iMax == aValue)
+        {
+        return iStepCount;
+        }
+    else if ( iMin == aValue )
+        {
+        return 0;
+        }
+    TInt modValue = iStepCount * ( aValue - iMin) % ( iMax - iMin );        
+    TInt value = iStepCount * ( aValue - iMin) / ( iMax - iMin ); 
+           
+    if ( modValue >  ( iMax - iMin ) / 2 )
+        {
+        value++;
+        }
+    
+    __VTPRINTEXITR( "CVtUiPopupBase.SliderValueWithScaling %d", value )    
+    return value;
+    }
+    
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::SetMinAndMaxValues
+// ---------------------------------------------------------------------------
+//
+void CVtUiPopupBase::SetMinAndMaxValues( TInt aMin, TInt aMax )
+    {
+     __VTPRINTENTER( "CVtUiPopupBase.SetMaxAndMinValues" )
+     __VTPRINT2( DEBUG_GEN, "CVtUiPopupBase..aMax=%d", aMax )
+     __VTPRINT2( DEBUG_GEN, "CVtUiPopupBase..aMinV=%d", aMin )
+    iMax = aMax;
+    iMin = aMin;
+    __VTPRINTEXIT( "CVtUiPopupBase.SetMaxAndMinValues " ) 
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::Value
+// ---------------------------------------------------------------------------
+//
+TInt CVtUiPopupBase::Value() const
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.Value" )
+    __VTPRINTEXITR( "CVtUiPopupBase.Value %d", iPopup->Value() )
+    return iPopup->Value() / iScalingConstant;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiPopupBase::UpdatePopupL
+// ---------------------------------------------------------------------------
+//
+void CVtUiPopupBase::UpdatePopupL()
+    {
+    __VTPRINTENTER( "CVtUiPopupBase.UpdatePopupL" )
+    __VTPRINTEXIT( "CVtUiPopupBase.UpdatePopupL " ) 
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/sliders/cvtuisliderbase.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,175 @@
+/*
+* 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:  Base class implementation for video telephone sliders
+*
+*/
+
+
+#include    <cvtlogger.h>
+
+#include    "cvtuisliderbase.h"
+#include    "cvtuipopupbase.h"
+#include    "cvtuifeaturemanager.h"
+#include    "mvtuicomponentmanager.h"
+
+// ---------------------------------------------------------------------------
+// CVtUiSliderBase::~CVtUiSliderBase
+// ---------------------------------------------------------------------------
+//
+CVtUiSliderBase::~CVtUiSliderBase()
+    {
+    __VTPRINTENTER( "CVtUiSliderBase.~CVtUiSliderBase" )
+    delete iPopup;
+    __VTPRINTEXIT( "CVtUiSliderBase.~CVtUiSliderBase" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSliderBase::UpdateSlider
+// ---------------------------------------------------------------------------
+//
+void CVtUiSliderBase::UpdateSlider()
+    {
+    __VTPRINTENTER( "CVtUiSliderBase.UpdateSlider" )
+    
+    iPopup->UpdatePopupL();
+    
+    __VTPRINTEXIT( "CVtUiSliderBase.UpdateSlider" )
+    }
+// ---------------------------------------------------------------------------
+// CVtUiSliderBase::StartL
+// ---------------------------------------------------------------------------
+//
+void CVtUiSliderBase::StartL()
+    {
+    __VTPRINTENTER( "CVtUiSliderBase.StartL" )
+    if ( iFeatureState  == MVtUiFeature::EReady )
+        {
+        iFeatureManager.ComponentManager().
+            RequestActivationL( iPopup->ComponentId() );
+        // set state
+        iFeatureState = MVtUiFeature::EActive;
+        }
+    __VTPRINTEXIT( "CVtUiSliderBase.StartL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSliderBase::Stop
+// ---------------------------------------------------------------------------
+//
+void CVtUiSliderBase::Stop()
+    {
+    __VTPRINTENTER( "CVtUiSliderBase.Stop" )
+    TRAP_IGNORE(
+        {
+        if ( iFeatureState == MVtUiFeature::EActive )
+            {
+            // set state
+            iFeatureState = MVtUiFeature::EReady;
+            iFeatureManager.ComponentManager().
+                DeActivateComponentL( iPopup->ComponentId()  );
+            }
+        } );
+    __VTPRINTEXIT( "CVtUiSliderBase.Stop" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSliderBase::InitFeatureL
+// ---------------------------------------------------------------------------
+//
+void CVtUiSliderBase::InitFeatureL()
+    {
+    __VTPRINTENTER( "CVtUiSliderBase.InitFeatureL" )
+    iFeatureState = EReady;
+    __VTPRINTEXIT( "CVtUiSliderBase.InitFeatureL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSliderBase::ComponenStateChangedL()
+// ---------------------------------------------------------------------------
+//
+void CVtUiSliderBase::ComponenStateChangedL()
+    {
+    __VTPRINTENTER( "CVtUiSliderBase.ComponenStateChangedL()" )
+    // Close event received stop the feature
+    Stop();
+    __VTPRINTEXIT( "CVtUiSliderBase.ComponenStateChangedL()" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSliderBase::SetPermanenVisibility()
+// ---------------------------------------------------------------------------
+//
+void CVtUiSliderBase::SetPermanenVisibility( TBool aPermanent )
+    {
+    if ( iPopup )
+        {
+        iPopup->SetPermanenVisibility( aPermanent );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSliderBase::CVtUiSliderBase
+// ---------------------------------------------------------------------------
+//
+CVtUiSliderBase::CVtUiSliderBase( CVtUiFeatureManager& aFeatureManager,
+        TVtUiFeatureId aFeatureId  ) : CVtUiFeatureBase(
+    aFeatureId, aFeatureManager )
+    {
+    __VTPRINTENTER( "CVtUiSliderBase.CVtUiSliderBase" )
+    __VTPRINTEXIT( "CVtUiSliderBase.CVtUiSliderBase" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSliderBase::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CVtUiSliderBase::ConstructL()
+    {
+    __VTPRINTENTER( "CVtUiSliderBase.ConstructL" )
+    BaseConstructL();
+    __VTPRINTEXIT( "CVtUiSliderBase.ConstructL" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSliderBase::SetPopup
+// ---------------------------------------------------------------------------
+//
+void CVtUiSliderBase::SetPopup( CVtUiPopupBase* aPopup )
+    {
+    __VTPRINTENTER( "CVtUiSliderBase.SetPopup" )
+    iPopup = aPopup;
+    if ( iPopup )
+        {
+        iPopup->SetObserver( *this );
+        }
+    __VTPRINTEXIT( "CVtUiSliderBase.SetPopup" )
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSliderBase::SetPopup
+// ---------------------------------------------------------------------------
+//
+CVtUiPopupBase& CVtUiSliderBase::Popup()
+    {
+    return *iPopup;
+    }
+
+// ---------------------------------------------------------------------------
+// CVtUiSliderBase::SetPopup
+// ---------------------------------------------------------------------------
+//
+const CVtUiPopupBase& CVtUiSliderBase::Popup() const
+    {
+    return *iPopup;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/tvtuiappstatebase.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,408 @@
+/*
+* Copyright (c) 2007 - 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:  base class for application states
+*
+*/
+
+
+#include "tvtuiappstates.h"
+#include "videotelui.hrh"
+#include "tvtuistates.h"
+#include "cvtuiappshutter.h"
+#include "mvtuistatecontext.h"
+#include <videotelui.rsg>
+#include <AknQueryDialog.h>
+#include <StringLoader.h>
+#include <cvtlogger.h>
+#include <cvtengmodel.h>
+#include <vtengevents.h>
+#include <mvtengcommandhandler.h>
+#include <coreapplicationuisdomainpskeys.h>
+
+// By default call ending command is allowed to send to call handling.
+
+// Initially no shutdown request
+TBool TVtUiAppStateBase::iShutdownRequested = EFalse;
+
+// -----------------------------------------------------------------------------
+// c++ constructor
+// -----------------------------------------------------------------------------
+//
+TVtUiAppStateBase::TVtUiAppStateBase(
+    MVtUiStateContext& aCtx,
+    TVtUiStates& aUiStates ) : iCtx(aCtx), iUiStates( aUiStates )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// Destructor
+// -----------------------------------------------------------------------------
+//
+TVtUiAppStateBase::~TVtUiAppStateBase()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::AppUiStartupPhase1DoneL
+// -----------------------------------------------------------------------------
+//
+void TVtUiAppStateBase::AppUiStartupPhase1DoneL()
+    {
+    // no default behavior
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::AppUiStartupPhase2DoneL
+// -----------------------------------------------------------------------------
+//
+void TVtUiAppStateBase::AppUiStartupPhase2DoneL()
+    {
+    // no default behavior
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::ShutdownDoneL
+// -----------------------------------------------------------------------------
+//
+void TVtUiAppStateBase::ShutdownDoneL()
+    {
+    // no default behavior
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::HandleForegroundChangedL
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiAppStateBase::HandleForegroundChangedL(
+    const TBool /*aIsForegroung*/ )
+    {
+    // no default behavior
+    return EFalse;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::PreHandleForegroundChangedL
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiAppStateBase::PreHandleForegroundChangedL(
+    const TBool /*aIsForegroung*/ )
+    {
+    // no default behavior
+    return EFalse;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::StartDtmfTone
+// -----------------------------------------------------------------------------
+//
+void TVtUiAppStateBase::StartDtmfTone( const TChar& /*aTone*/ )
+    {
+    // no default behavior
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::StopDtmfTone
+// -----------------------------------------------------------------------------
+//
+void TVtUiAppStateBase::StopDtmfTone()
+    {
+    // no default behavior
+    }
+
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::SetInitialStateL
+// -----------------------------------------------------------------------------
+//
+void TVtUiAppStateBase::SetInitialStateL(
+    MVtUiStateContext& aCtx,
+    TVtUiStates& aUiStates )
+    {
+    __VTPRINTENTER( "TVtUiAppStateBase.SetInitialState" )
+    TVtUiAppStateBase* initialState =
+        TVtUiStateStarting::InstanceL( aCtx, aUiStates );
+    aCtx.ChangeState( initialState );
+    initialState->OpenL();
+    __VTPRINTEXIT( "TVtUiAppStateBase.SetInitialState" )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::ShutdownRequested
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiAppStateBase::ShutdownRequested()
+    {
+    return iShutdownRequested;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::AppUiStartupFailedL
+// -----------------------------------------------------------------------------
+//
+void TVtUiAppStateBase::AppUiStartupFailedL()
+    {
+    __VTPRINTENTER( "TVtUiAppStateBase.AppUiStartupFailedL" )
+    // Shutdown
+    ChangeStateL( *TVtUiStateResetting::InstanceL( iCtx, iUiStates ) );
+    __VTPRINTEXIT( "TVtUiAppStateBase.AppUiStartupFailedL" )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::OpenL
+// -----------------------------------------------------------------------------
+//
+void TVtUiAppStateBase::OpenL()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::Close
+// -----------------------------------------------------------------------------
+//
+void TVtUiAppStateBase::Close()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::ChangeStateL
+// -----------------------------------------------------------------------------
+//
+void TVtUiAppStateBase::ChangeStateL( TVtUiAppStateBase& aNewState )
+    {
+    __VTPRINTENTER( "TVtUiAppStateBase.ChangeStateL" )
+
+    // Check for transition to already active state.
+    TVtUiAppStateBase* state = &aNewState;
+    if ( state == this )
+        {
+        __VTPRINTEXITR( "TVtUiAppStateBase.ChangeStateL %d", 0 )
+        return;
+        }
+    const TVtEngCommandId pending =
+        iCtx.Model().CommandHandler().PendingCommand();
+    if ( pending !=  KVtEngCommandNone &&
+         state == TVtUiStateResetting::InstanceL( iCtx, iUiStates ) )
+        {
+        // delay shutdown until engine command completes
+        __VTPRINT2( DEBUG_GEN, "TVtUiAppStateBase.ChangeStateL, pengind command is: %d", pending );
+        TVtUiAppStateBase::iShutdownRequested = ETrue;
+
+        if ( pending == KVtEngInitializeShareImage )
+            {
+            iCtx.Model().CommandHandler().CancelCommand( pending );
+            }
+
+        __VTPRINTEXITR( "TVtUiAppStateBase.ChangeStateL %d", KErrNotReady )
+        return;
+        }
+    __VTPRINT( DEBUG_GEN,
+        " TVtUiAppStateBase.ChangeStateL !! STATE TRANSITION !!" )
+    iCtx.ChangeState( &aNewState );
+    Close();
+    // perform entry action for new state
+    aNewState.OpenL();
+    __VTPRINTEXITR( "TVtUiAppStateBase.ChangeStateL %d", 1 )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::CleanupResetPushL
+// -----------------------------------------------------------------------------
+//
+void TVtUiAppStateBase::CleanupResetPushL()
+    {
+    // Shutdown if leave occurs in critical ops.
+    CleanupStack::PushL(
+        TCleanupItem( TransitionToReset, this ) );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::TransitionToReset
+// -----------------------------------------------------------------------------
+//
+void TVtUiAppStateBase::TransitionToReset( TAny* aAny )
+    {
+    TVtUiAppStateBase* state = reinterpret_cast< TVtUiAppStateBase* >( aAny );
+    TRAP_IGNORE( state->ChangeStateL( *TVtUiStateResetting::InstanceL(
+        state->iCtx, state->iUiStates ) ) );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::HandleVTCommandPerformedL
+// -----------------------------------------------------------------------------
+//
+TVtUiAppStateBase::TEventResponse TVtUiAppStateBase::HandleVTCommandPerformedL(
+            TVtEngCommandId /*aCommand*/,
+            const TInt /*aError*/ )
+    {
+    __VTPRINTENTER( "TVtUiAppStateBase.HandleVTCommandPerformedL" )
+    // By default all UI is allowed to handle all command completions.
+    TEventResponse handled = EEventNotHandled;
+
+    // check if shutdown requested while command was pending
+    const TVtEngCommandId pending = iCtx.Model().CommandHandler().PendingCommand();
+    if ( pending == KVtEngCommandNone &&
+          TVtUiAppStateBase::iShutdownRequested )
+        {
+        __VTPRINT( DEBUG_GEN, "Handling delayed shutdown" );
+        ChangeStateL( *TVtUiStateResetting::InstanceL(
+            iCtx, iUiStates ) );
+        }
+    __VTPRINTEXIT( "TVtUiAppStateBase.HandleVTCommandPerformedL" )
+    return handled;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::HandleVtEventL
+// -----------------------------------------------------------------------------
+//
+TVtUiAppStateBase::TEventResponse TVtUiAppStateBase::HandleVtEventL(
+    const TInt aEvent )
+    {
+    __VTPRINTENTER( "TVtUiAppStateBase.HandleVtEventL" )
+    TEventResponse handled = EEventHandled;
+    switch ( aEvent )
+        {
+    case KVtEngDeviceLockOn:
+    case KVtEngDeviceLockOff:
+        HandleDeviceLockEventL( aEvent == KVtEngDeviceLockOn );
+        break;
+    case KVtEngRemoteDisconnect:
+        /** Don't allow sending of end active call command to call handling
+         *  because requesting disconnect from the network after NW originated
+         *  termination violates standards.
+         */
+        break;
+    default:
+        handled = EEventNotHandled;
+        break;
+        }
+    __VTPRINTEXIT( "TVtUiAppStateBase.HandleVtEventL" )
+    return handled;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::HandleCommandL
+// -----------------------------------------------------------------------------
+//
+TVtUiAppStateBase::TEventResponse TVtUiAppStateBase::HandleCommandL(
+    const TInt /*aCommand*/ )
+    {
+    __VTPRINTENTER( "TVtUiAppStateBase.HandleCommandL" )
+    TEventResponse handled = EEventNotHandled;
+    __VTPRINTEXITR( "TVtUiAppStateBase.HandleCommandL %d", handled )
+    return handled;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::HandleLayoutChangedL
+// -----------------------------------------------------------------------------
+//
+void TVtUiAppStateBase::HandleLayoutChangedL( )
+    {
+    __VTPRINTENTER( "TVtUiAppStateBase.HandleLayoutChangedL" )
+    // By default only indicate that layout change needs to be handled.
+    iUiStates.SetLayoutChangeNeeded( ETrue );
+    __VTPRINTEXIT( "TVtUiAppStateBase.HandleLayoutChangedL" )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::HandleShutdownReady
+// -----------------------------------------------------------------------------
+//
+void TVtUiAppStateBase::HandleShutdownReady()
+    {
+     __VTPRINTENTER( "TVtUiAppStateBase.HandleShutdownReady" )
+    // forwarded to AppUi which handles UI framework exit
+    iCtx.HandleShutdownReady();
+    iCtx.ChangeState( NULL );
+    // deletes current state
+    Close();
+     __VTPRINTEXIT( "TVtUiAppStateBase.HandleShutdownReady" )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::HandleDeviceLockEventL
+//
+// -----------------------------------------------------------------------------
+//
+void TVtUiAppStateBase::HandleDeviceLockEventL( const TBool aDeviceIsLocked )
+    {
+    __VTPRINTENTER( "TVtUiAppStateBase.HandleDeviceLockEventL" )
+    iUiStates.SetDeviceLockOn( aDeviceIsLocked );
+    if ( aDeviceIsLocked )
+        {
+        iCtx.ChangeApplicationFocus( EFalse );
+        }
+    __VTPRINTEXITR( "TVtUiAppStateBase.HandleDeviceLockEventL lock state=%d",
+        aDeviceIsLocked )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::CheckEndActiveCallL
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiAppStateBase::CheckEndActiveCallL()
+    {
+    __VTPRINTENTER( "TVtUiAppStateBase.CheckEndActiveCallL" )
+    const MVtEngSessionInfo::TSessionState state = SessionState( EFalse );
+    TBool shutdownStarted( EFalse );
+    if ( state == MVtEngSessionInfo::EIdle )
+        {
+        __VTPRINT( DEBUG_GEN, "VtUi.Release bearer" )
+        // h.245 session is ended
+        ChangeStateL( *TVtUiStateResetting::InstanceL( iCtx, iUiStates ) );        
+        shutdownStarted = ETrue;
+        }
+    __VTPRINTEXITR( "TVtUiAppStateBase.CheckEndActiveCallL %d",
+        shutdownStarted )
+    return shutdownStarted;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::SessionState
+// -----------------------------------------------------------------------------
+//
+MVtEngSessionInfo::TSessionState TVtUiAppStateBase::SessionState(
+    const TBool aUpdate ) const
+    {
+    const CVtEngModel& model = iCtx.Model();
+    const MVtEngSessionInfo& session = model.Session();
+    return session.State( aUpdate );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::SetLightsState
+// -----------------------------------------------------------------------------
+//
+void TVtUiAppStateBase::SetLightsState( const TBool aOn )
+    {
+    __VTPRINTENTER( "TVtUiAppStateBase.SetLightsState" )
+    const TInt value = aOn ? EForcedLightsOn : EForcedLightsOff;
+    RProperty::Set(
+            KPSUidCoreApplicationUIs,
+            KLightsVTForcedLightsOn,
+            value );
+    __VTPRINTEXIT( "TVtUiAppStateBase.SetLightsState" )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiAppStateBase::SetExecState
+// -----------------------------------------------------------------------------
+//
+void TVtUiAppStateBase::SetExecState( const TVtUiStates::TVtUiExecState aState )
+    {
+    __VTPRINTENTER( "TVtUiAppStateBase.SetExecState" )
+    iUiStates.SetExecState( aState );
+    __VTPRINTEXITR( "TVtUiAppStateBase.SetExecState %d", aState )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/tvtuistateresetting.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,243 @@
+/*
+* 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:  waiting details application state
+*
+*/
+
+
+#include "tvtuistates.h"
+#include "tvtuiappstates.h"
+#include "mvtuistatecontext.h"
+#include "cvtuiappshutter.h"
+#include <cvtlogger.h>
+#include <vtengevents.h>
+
+TVtUiStateResetting* TVtUiStateResetting::iInstance = NULL;
+
+// c++ constructor
+TVtUiStateResetting::TVtUiStateResetting( 
+    MVtUiStateContext& aCtx, 
+    TVtUiStates& aUiStates, 
+    const TVtEngCommandId aCommand )
+    : TVtUiAppStateBase( aCtx, aUiStates ), 
+      iCommand( aCommand )
+    {
+    	__VTPRINT2( DEBUG_GEN, "TVtUiStateResetting.ctr iCommand=%d", iCommand )
+    }
+
+// Destructor
+TVtUiStateResetting::~TVtUiStateResetting()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateResetting::
+// -----------------------------------------------------------------------------
+//
+TVtUiStateResetting* TVtUiStateResetting::InstanceL( 
+    MVtUiStateContext& aCtx, 
+    TVtUiStates& aUiStates,
+    const TVtEngCommandId aCommand )
+    {
+    __VTPRINTENTER( "TVtUiStateResetting.InstanceL" )
+    if ( iInstance == NULL )
+        {
+        iInstance = new ( ELeave ) TVtUiStateResetting( 
+            aCtx, aUiStates, aCommand );
+        }
+    else if ( aCommand != KVtEngCommandNone )
+        { // if call ending is UI originated, command is given
+        iInstance->iCommand  = aCommand;
+        __VTPRINT2( DEBUG_GEN, "TVtUiStateResetting.InstanceL iCommand=%d", 
+            iInstance->iCommand )
+        }
+    __VTPRINTEXIT( "TVtUiStateResetting.InstanceL" )
+    return iInstance;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateResetting::ShutdownDoneL
+// AppUi has finished its own shutdown steps. Notify app shutter that it may 
+// proceed.
+// 
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateResetting::ShutdownDoneL()
+    {
+    __VTPRINTENTER( "TVtUiStateResetting.ShutdownDone" )
+    CVtUiAppShutter* shutter = CVtUiAppShutter::InstanceL( *this );
+    if ( shutter )
+        {
+        shutter->StartShutdown();
+        }
+    __VTPRINTEXIT( "TVtUiStateResetting.ShutdownDone" )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateResetting::AppUiStartupFailedL
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateResetting::AppUiStartupFailedL()
+    {
+    __VTPRINTENTER( "TVtUiStateResetting.AppUiStartupFailedL" )
+    // no-op (overrides default behavior)
+    __VTPRINTEXIT( "TVtUiStateResetting.AppUiStartupFailedL" )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateResetting::HandleVTCommandPerformedL
+// -----------------------------------------------------------------------------
+//
+TVtUiAppStateBase::TEventResponse TVtUiStateResetting::HandleVTCommandPerformedL
+    ( 
+    TVtEngCommandId aCommand,
+    const TInt /*aError*/ )
+    {
+    __VTPRINTENTER( "TVtUiStateResetting.HandleVTCommandPerformedL" )
+    // By default responses to commands are ignored while resetting
+    TEventResponse handled = EEventHandled;
+    switch ( aCommand )
+        {
+        case KVtEngResetEngine:
+            // Allow UI to process reset command response        
+            handled = EEventNotHandled;
+            break;
+        case KVtEngTerminateSession:
+        case KVtEngSwitchToVoice:
+            // 
+            iCtx.ShutdownL();
+            break;
+        default:
+            break;            
+        }
+    __VTPRINTEXIT( "TVtUiStateResetting.HandleVTCommandPerformedL" )
+    return handled;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateResetting::HandleVtEventL
+// -----------------------------------------------------------------------------
+//
+TVtUiAppStateBase::TEventResponse TVtUiStateResetting::HandleVtEventL(
+    const TInt aEvent )
+    {
+    __VTPRINTENTER( "TVtUiStateResetting.HandleVtEventL" )
+    TEventResponse handled = EEventHandled;
+    switch ( aEvent )
+        {
+    // While resetting appUi should not handle these events.
+    case KVtEngSourceChanged:
+    case KVtEngCameraChanged:
+    case KVtEngSourceCapsChanged:
+    case KVtEngSessionStateChanged:
+    case KVtEngDurationSettingChanged:
+    case KVtEngAudioOutputVolumeChanged:
+    case KVtEngAudioRoutingAvailabilityChanged:
+    case KVtEngAudioRoutingChanged:
+    case KVtEngAudioMuted:
+    case KVtEngAudioUnmuted:
+    case KVtEngRemoteVideoStopped:
+    case KVtEngSessionWaitingCallActive:
+    case KVtEngSessionWaitingCallInactive:
+        break;
+    default:
+        // allow appUi to handle other events
+        handled = EEventNotHandled;
+        break;
+        }
+    __VTPRINTEXIT( "TVtUiStateResetting.HandleVtEventL" )
+    return handled;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateResetting::HandleCommandL
+// -----------------------------------------------------------------------------
+//
+TVtUiAppStateBase::TEventResponse TVtUiStateResetting::HandleCommandL(
+    const TInt /*aCommand*/ )
+    {
+    __VTPRINTENTER( "TVtUiStateResetting.HandleCommandL" )
+    /* All commands ignored while resetting. CAknAppUi::Exit() is called
+       when shutdown is completed with asistance of CVtUiAppShutter */
+    __VTPRINTEXIT( "TVtUiStateResetting.HandleCommandL" )
+     return EEventHandled;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateResetting::HandleForegroundChangedL
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStateResetting::HandleForegroundChangedL(
+    const TBool /*aIsForeground*/ )
+    {
+    __VTPRINTENTER( "TVtUiStateResetting.HandleForegroundChangedL" )
+    __VTPRINTEXIT( "TVtUiStateResetting.HandleForegroundChangedL" )
+    // not on "foreground" while resetting
+    return EFalse;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateResetting::HandleLayoutChangedL
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateResetting::HandleLayoutChangedL()
+    {
+    __VTPRINTENTER( "TVtUiStateResetting.HandleLayoutChangedL" )
+    // no-op (overrides default behavior)
+    __VTPRINTEXIT( "TVtUiStateResetting.HandleLayoutChangedL" )
+    }
+        
+// -----------------------------------------------------------------------------
+// TVtUiStateResetting::OpenL
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateResetting::OpenL()
+    {
+    __VTPRINTENTER( "TVtUiStateResetting.OpenL" )
+    SetExecState( TVtUiStates::EExecStateResetting );
+    iCtx.StopDtmfTone();
+    iCtx.ChangeApplicationFocus( EFalse );
+    
+    if ( iCommand != KVtEngCommandNone )
+        {        
+        // Command is either KVtEngTerminateSession or KVtEngSwitchToVoice
+        // Need to wait for callback before ShutdownL can be called on context.
+        iCtx.DoExecuteCmdL( iCommand, NULL );
+        }
+    else
+        {
+        // This branch is executed when resetting state is opened due
+        // to emergency call or state change to one causing shutdown.
+        // No need to wait for any callbacks (emergency call callback
+        // handled by CVtUiAppShutter).
+        iCtx.ShutdownL();
+        }
+    __VTPRINTEXIT( "TVtUiStateResetting.OpenL" )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateResetting::Close
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateResetting::Close()
+    {
+    __VTPRINTENTER( "TVtUiStateResetting.Close" )
+    SetExecState( TVtUiStates::EExecStateFinalized );
+    if ( TVtUiStateResetting::iInstance )
+        {
+        delete TVtUiStateResetting::iInstance;
+        TVtUiStateResetting::iInstance = NULL;
+        }
+    __VTPRINTEXIT( "TVtUiStateResetting.Close" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/tvtuistaterunning.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,309 @@
+/*
+* 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:  running (normal operation) application state
+*
+*/
+
+
+#include "tvtuistates.h"
+#include "tvtuiappstates.h"
+#include "mvtuistatecontext.h"
+#include "cvtuiappshutter.h"
+#include "videotelui.hrh"
+#include <cvtlogger.h>
+#include <vtengevents.h>
+#include <StringLoader.h>
+#include <AknQueryDialog.h>
+#include <videotelui.rsg>
+
+TVtUiStateRunning* TVtUiStateRunning::iInstance = NULL;
+
+// c++ constructor
+TVtUiStateRunning::TVtUiStateRunning(
+    MVtUiStateContext& aCtx, TVtUiStates& aUiStates )
+    : TVtUiAppStateBase( aCtx, aUiStates ), iCreateVoiceCallDlg( NULL )
+    {
+    }
+
+// Destructor
+TVtUiStateRunning::~TVtUiStateRunning()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateRunning::InstanceL
+// -----------------------------------------------------------------------------
+//
+TVtUiStateRunning * TVtUiStateRunning::InstanceL(
+    MVtUiStateContext& aCtx,
+    TVtUiStates& aUiStates )
+    {
+    __VTPRINTENTER( "UiStateRunning.InstanceL" )
+    if ( iInstance == NULL )
+        iInstance = new ( ELeave ) TVtUiStateRunning( aCtx, aUiStates );
+    __VTPRINTEXIT( "UiStateRunning.InstanceL" )
+    return iInstance;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateRunning::HandleVtEventL
+// -----------------------------------------------------------------------------
+//
+TVtUiAppStateBase::TEventResponse TVtUiStateRunning::HandleVtEventL(
+    const TInt aEvent )
+    {
+    __VTPRINTENTER( "UiStateRunning.HandleVtEventL" )
+    // let TVtUiAppStateBase base class do common tasks
+    TEventResponse handled = TVtUiAppStateBase::HandleVtEventL( aEvent );
+    switch ( aEvent )
+        {
+    case KVtEngDeviceLockOn:
+    case KVtEngDeviceLockOff:
+        TVtUiAppStateBase::HandleVtEventL( aEvent );
+        if ( aEvent == KVtEngDeviceLockOff )
+            {
+            iCtx.ChangeApplicationFocus( ETrue );
+            }
+        break;
+    case KVtEngSessionStateChanged:
+        if ( CheckEndActiveCallL() )
+            {
+            // At this point shutdown is in progress. Don't allow
+            // appUi to do actions due to this event.
+            handled = EEventHandled;
+            }
+        break;
+    default:
+        break;
+        }
+    __VTPRINTEXIT( "UiStateRunning.HandleVtEventL" )
+    return handled;
+    }
+
+
+// -----------------------------------------------------------------------------
+// TVtUiStateRunning::HandleCommandL
+// -----------------------------------------------------------------------------
+//
+TVtUiAppStateBase::TEventResponse TVtUiStateRunning::HandleCommandL(
+    const TInt aCommand )
+    {
+    __VTPRINTENTER( "UiStateRunning.HandleCommandL" )
+    /** By default all commands are enabled by running state.
+      * Other details command validations are done elsewhere
+      */
+    TEventResponse handled = EEventHandled;
+    switch ( aCommand )
+        {
+    case EVtUiCmdEndActiveCall:
+        {
+        const MVtEngSessionInfo::TSessionState state = SessionState( EFalse );
+        if ( state == MVtEngSessionInfo::EOpen )
+            {
+            ShutdownWithEngineCommandL( KVtEngTerminateSession );
+            }
+        }
+        break;
+    case EVtUiCmdCreateVoice:
+        CreateVoiceCallL();
+        break;
+    case EVtUiCmdDialEmergency:
+        // Attempt emergency call. Note that emergency number check is done
+        // after calling DialEmergencyCallL and if supplied number is not
+        // emergency leave occurs.
+        TRAP_IGNORE( DialEmergencyCallL() );
+        break;
+    default:
+        handled = TVtUiAppStateBase::HandleCommandL( aCommand );
+        break;
+        }
+    __VTPRINTEXITR( "UiStateRunning.HandleCommandL %d", handled )
+    return handled;
+    }
+
+
+// -----------------------------------------------------------------------------
+// TVtUiStateRunning::HandleForegroundChangedL
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStateRunning::HandleForegroundChangedL( const TBool aIsForeground )
+    {
+    __VTPRINTENTER( "UiStateRunning.HandleForegroundChangedL" )
+
+    // Closes create voice call dialog if it is open
+    delete iCreateVoiceCallDlg; iCreateVoiceCallDlg = NULL;
+
+    SetLightsState( aIsForeground );
+
+    iCtx.RefreshL( MVtUiStateContext::ENaviPane );
+
+    TBool handleAsForeground( aIsForeground );
+    TPtrC8 params( reinterpret_cast< TUint8* >( &handleAsForeground ),
+        sizeof( TBool ) );
+    iCtx.DoExecuteCmdL( KVtEngSetUIForeground, &params );
+    __VTPRINTEXIT( "UiStateRunning.HandleForegroundChangedL" )
+    return handleAsForeground;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateRunning::PreHandleForegroundChangedL
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStateRunning::PreHandleForegroundChangedL( const TBool aIsForeground )
+    {
+    __VTPRINTENTER( "UiStateRunning.PreHandleForegroundChangedL" )
+    TBool handleAsForeground( aIsForeground );
+    TPtrC8 params( reinterpret_cast< TUint8* >( &handleAsForeground ), sizeof( TBool ) );
+    iCtx.DoExecuteCmdL( KVtEngSetUIForeground, &params );
+    __VTPRINTEXIT( "UiStateRunning.PreHandleForegroundChangedL" )
+    return handleAsForeground;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateRunning::HandleLayoutChangedL
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateRunning::HandleLayoutChangedL( )
+    {
+    __VTPRINTENTER( "UiStateRunning.HandleLayoutChangedL" )
+    iUiStates.SetLayoutChangeNeeded( EFalse );
+    iCtx.DoHandleLayoutChangedL();
+    __VTPRINTEXIT( "UiStateRunning.HandleLayoutChangedL" )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateRunning::StartDtmfTone
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateRunning::StartDtmfTone( const TChar& aTone )
+    {
+    iCtx.StartDtmfTone( aTone );
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateRunning::StopDtmfTone
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateRunning::StopDtmfTone()
+    {
+    iCtx.StopDtmfTone();
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateRunning::CreateVoiceCallL
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateRunning::CreateVoiceCallL()
+    {
+    __VTPRINTENTER( "TVtUiStateRunning.CreateVoiceCallL" )
+    HBufC* prompt =
+    	StringLoader::LoadLC( R_VIDEOTELUI_QTN_QUERY_CREATE_VOICE_CALL );
+
+    // Create and initialize query dialog
+    CAknQueryDialog* createVoiceCallDlg = CAknQueryDialog::NewL();
+    CleanupStack::PushL( createVoiceCallDlg );
+    createVoiceCallDlg->SetPromptL( *prompt );
+    CleanupStack::Pop(); // createVoiceCallDlg
+
+    iCreateVoiceCallDlg = createVoiceCallDlg;
+    TInt result( KErrNone );
+    TRAPD( error, result = iCreateVoiceCallDlg->ExecuteLD(
+        R_VIDEOTELUI_CREATE_VOICE_QUERY ) );
+    // Just set to NULL because ExecuteLD() deletes instance
+    iCreateVoiceCallDlg = NULL;
+    // Leave if ExecuteLD() left
+    User::LeaveIfError( error );
+    CleanupStack::PopAndDestroy( ); // prompt
+    if ( result )
+        {
+        //user answered yes
+		iCtx.DoExecuteCmdL( KVtEngSwitchToVoice, NULL );
+        }
+    __VTPRINTEXITR( "TVtUiAppStateBase.CreateVoiceCallL %d", result )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateRunning::ShutdownWithEngineCommandL
+// Starts shutdown with command to engine.
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateRunning::ShutdownWithEngineCommandL( const TInt aCommand )
+    {
+    __VTPRINTENTER(
+        "TVtUiStateRunning.ShutdownWithEngineCommandL" )
+    TVtUiAppStateBase* resetState =
+        TVtUiStateResetting::InstanceL( iCtx, iUiStates, aCommand ); 
+    CVtUiAppShutter* shutter = CVtUiAppShutter::InstanceL( *resetState );
+    if ( shutter )
+        {
+        // open resetting state, handles engine command request/reply
+        ChangeStateL( *resetState );
+#ifdef _DEBUG
+        __VTPRINTEXIT(
+            "TVtUiStateRunning.ShutdownWithEngineCommandL 1" )
+        return;
+#endif
+        }    
+       
+    __VTPRINTEXIT(
+        "TVtUiStateRunning.ShutdownWithEngineCommandL 0" )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateRunning::DialEmergencyCallL
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateRunning::DialEmergencyCallL()
+    {
+    __VTPRINTENTER(
+        "TVtUiStateRunning.DialEmergencyCallL" )
+    TVtUiAppStateBase* resetState =
+        TVtUiStateResetting::InstanceL( iCtx, iUiStates );
+    CVtUiAppShutter* shutter = CVtUiAppShutter::InstanceL( *resetState );
+    if ( shutter )
+        {
+        // Make emergency call and proceed when 1) state has given permission 
+        // and 2) callback from emergency call api is received
+        shutter->ShutdownWithEmergencyCallL( iCtx );
+        ChangeStateL( *resetState );
+        }
+    __VTPRINTEXIT( "TVtUiStateRunning.DialEmergencyCallL" )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateRunning::OpenL
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateRunning::OpenL()
+    {
+    __VTPRINTENTER( "TVtUiStateRunning.OpenL" )
+    SetExecState( TVtUiStates::EExecStateRunning );
+    iCtx.RefreshStatesL();
+    __VTPRINTEXIT( "TVtUiStateRunning.OpenL" )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateRunning::Close
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateRunning::Close()
+    {
+    __VTPRINTENTER( "TVtUiStateRunning.Close" )
+    if ( TVtUiStateRunning::iInstance )
+        {
+        delete TVtUiStateRunning::iInstance;
+        TVtUiStateRunning::iInstance = NULL;
+        }
+    __VTPRINTEXIT( "TVtUiStateRunning.Close" )
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/tvtuistatestarting.cpp	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,310 @@
+/*
+* Copyright (c) 2007 - 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:  waiting details application state
+*
+*/
+
+
+#include "tvtuistates.h"
+#include "tvtuiappstates.h"
+#include "mvtuistatecontext.h"
+#include "videotelui.hrh"
+#include "cvtuiappshutter.h"
+#include <cvtlogger.h>
+#include <vtengevents.h>
+#include <vtengcommands.h>
+#include <cvtengmodel.h>
+#include <mvtengsessioninfo.h>
+
+
+TVtUiStateStarting* TVtUiStateStarting::iInstance = NULL;
+
+// c++ constructor
+TVtUiStateStarting::TVtUiStateStarting(
+    MVtUiStateContext& aCtx, TVtUiStates& aUiStates ) 
+    : TVtUiAppStateBase( aCtx, aUiStates )
+    {
+    iPreconditions.Set( EWaitingCLI );
+    iPreconditions.Set( EWaitingPhase1ToComplete );
+    }
+
+// Destructor
+TVtUiStateStarting::~TVtUiStateStarting()
+    {
+    delete iStartCallback;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateStarting::InstanceL
+//
+// -----------------------------------------------------------------------------
+//
+TVtUiStateStarting * TVtUiStateStarting::InstanceL(
+    MVtUiStateContext& aCtx, TVtUiStates& aUiStates )
+    {
+    __VTPRINTENTER( "TVtUiStateStarting.InstanceL" )
+    if ( iInstance == NULL )
+        {
+        iInstance = new ( ELeave ) TVtUiStateStarting( aCtx, aUiStates );
+        }
+    __VTPRINTEXIT( "TVtUiStateStarting.InstanceL" )
+    return iInstance;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateStarting::AppUiStartupPhase1DoneL
+//
+// Phase 1 of application startup is completed, check if we can proceed to
+// phase 2.
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateStarting::AppUiStartupPhase1DoneL()
+    {
+    __VTPRINTENTER( "TVtUiStateStarting.AppUiStartupPhase1DoneL" )
+    // From startup phase point of view we're ready to proceed
+    // to phase 2. Clear that precondition and proceed if otherwise ready.
+    CheckPhase2StartupL( EWaitingPhase1ToComplete );
+    __VTPRINTEXIT( "TVtUiStateStarting.AppUiStartupPhase1DoneL" )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateStarting::AppUiStartupPhase2DoneL
+//
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateStarting::AppUiStartupPhase2DoneL()
+    {
+    __VTPRINTENTER( "TVtUiStateStarting.AppUiStartupPhase2DoneL" )
+    // Phase 2 completed, proceed to next state
+    ChangeStateL( *TVtUiStateRunning::InstanceL( iCtx, iUiStates ) );
+    __VTPRINTEXIT( "TVtUiStateStarting.AppUiStartupPhase2DoneL" )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateStarting::HandleVtEventL
+//
+// -----------------------------------------------------------------------------
+//
+TVtUiAppStateBase::TEventResponse TVtUiStateStarting::HandleVtEventL(
+    const TInt aEvent )
+    {
+    __VTPRINTENTER( "TVtUiStateStarting.HandleVtEventL" )
+    TEventResponse handled = EEventHandled;
+    switch ( aEvent )
+        {
+    case KVtEngRemoteDisconnect:
+        // base class handles this.
+        handled = TVtUiAppStateBase::HandleVtEventL( aEvent );
+        break;
+    case KVtEngSessionStateChanged:
+        {
+        // check if session state is proper for proceeding to next phase
+        // in startup.
+        CheckSessionStateL();
+        }
+        break;
+    case KVtEngRemoteVideoStarted:
+        // allow to start remote video rendering
+    case KVtEngSourceChanged:
+        // allow handling of source changed event
+        handled = EEventNotHandled; 
+        break;
+    case KVtEngCLIAvailable:
+        HandleCLIReceivedL();
+        break;
+        
+    case KVtEngRemoteUIIIA5StringSupport:
+        break;
+    case KVtEngDeviceLockOn:
+    case KVtEngDeviceLockOff:
+    default:
+        handled = TVtUiAppStateBase::HandleVtEventL( aEvent );
+        break;
+        }
+    __VTPRINTEXIT( "TVtUiStateStarting.HandleVtEventL" )
+    return handled;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateStarting::HandleCommandL
+//
+// -----------------------------------------------------------------------------
+//
+TVtUiAppStateBase::TEventResponse TVtUiStateStarting::HandleCommandL(
+    const TInt /*aCommand*/ )
+    {
+    __VTPRINTENTER( "TVtUiStateStarting.HandleCommandL" )
+    __VTPRINTEXIT( "TVtUiStateStarting.HandleCommandL" )
+    return EEventNotHandled;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateStarting::HandleForegroundChangedL
+//
+// -----------------------------------------------------------------------------
+//
+TBool TVtUiStateStarting::HandleForegroundChangedL( const TBool aIsForeground )
+    {
+    __VTPRINTENTER( "TVtUiStateStarting.HandleForegroundChangedL" )
+        
+    SetLightsState( aIsForeground );
+    iCtx.RefreshL( MVtUiStateContext::ENaviPane );
+    
+    // behave as in background if CLI (=details) has not yet received
+    TBool handleAsForeground( aIsForeground && iUiStates.IsDetailsReceived() ); 
+    TVtUiAppStateBase::ExecuteEngineCommand( KVtEngSetUIForeground, 
+        handleAsForeground );
+    
+    __VTPRINTEXIT( "TVtUiStateStarting.HandleForegroundChangedL" )
+    return handleAsForeground;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateStarting::OpenL
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateStarting::OpenL()
+    {
+    __VTPRINTENTER( "TVtUiStateStarting.OpenL" )
+    iStartCallback = new ( ELeave ) CAsyncCallBack (
+            TCallBack( &AsynchOpen, this ),
+            CActive::EPriorityStandard );
+    iStartCallback->CallBack();  
+    __VTPRINTEXIT( "TVtUiStateStarting.OpenL" )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateStarting::AsynchOpen
+// asynchronous entry to the state.
+// -----------------------------------------------------------------------------
+//
+TInt TVtUiStateStarting::AsynchOpen( TAny* aAny )
+    {
+    __VTPRINTENTER( "TVtUiStateStarting.AsynchOpen" )
+    TVtUiStateStarting* state = reinterpret_cast<TVtUiStateStarting*>( aAny );
+    delete state->iStartCallback;
+    state->iStartCallback = NULL;
+    TRAPD( res, state->DoOpenL() );
+    __VTPRINTEXITR( "TVtUiStateStarting.AsynchOpen err=%d>", res )
+    return res;
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateStarting::DoOpenL
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateStarting::DoOpenL()
+    {
+    __VTPRINTENTER( "TVtUiStateStarting.DoOpenL" )
+    if ( !CheckEndActiveCallL() )
+        {
+        // not shutting down, proceed to phase 1
+        iCtx.StartupPhase1L();
+        }
+    __VTPRINTEXIT( "TVtUiStateStarting.DoOpenL" )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateStarting::CheckSessionStateL
+// Resolve action based on session state change in the engine.
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateStarting::CheckSessionStateL()
+    {
+    __VTPRINTENTER( "TVtUiStateStarting.CheckSessionStateL" )
+    const MVtEngSessionInfo::TSessionState state = SessionState( EFalse );
+    switch ( state )
+        {
+    case MVtEngSessionInfo::EConnected:
+    case MVtEngSessionInfo::ENegotiating:
+    case MVtEngSessionInfo::EOpen:
+        // From session state point of view we're ready to proceed.
+        // Clear precondition and proceed if otherwise ready.
+        CheckPhase2StartupL( EWaitingSessionState );
+        break;
+    default:
+        // Is session state such that we need to shutdown?
+        CheckEndActiveCallL();
+        break;
+        }
+    __VTPRINTEXIT( "TVtUiStateStarting.CheckSessionStateL" )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateStarting::CheckPhase2StartupL
+//
+// mark precondition passed and if no more preconditions exist proceed
+// in startup.
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateStarting::CheckPhase2StartupL(
+    const TPreconditions aCond )
+    {
+    __VTPRINTENTER( "TVtUiStateStarting.CheckPhase2StartupL" )
+    // First check that at least one precondition holds
+    if ( iPreconditions.Value() )
+        {
+        iPreconditions.Clear( aCond );
+        if ( !iPreconditions.Value() )
+            {
+            CleanupResetPushL();  // start shutdown if StartupPhase2L leaves
+            iCtx.StartupPhase2L();
+            CleanupStack::Pop(); // CleanupResetPushL
+            }
+        }
+#ifdef VTDEBUG
+    else {
+        __VTPRINT( DEBUG_GEN, "TVtUiStateStarting.CheckPhase2StartupL NoOp!" )
+        }
+#endif // VTDEBUG
+    __VTPRINTEXITR( "TVtUiStateStarting.CheckPhase2StartupL cond=%d",
+        (TInt) iPreconditions.Value() )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateStarting::HandleCLIReceivedL
+// CLI reception from engine is one of the two preconditions for proceeding
+// to phase2 startup.
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateStarting::HandleCLIReceivedL()
+    {
+    __VTPRINTENTER( "TVtUiStateStarting.HandleCLIReceivedL" )
+    const MVtEngSessionInfo& session = iCtx.Model().Session();
+    MVtEngSessionInfo::TCLI cli;
+    if ( session.GetCLI( cli ) == KErrNone )
+        {
+        iUiStates.SetDetailsReceived( ETrue );
+        iUiStates.SetCLIReceived( cli.iVoiceCallPossible );
+        iCtx.SetCallIdL( cli.iCallId );
+        iCtx.SetCallNameL( cli.iName );
+        }
+    CheckPhase2StartupL( EWaitingCLI );
+    __VTPRINTEXIT( "TVtUiStateStarting.HandleCLIReceivedL" )
+    }
+
+// -----------------------------------------------------------------------------
+// TVtUiStateStarting::Close
+// -----------------------------------------------------------------------------
+//
+void TVtUiStateStarting::Close()
+    {
+    __VTPRINTENTER( "TVtUiStateStarting.Close" )
+    if ( TVtUiStateStarting::iInstance )
+        {
+        delete TVtUiStateStarting::iInstance;
+        TVtUiStateStarting::iInstance = NULL;
+        }
+    __VTPRINTEXIT( "TVtUiStateStarting.Close" )
+    }