201017_1
authorhgs
Thu, 13 May 2010 21:30:19 +0300
changeset 28 3075d9b614e6
parent 19 d9aefe59d544
child 30 7680ea4bbfe7
child 38 0f0b4c1d7744
child 43 0e652f8f1fbd
201017_1
camerauis/cameraxui/cxengine/conf/cameraxvariation.confml
camerauis/cameraxui/cxengine/conf/cameraxvariation_20027018.crml
camerauis/cameraxui/cxengine/cxengine.pro
camerauis/cameraxui/cxengine/inc/api/cxeautofocuscontrol.h
camerauis/cameraxui/cxengine/inc/api/cxeengine.h
camerauis/cameraxui/cxengine/inc/api/cxefeaturemanager.h
camerauis/cameraxui/cxengine/inc/api/cxememorymonitor.h
camerauis/cameraxui/cxengine/inc/api/cxenamespace.h
camerauis/cameraxui/cxengine/inc/api/cxequalitydetails.h
camerauis/cameraxui/cxengine/inc/api/cxestillcapturecontrol.h
camerauis/cameraxui/cxengine/inc/api/cxevideocapturecontrol.h
camerauis/cameraxui/cxengine/inc/cxeautofocuscontrolsymbian.h
camerauis/cameraxui/cxengine/inc/cxecenrepkeys.h
camerauis/cameraxui/cxengine/inc/cxediskmonitor.h
camerauis/cameraxui/cxengine/inc/cxediskmonitorprivate.h
camerauis/cameraxui/cxengine/inc/cxeenginesymbian.h
camerauis/cameraxui/cxengine/inc/cxefilenamegeneratorsymbian.h
camerauis/cameraxui/cxengine/inc/cxememorymonitorprivate.h
camerauis/cameraxui/cxengine/inc/cxesettingscontrolsymbian.h
camerauis/cameraxui/cxengine/inc/cxesettingsmodelimp.h
camerauis/cameraxui/cxengine/inc/cxestatemachinebase.h
camerauis/cameraxui/cxengine/inc/cxestillcapturecontrolsymbian.h
camerauis/cameraxui/cxengine/inc/cxesysutil.h
camerauis/cameraxui/cxengine/inc/cxevideocapturecontrolsymbian.h
camerauis/cameraxui/cxengine/src/cxeautofocuscontrolsymbian.cpp
camerauis/cameraxui/cxengine/src/cxecameradevice.cpp
camerauis/cameraxui/cxengine/src/cxediskmonitor.cpp
camerauis/cameraxui/cxengine/src/cxediskmonitorprivate.cpp
camerauis/cameraxui/cxengine/src/cxeengine.cpp
camerauis/cameraxui/cxengine/src/cxeenginesymbian.cpp
camerauis/cameraxui/cxengine/src/cxememorymonitor.cpp
camerauis/cameraxui/cxengine/src/cxememorymonitorprivate.cpp
camerauis/cameraxui/cxengine/src/cxequalitypresetssymbian.cpp
camerauis/cameraxui/cxengine/src/cxesettingscenrepstore.cpp
camerauis/cameraxui/cxengine/src/cxesettingscontrolsymbian.cpp
camerauis/cameraxui/cxengine/src/cxesettingsimp.cpp
camerauis/cameraxui/cxengine/src/cxesettingsmappersymbian.cpp
camerauis/cameraxui/cxengine/src/cxesettingsmodelimp.cpp
camerauis/cameraxui/cxengine/src/cxestatemachinebase.cpp
camerauis/cameraxui/cxengine/src/cxestillcapturecontrolsymbian.cpp
camerauis/cameraxui/cxengine/src/cxesysutil.cpp
camerauis/cameraxui/cxengine/src/cxevideocapturecontrolsymbian.cpp
camerauis/cameraxui/cxengine/src/cxeviewfindercontrolsymbian.cpp
camerauis/cameraxui/cxengine/src/cxezoomcontrolsymbian.cpp
camerauis/cameraxui/cxengine/tsrc/fakeclasses/cxefakesettingsmodel.cpp
camerauis/cameraxui/cxengine/tsrc/unit/cxeunitrunner/cxetestrunner.cpp
camerauis/cameraxui/cxengine/tsrc/unit/cxeunitrunner/cxeunitrunner.pro
camerauis/cameraxui/cxengine/tsrc/unit/unit.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeautofocuscontrolsymbian/unittest_cxeautofocuscontrolsymbian.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxecameradevice/unittest_cxecameradevice.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxecameradevicecontrolsymbian/unittest_cxecameradevicecontrolsymbian.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeenginesymbian/unittest_cxeenginesymbian.cpp
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeenginesymbian/unittest_cxeenginesymbian.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeerrormappersymbian/unittest_cxeerrormappersymbian.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxefeaturemanagerimp/unittest_cxefeaturemanagerimp.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxefilenamegeneratorsymbian/unittest_cxefilenamegeneratorsymbian.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxefilesavethreadsymbian/unittest_cxefilesavethreadsymbian.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeharvestercontrolsymbian/unittest_cxeharvestercontrolsymbian.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeimagedataitemsymbian/unittest_cxeimagedataitemsymbian.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeimagedataqueuesymbian/unittest_cxeimagedataqueuesymbian.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxequalitypresetssymbian/unittest_cxequalitypresetssymbian.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettingscenrepstore/unittest_cxesettingscenrepstore.cpp
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettingscenrepstore/unittest_cxesettingscenrepstore.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettingscontrolsymbian/unittest_cxesettingscontrolsymbian.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettingsimp/unittest_cxesettingsimp.cpp
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettingsimp/unittest_cxesettingsimp.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettingsmodelimp/unittest_cxesettingsmodelimp.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettmappersymbian/unittest_cxesettmappersymbian.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxestate/unittest_cxestate.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxestatemachine/unittest_cxestatemachine.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxestillcapturecontrolsymbian/unittest_cxestillcapturecontrolsymbian.cpp
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxestillcapturecontrolsymbian/unittest_cxestillcapturecontrolsymbian.h
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxestillcapturecontrolsymbian/unittest_cxestillcapturecontrolsymbian.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxestillimagesymbian/unittest_cxestillimagesymbian.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxetestutils/unittest_cxetestutils.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxethumbnailmanagersymbian/unittest_cxethumbnailmanagersymbian.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxevideocapturecontrolsymbian/cxevideocapturecontrolsymbianunit.cpp
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxevideocapturecontrolsymbian/cxevideocapturecontrolsymbianunit.h
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxevideocapturecontrolsymbian/unittest_cxevideocapturecontrolsymbian.cpp
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxevideocapturecontrolsymbian/unittest_cxevideocapturecontrolsymbian.h
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxevideocapturecontrolsymbian/unittest_cxevideocapturecontrolsymbian.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeviewfindercontrolsymbian/unittest_cxeviewfindercontrolsymbian.pro
camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxezoomcontrolsymbian/unittest_cxezoomcontrolsymbian.pro
camerauis/cameraxui/cxui/cxui.pro
camerauis/cameraxui/cxui/cxui.qrc
camerauis/cameraxui/cxui/cxui_service_conf.xml
camerauis/cameraxui/cxui/cxuiexternalsceneimages.qrc
camerauis/cameraxui/cxui/cxuiinternalsceneimages.qrc
camerauis/cameraxui/cxui/icons/blackbg.png
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_antired.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_autoflash.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_camera.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_camera_second.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_colour.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_colour_bw.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_colour_negative.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_colour_normal.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_colour_sepia.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_colour_vivid.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_contrast.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_exposure.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_flash_off.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_flash_on.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_goto_gallery.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_gridviewer.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_iso.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_iso_auto.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_iso_high.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_iso_low.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_iso_medium.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_light_off.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_light_on.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_mode_auto.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_mode_camera.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_mode_closeup.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_mode_landscape.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_mode_night.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_mode_portrait.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_mode_portrait_night.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_mode_sport.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_selftimer.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_sequence_burst.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_sharpness.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_tb_capture.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_tb_delete.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_tb_extension.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_tb_flash.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_tb_play.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_tb_record.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_tb_switch_still.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_tb_switch_video.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_tb_upload.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_wb.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_wb_auto.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_wb_cloudy.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_wb_fluorecent.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_wb_sunny.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cam4_wb_tungsten.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cams_tb_rec_pause.svg
camerauis/cameraxui/cxui/icons/qgn_indi_cams_tb_rec_stop.svg
camerauis/cameraxui/cxui/icons/qgn_indi_tb_zoom.svg
camerauis/cameraxui/cxui/icons/qgn_indi_vid4_video.svg
camerauis/cameraxui/cxui/icons/qgn_prop_vc_media_play.svg
camerauis/cameraxui/cxui/icons/qtg_mono_tick.svg
camerauis/cameraxui/cxui/icons/scene_automatic.png
camerauis/cameraxui/cxui/icons/scene_close-up.png
camerauis/cameraxui/cxui/icons/scene_landscape.png
camerauis/cameraxui/cxui/icons/scene_lowlight.png
camerauis/cameraxui/cxui/icons/scene_macro.png
camerauis/cameraxui/cxui/icons/scene_night.png
camerauis/cameraxui/cxui/icons/scene_nightportrait.png
camerauis/cameraxui/cxui/icons/scene_portrait.png
camerauis/cameraxui/cxui/icons/scene_sport.png
camerauis/cameraxui/cxui/icons/whitebg.PNG
camerauis/cameraxui/cxui/icons/zoomin.png
camerauis/cameraxui/cxui/icons/zoomin.svg
camerauis/cameraxui/cxui/icons/zoomout.png
camerauis/cameraxui/cxui/icons/zoomout.svg
camerauis/cameraxui/cxui/inc/cxuiapplication.h
camerauis/cameraxui/cxui/inc/cxuiapplicationframeworkmonitor.h
camerauis/cameraxui/cxui/inc/cxuiapplicationframeworkmonitorprivate.h
camerauis/cameraxui/cxui/inc/cxuicapturekeyhandler.h
camerauis/cameraxui/cxui/inc/cxuienums.h
camerauis/cameraxui/cxui/inc/cxuierrormanager.h
camerauis/cameraxui/cxui/inc/cxuipostcaptureview.h
camerauis/cameraxui/cxui/inc/cxuiprecaptureview.h
camerauis/cameraxui/cxui/inc/cxuiscenemodeview.h
camerauis/cameraxui/cxui/inc/cxuiselftimer.h
camerauis/cameraxui/cxui/inc/cxuisettingbutton.h
camerauis/cameraxui/cxui/inc/cxuisettingbuttoncontainer.h
camerauis/cameraxui/cxui/inc/cxuisettingsinfo.h
camerauis/cameraxui/cxui/inc/cxuistillprecaptureview2.h
camerauis/cameraxui/cxui/inc/cxuivideoprecaptureview.h
camerauis/cameraxui/cxui/inc/cxuivideoprecaptureview2.h
camerauis/cameraxui/cxui/inc/cxuiviewmanager.h
camerauis/cameraxui/cxui/inc/cxuizoomslider.h
camerauis/cameraxui/cxui/layouts/errornote_popup.docml
camerauis/cameraxui/cxui/layouts/image_setting.xml
camerauis/cameraxui/cxui/layouts/setting.docml
camerauis/cameraxui/cxui/layouts/setting_scenemode.docml
camerauis/cameraxui/cxui/layouts/setting_slider.docml
camerauis/cameraxui/cxui/layouts/standbymode_popup.docml
camerauis/cameraxui/cxui/layouts/video_setting.xml
camerauis/cameraxui/cxui/layouts/view_postcapture.docml
camerauis/cameraxui/cxui/layouts/view_still_precapture.docml
camerauis/cameraxui/cxui/layouts/view_video_precapture.docml
camerauis/cameraxui/cxui/src/cxuiapplication.cpp
camerauis/cameraxui/cxui/src/cxuiapplicationframeworkmonitor.cpp
camerauis/cameraxui/cxui/src/cxuiapplicationframeworkmonitorprivate.cpp
camerauis/cameraxui/cxui/src/cxuicapturekeyhandler.cpp
camerauis/cameraxui/cxui/src/cxuidocumentloader.cpp
camerauis/cameraxui/cxui/src/cxuierrormanager.cpp
camerauis/cameraxui/cxui/src/cxuipostcaptureview.cpp
camerauis/cameraxui/cxui/src/cxuiprecaptureview.cpp
camerauis/cameraxui/cxui/src/cxuiscenemodeview.cpp
camerauis/cameraxui/cxui/src/cxuiselftimer.cpp
camerauis/cameraxui/cxui/src/cxuiserviceprovider.cpp
camerauis/cameraxui/cxui/src/cxuisettingbutton.cpp
camerauis/cameraxui/cxui/src/cxuisettingbuttoncontainer.cpp
camerauis/cameraxui/cxui/src/cxuisettingdialog.cpp
camerauis/cameraxui/cxui/src/cxuisettingradiobuttonlist.cpp
camerauis/cameraxui/cxui/src/cxuisettingsinfo.cpp
camerauis/cameraxui/cxui/src/cxuisettingslider.cpp
camerauis/cameraxui/cxui/src/cxuisettingxmlreader.cpp
camerauis/cameraxui/cxui/src/cxuistandby.cpp
camerauis/cameraxui/cxui/src/cxuistillprecaptureview.cpp
camerauis/cameraxui/cxui/src/cxuistillprecaptureview2.cpp
camerauis/cameraxui/cxui/src/cxuivideoprecaptureview.cpp
camerauis/cameraxui/cxui/src/cxuivideoprecaptureview2.cpp
camerauis/cameraxui/cxui/src/cxuiviewmanager.cpp
camerauis/cameraxui/cxui/src/cxuizoomslider.cpp
camerauis/cameraxui/cxui/src/main.cpp
camerauis/cameraxui/cxui/traces/OstTraceDefinitions.h
camerauis/cameraxui/cxui/tsrc/cxuitest.pro
camerauis/cameraxui/cxui/tsrc/cxuitestbat.pro
--- a/camerauis/cameraxui/cxengine/conf/cameraxvariation.confml	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/conf/cameraxvariation.confml	Thu May 13 21:30:19 2010 +0300
@@ -3,29 +3,33 @@
     <desc>CameraX Runtime Variation</desc>
 
     <setting ref="PrimaryCameraCaptureKeysCr" name="primary camera capture keys" type="string" readOnly="true">
-      <desc>PrimaryCameraCaptureKeysCr defines the key scan codes that are configured
-            as capture keys for primary camera.
+      <desc>PrimaryCameraCaptureKeysCr defines the capture keys for primary camera.
+            Both key code and scan code are needed for full functionality.
       </desc>
     </setting>
 
     <setting ref="SecondaryCameraCaptureKeysCr" name="secondary camera capture keys" type="string" readOnly="true">
-      <desc>SecondaryCameraCaptureKeysCr defines the key scan codes that are configured 
+      <desc>SecondaryCameraCaptureKeysCr defines the key scan codes that are configured
             as capture keys for secondary camera.
       </desc>
     </setting>
 
     <setting ref="PrimaryCameraAutofocusKeysCr" name="primary camera autofocus keys" type="string" readOnly="true">
-      <desc>PrimaryCameraAutofocusKeysCr defines the key scan codes that are configured 
-            as autofocus keys for primary camera.
+      <desc>PrimaryCameraAutofocusKeysCr defines the autofocus keys for primary camera.
+            Both key code and scan code are needed for full functionality.
       </desc>
     </setting>
 
-    <setting ref="ContrastItemsCr" name="contrast range" type="string" readOnly="true">
-      <desc>ContrastItemsCr defines the range which incluse the min value to max along with step size. e.g. -4, 4, 1</desc>
+    <setting ref="FreeMemoryLevelsCr" name="free memory levels" type="string" readOnly="true">
+      <desc>FreeMemoryLevelsCr defines the trigger levels for freeing memory and required levels of free memory.
+            All values are defined in bytes. There are 4 items in comma-separated list. Items are defined as follows:
+            1. Trigger level of free RAM when camera is started. If free RAM is below this, more free memory is requested.
+            2. Level of free RAM requested and required for camera to start, if trigger level (item 1) is met.
+      </desc>
     </setting>
-    
+
     <setting ref="StillMaxZoomValuesCr" name="Maximum still zoom values" type="string" readOnly="true">
-      <desc>Key defines maximum zoom limit specific to each image quality. The firt item represent max zoom limit
+      <desc>Key defines maximum zoom limit specific to each image quality. The first item represent max zoom limit
             for highest still resoultion and so on. We have only 5 entries, since we dont expect to have more than 5 still resoultions
             in any product. Use -1 when zoom limit is not supported for a particular resolution.
             Note: ECAM already has some limits which should be taken into account.
@@ -33,9 +37,9 @@
     </setting>
 
     <setting ref="VideoMaxZoomValuesCr" name="Maximum video zoom values" type="string" readOnly="true">
-      <desc>Key defines maximum zoom limit specific to each video quality. The firt item represent max zoom limit
+      <desc>Key defines maximum zoom limit specific to each video quality. The first item represent max zoom limit
             for highest video resoultion and so on. We have only 5 entries, since we dont expect to have more than 5 video resoultions
-            in any product. Use -1 when zoom limit is not supported for a particular resolution. 
+            in any product. Use -1 when zoom limit is not supported for a particular resolution.
             Note: ECAM already has some limits which should be taken into account.
       </desc>
     </setting>
@@ -44,10 +48,10 @@
 
   <data>
     <CxRuntimeFeaturesCrUid>
-      <PrimaryCameraCaptureKeysCr>0xab</PrimaryCameraCaptureKeysCr>
+      <PrimaryCameraCaptureKeysCr>0xab,0xf849</PrimaryCameraCaptureKeysCr>
       <SecondaryCameraCaptureKeysCr>0xab,0xa7</SecondaryCameraCaptureKeysCr>
-      <PrimaryCameraAutofocusKeysCr>0xe2</PrimaryCameraAutofocusKeysCr>
-      <ContrastItemsCr>-4,4,1</ContrastItemsCr>
+      <PrimaryCameraAutofocusKeysCr>0xe2,0xf880</PrimaryCameraAutofocusKeysCr>
+      <FreeMemoryLevelsCr>8000000,10000000</FreeMemoryLevelsCr>
       <StillMaxZoomValuesCr>32,32,32,32,32</StillMaxZoomValuesCr>
       <VideoMaxZoomValuesCr>40,40,40,-1,-1</VideoMaxZoomValuesCr>
     </CxRuntimeFeaturesCrUid>
--- a/camerauis/cameraxui/cxengine/conf/cameraxvariation_20027018.crml	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/conf/cameraxvariation_20027018.crml	Thu May 13 21:30:19 2010 +0300
@@ -13,7 +13,7 @@
     <access type="R" capabilities="AlwaysPass"/>
   </key>
 
-  <key ref="CxRuntimeFeaturesCrUid/ContrastItemsCr" name="ContrastItemsCr" int="0x4" type="string" readOnly="true">
+  <key ref="CxRuntimeFeaturesCrUid/FreeMemoryLevelsCr" name="FreeMemoryLevelsCr" int="0x4" type="string" readOnly="true">
     <access type="R" capabilities="AlwaysPass"/>
   </key>
 
--- a/camerauis/cameraxui/cxengine/cxengine.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/cxengine.pro	Thu May 13 21:30:19 2010 +0300
@@ -23,15 +23,20 @@
                inc/sensor \
                inc/api \
                src/dummyengine \
-               ../traces  \
+               traces  \
                ../extensions/inc
 
 VPATH += src
 CONFIG += dll
 MOC_DIR = tmp
 
-TARGET.CAPABILITY = ALL -TCB -DRM
-TARGET.UID3 = 0x20027016
+symbian {
+    TARGET.CAPABILITY = ALL -TCB -DRM
+    TARGET.UID3 = 0x20027016
+    # Fix for QMake translating INCLUDEPATH to SYSTEMINCLUDE
+    # and TraceCompiler needing USERINCLUDE.
+    MMP_RULES           += "USERINCLUDE traces"
+}
 
 # Libs
 LIBS += -lecam
@@ -59,6 +64,8 @@
 LIBS += -lharvesterclient
 LIBS += -lthumbnailmanagerqt
 LIBS += -lxqserviceutil
+LIBS += -loommonitor
+LIBS += -lhal
 
 symbian {
    TARGET.EPOCALLOWDLLDATA = 1 // TODO: check this out??
@@ -145,13 +152,17 @@
            cxequalitypresetssymbian.h \
            cxeharvestercontrolsymbian.h \
            cxethumbnailmanagersymbian.h \
+           cxememorymonitor.h \
+           cxememorymonitorprivate.h \
+           cxediskmonitor.h \
+           cxediskmonitorprivate.h \
            sensor/xqsensor.h \
            sensor/xqaccsensor.h \
            sensor/xqdeviceorientation.h \
            sensor/xqdeviceorientation_p.h \
            sensor/xqsensor_p.h \
            sensor/xqaccsensor_p.h \
-           ../traces/OstTraceDefinitions.h
+           traces/OstTraceDefinitions.h
 
 SOURCES += cxecameradevicecontrolsymbian.cpp \
            cxeengine.cpp \
@@ -187,6 +198,10 @@
            cxequalitypresetssymbian.cpp \
            cxeharvestercontrolsymbian.cpp \
            cxethumbnailmanagersymbian.cpp \
+           cxememorymonitor.cpp \
+           cxememorymonitorprivate.cpp \
+           cxediskmonitor.cpp \
+           cxediskmonitorprivate.cpp \
            sensor/xqsensor.cpp \
            sensor/xqaccsensor.cpp \
            sensor/xqdeviceorientation.cpp \
@@ -196,3 +211,4 @@
 
 
 
+
--- a/camerauis/cameraxui/cxengine/inc/api/cxeautofocuscontrol.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/inc/api/cxeautofocuscontrol.h	Thu May 13 21:30:19 2010 +0300
@@ -77,8 +77,9 @@
     
     /**
      * Starts Autofocus.
+     * \param soundEnabled indicates if the auto focus sound should be played
      */
-    virtual CxeError::Id start() = 0;
+    virtual CxeError::Id start(bool soundEnabled = true) = 0;
     
     /**
      * Cancels Autofocus.
@@ -105,6 +106,11 @@
      * Check if Autofocus is Supported or Not.
      */
     virtual bool supported() const = 0;             // true when AF is supported
+    
+    /**
+    * Check if auto focus sound is enabled
+    */
+    virtual bool isSoundEnabled() const = 0;
 
 signals:
     void stateChanged( CxeAutoFocusControl::State newState, CxeError::Id error );
--- a/camerauis/cameraxui/cxengine/inc/api/cxeengine.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/inc/api/cxeengine.h	Thu May 13 21:30:19 2010 +0300
@@ -17,7 +17,7 @@
 #ifndef CXEENGINE_H
 #define CXEENGINE_H
 
-#include <QObject> 
+#include <QObject>
 #include "cxenamespace.h"
 
 class CxeCameraDeviceControl;
@@ -29,11 +29,12 @@
 class CxeImageDataQueue;
 class CxeFeatureManager;
 class CxeSettings;
+class CxeMemoryMonitor;
 
 /**
  * CxeEngine provides the the entry point into CameraX engine. This is the
  * first class the client needs to initialize. CxeEngine then provides
- * references to other CameraX engine objects. 
+ * references to other CameraX engine objects.
  */
 class CxeEngine : public QObject
 {
@@ -81,9 +82,18 @@
      * Access the settings model.
      */
     virtual CxeSettings &settings() = 0;
+
+    /**
+     * Access the feature manager.
+     */
     virtual CxeFeatureManager &featureManager() = 0;
 
     /**
+     * Memory monitor utility.
+     */
+    virtual CxeMemoryMonitor &memoryMonitor() = 0;
+
+    /**
      * Get current camera mode.
      */
     virtual Cxe::CameraMode mode() const = 0;
--- a/camerauis/cameraxui/cxengine/inc/api/cxefeaturemanager.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/inc/api/cxefeaturemanager.h	Thu May 13 21:30:19 2010 +0300
@@ -44,7 +44,7 @@
     /*!
     * We retrieve all the configured values for the given key
     */
-    virtual CxeError::Id configuredValues(const QString& key,QList<int>& values) = 0;
+    virtual CxeError::Id configuredValues(const QString& key, QList<int>& values) = 0;
 
 protected:
     CxeFeatureManager() {}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxengine/inc/api/cxememorymonitor.h	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef CXEMEMORYMONITOR_H
+#define CXEMEMORYMONITOR_H
+
+#include <QObject>
+
+class CxeFeatureManager;
+class CxeMemoryMonitorPrivate;
+
+/*!
+* Memory monitor class.
+* Memory monitor requests a pre-defined value of startup memory
+* at the time it is created, and throws error if it cannot get
+* enough memory freed. After creating, it can be set to monitor
+* free memory and try to keep it above pre-defined level.
+* Pre-defined levels are read from Feature Manager.
+*/
+class CxeMemoryMonitor : public QObject
+{
+    Q_OBJECT
+
+public:
+    explicit CxeMemoryMonitor(CxeFeatureManager &features);
+    ~CxeMemoryMonitor();
+
+public:
+    int free() const;
+
+public slots:
+    void startMonitoring();
+    void stopMonitoring();
+
+private:
+    bool requestFreeMemory(int requiredFreeMemory);
+
+private:
+    CxeMemoryMonitorPrivate *p;
+};
+
+#endif // CXEMEMORYMONITOR_H
+
--- a/camerauis/cameraxui/cxengine/inc/api/cxenamespace.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/inc/api/cxenamespace.h	Thu May 13 21:30:19 2010 +0300
@@ -84,9 +84,9 @@
 
     enum Sharpness
     {
-        SharpnessHard = 100,
+        SharpnessHard = 2,
         SharpnessNormal = 0,
-        SharpnessSoft = -100
+        SharpnessSoft = -2
     };
 
     enum LightSensitivity
@@ -117,6 +117,15 @@
         Repository, // repository key
         PublishAndSubscribe // P&S key
     };
+
+    /*!
+    * Index to CxeRuntimeKeys::FREE_MEMORY_LEVELS comma separated values
+    */
+    enum FreeMemoryIndex
+    {
+        FreeMemoryTrigger = 0,
+        FreeMemoryTarget
+    };
 }
 
 namespace CxeSettingIds
@@ -147,24 +156,23 @@
     static const char*  FNAME_VIDEO_COUNTER                    = "video_counter";
 
     // scene mode keys
-    static const char* IMAGE_SCENE                             = "image_scene";
-    static const char* VIDEO_SCENE                             = "video_scene";
+    static const char* IMAGE_SCENE                             = "still_scene_modes";
+    static const char* VIDEO_SCENE                             = "video_scene_modes";
 
     // image scene mode key values
-    static const char*  IMAGE_SCENE_AUTO                       = "ImageSceneAuto";
-    static const char*  IMAGE_SCENE_PORTRAIT                   = "ImageScenePortrait";
-    static const char*  IMAGE_SCENE_SCENERY                    = "ImageSceneScenery";
-    static const char*  IMAGE_SCENE_MACRO                      = "ImageSceneMacro";
-    static const char*  IMAGE_SCENE_SPORTS                     = "ImageSceneSports";
-    static const char*  IMAGE_SCENE_NIGHT                      = "ImageSceneNight";
-    static const char*  IMAGE_SCENE_NIGHTPORTRAIT              = "ImageSceneNightPortrait";
-    static const char*  IMAGE_SCENE_CLOSEUP                    = "ImageSceneCloseUp";
+    static const char*  IMAGE_SCENE_AUTO                       = "image_scene_auto";
+    static const char*  IMAGE_SCENE_PORTRAIT                   = "image_scene_portrait";
+    static const char*  IMAGE_SCENE_SCENERY                    = "image_scene_scenery";
+    static const char*  IMAGE_SCENE_MACRO                      = "image_scene_macro";
+    static const char*  IMAGE_SCENE_SPORTS                     = "image_scene_sports";
+    static const char*  IMAGE_SCENE_NIGHT                      = "image_scene_night";
+    static const char*  IMAGE_SCENE_NIGHTPORTRAIT              = "image_scene_night_portrait";
 
     // video scene setting key values
-    static const char*  VIDEO_SCENE_AUTO                       = "VideoSceneAuto";
-    static const char*  VIDEO_SCENE_NIGHTPORTRAIT              = "VideoSceneNightPortrait";
-    static const char*  VIDEO_SCENE_LOWLIGHT                   = "VideoSceneLowLight";
-    static const char*  VIDEO_SCENE_NIGHT                      = "VideoSceneNight";
+    static const char*  VIDEO_SCENE_AUTO                       = "video_scene_auto";
+    static const char*  VIDEO_SCENE_NIGHTPORTRAIT              = "video_scene_night_portrait";
+    static const char*  VIDEO_SCENE_LOWLIGHT                   = "video_scene_low_light";
+    static const char*  VIDEO_SCENE_NIGHT                      = "video_scene_night";
 
     // setting keys for post capture timeout
     static const char*  STILL_SHOWCAPTURED                     = "still_showcaptured";
@@ -181,7 +189,7 @@
     static const char* PRIMARY_CAMERA_CAPTURE_KEYS   = "primary_camera_capture_keys";
     static const char* PRIMARY_CAMERA_AUTOFOCUS_KEYS = "primary_camera_autofocus_keys";
     static const char* SECONDARY_CAMERA_CAPTURE_KEYS = "secondary_camera_capture_keys";
-    static const char* CONTRAST_ITEMS                = "contrast_items";
+    static const char* FREE_MEMORY_LEVELS            = "free_memory_levels";
     static const char* STILL_MAX_ZOOM_LIMITS         = "still_max_zoom_limits";
     static const char* VIDEO_MAX_ZOOM_LIMITS         = "video_max_zoom_limits";
 }
--- a/camerauis/cameraxui/cxengine/inc/api/cxequalitydetails.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/inc/api/cxequalitydetails.h	Thu May 13 21:30:19 2010 +0300
@@ -25,6 +25,8 @@
 */
 struct CxeImageDetails
 {
+    static const int UNKNOWN = -1;
+
     int mWidth;
     int mHeight;
     int mEstimatedSize; // size in bytes
@@ -42,6 +44,8 @@
 */
 struct CxeVideoDetails
 {
+    static const int UNKNOWN = -1;
+
     int mWidth;
     int mHeight;
     int mRemainingTime;
--- a/camerauis/cameraxui/cxengine/inc/api/cxestillcapturecontrol.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/inc/api/cxestillcapturecontrol.h	Thu May 13 21:30:19 2010 +0300
@@ -158,6 +158,11 @@
     void snapshotReady(CxeError::Id error, const QPixmap& snapshot, int id);
     void imageCaptured(CxeError::Id error, int id);
 
+    /**
+    * Amount of images that can be captured has changed.
+    */
+    void availableImagesChanged();
+
 protected:
     CxeStillCaptureControl() {} // protected empty contructor so that derived class construction works
 
--- a/camerauis/cameraxui/cxengine/inc/api/cxevideocapturecontrol.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/inc/api/cxevideocapturecontrol.h	Thu May 13 21:30:19 2010 +0300
@@ -93,6 +93,7 @@
     void videoComposed(CxeError::Id error, const QString& filename);
     void stateChanged(CxeVideoCaptureControl::State newState, CxeError::Id error);
     void snapshotReady(CxeError::Id error, const QPixmap& snapshot, const QString& filename);
+    void remainingTimeChanged();
 
 protected:
     CxeVideoCaptureControl() {}
--- a/camerauis/cameraxui/cxengine/inc/cxeautofocuscontrolsymbian.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/inc/cxeautofocuscontrolsymbian.h	Thu May 13 21:30:19 2010 +0300
@@ -44,7 +44,7 @@
     CxeAutoFocusControlSymbian( CxeCameraDevice &cameraDevice );
     virtual ~CxeAutoFocusControlSymbian();
 
-    CxeError::Id  start();
+    CxeError::Id  start(bool soundEnabled = true);
     void cancel();
     void setMode( CxeAutoFocusControl::Mode newMode );
     CxeAutoFocusControl::Mode mode() const;
@@ -52,6 +52,8 @@
     CxeAutoFocusControl::State state() const;
     bool supported() const;
 
+    bool isSoundEnabled() const;
+
 protected: // from CxeStateMachine
     void handleStateChanged( int newStateId, CxeError::Id error );
 
@@ -91,6 +93,7 @@
     CxeAutoFocusControl::Mode mAfMode;
     CCamera::CCameraAdvancedSettings::TFocusRange mAFRange;
     bool mCancelled;
+    bool mSoundEnabled;
     };
 
 #endif // CXEAUTOFOCUSCONTROLSYMBIAN_H
--- a/camerauis/cameraxui/cxengine/inc/cxecenrepkeys.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/inc/cxecenrepkeys.h	Thu May 13 21:30:19 2010 +0300
@@ -34,9 +34,10 @@
 const unsigned long int  PrimaryCameraCaptureKeysCr     = 0x1;
 const unsigned long int  SecondaryCameraCaptureKeysCr   = 0x2;
 const unsigned long int  PrimaryCameraAutofocusKeysCr   = 0x3;
-const unsigned long int  ContrastItemsCr                = 0x4;
+const unsigned long int  FreeMemoryLevelsCr             = 0x4;
 const unsigned long int  StillMaxZoomLimitsCr           = 0x5;
 const unsigned long int  VideoMaxZoomLimitsCr           = 0x6;
 
 #endif // CXECENREPKEYS_H
 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxengine/inc/cxediskmonitor.h	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,51 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef CXEDISKMONITOR_H
+#define CXEDISKMONITOR_H
+
+#include <QObject>
+
+class CxeSettings;
+class CxeDiskMonitorPrivate;
+
+class CxeDiskMonitor : public QObject
+{
+    Q_OBJECT
+
+public:
+    explicit CxeDiskMonitor(CxeSettings &settings);
+    ~CxeDiskMonitor();
+
+signals:
+    void diskSpaceLow();
+    void diskSpaceChanged();
+
+public slots:
+    void setLowWarningLevel(qint64 bytes);
+    void start();
+    void stop();
+
+public:
+    bool isMonitoring() const;
+    qint64 free(bool cached = true) const;
+
+private:
+    CxeDiskMonitorPrivate *p;
+};
+
+#endif // CXEDISKMONITORPRIVATE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxengine/inc/cxediskmonitorprivate.h	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* 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 CXEDISKMONITORPRIVATE_H
+#define CXEDISKMONITORPRIVATE_H
+
+#include <QObject>
+#include <QTimer>
+#ifdef Q_OS_SYMBIAN
+#include <f32file.h>
+#endif // Q_OS_SYMBIAN
+
+class CxeSettings;
+
+class CxeDiskMonitorPrivate : public QObject
+{
+    Q_OBJECT
+
+    // Owner of this private implementation.
+    friend class CxeDiskMonitor;
+
+private:
+    explicit CxeDiskMonitorPrivate(CxeSettings &settings);
+    ~CxeDiskMonitorPrivate();
+
+signals:
+    void diskSpaceLow();
+    void diskSpaceChanged();
+
+private slots:
+    void checkSpace();
+
+private:
+    void setLowWarningLevel(qint64 bytes);
+    void start();
+    void stop();
+    bool isMonitoring() const;
+    qint64 free(bool cached = true) const;
+
+private:
+    CxeSettings &mSettings;
+    QTimer mTimer;
+#ifdef Q_OS_SYMBIAN
+    RFs& mFs;
+    int mCameraDrive;
+#endif // Q_OS_SYMBIAN
+    qint64 mTriggerLevelBytes;
+    qint64 mLatestFreeBytes;
+};
+
+
+#endif // CXEDISKMONITORPRIVATE_H
--- a/camerauis/cameraxui/cxengine/inc/cxeenginesymbian.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/inc/cxeenginesymbian.h	Thu May 13 21:30:19 2010 +0300
@@ -21,6 +21,7 @@
 #include "cxeengine.h"
 #include "cxefilenamegenerator.h"
 
+class CxeCameraDevice;
 class CxeCameraDeviceControl;
 class CxeViewfinderControl;
 class CxeStillCaptureControl;
@@ -36,7 +37,8 @@
 class CxeFilenameGenerator;
 class CxeQualityPresets;
 class CxeFileSaveThread;
-
+class CxeDiskMonitor;
+class CxeMemoryMonitor;
 
 
 class CxeEngineSymbian : public CxeEngine
@@ -46,8 +48,6 @@
     CxeEngineSymbian();
     virtual ~CxeEngineSymbian();
 
-    void construct();
-
     CxeCameraDeviceControl &cameraDeviceControl();
     CxeViewfinderControl &viewfinderControl();
     CxeStillCaptureControl &stillCaptureControl();
@@ -57,14 +57,19 @@
     CxeSettings &settings();
     CxeSensorEventHandler &sensorEventHandler();
     CxeFeatureManager &featureManager();
+    CxeMemoryMonitor &memoryMonitor();
     Cxe::CameraMode mode() const;
     void initMode(Cxe::CameraMode cameraMode);
     bool isEngineReady();
 
+signals:
+    void reserveStarted();
+
 protected:
     virtual void createControls();
 
 private slots:
+    void construct();
     void doInit();
 
 private:
@@ -72,9 +77,11 @@
     bool reserveNeeded();
     bool initNeeded();
     bool startViewfinderNeeded();
+    void reserve();
 
 protected:
     CxeCameraDeviceControl *mCameraDeviceControl;
+    CxeCameraDevice *mCameraDevice; // not own
     CxeViewfinderControl *mViewfinderControl;
     CxeStillCaptureControl *mStillCaptureControl;
     CxeVideoCaptureControl *mVideoCaptureControl;
@@ -88,8 +95,11 @@
     CxeSensorEventHandler* mSensorEventHandler;
     CxeQualityPresets *mQualityPresets;
     CxeFileSaveThread *mFileSaveThread;
+    CxeDiskMonitor *mDiskMonitor;
+    CxeMemoryMonitor *mMemoryMonitor;
 };
 
 
 #endif  // CXEENGINESYMBIAN_H
 
+
--- a/camerauis/cameraxui/cxengine/inc/cxefilenamegeneratorsymbian.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/inc/cxefilenamegeneratorsymbian.h	Thu May 13 21:30:19 2010 +0300
@@ -22,8 +22,8 @@
 #include "cxenamespace.h"
 #include "cxeerror.h"
 
+class RFs;
 class CxeSettings;
-class RFs;
 static const int KCamMonthFolderNameLength = 8;
 
 /**
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxengine/inc/cxememorymonitorprivate.h	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef CXEMEMORYMONITORPRIVATE_H
+#define CXEMEMORYMONITORPRIVATE_H
+
+#include <QObject>
+#include <QTimer>
+#include <QList>
+#ifdef Q_OS_SYMBIAN
+#include <oommonitorsession.h>
+#endif // Q_OS_SYMBIAN
+
+class CxeFeatureManager;
+
+class CxeMemoryMonitorPrivate : public QObject
+{
+    Q_OBJECT
+
+    // Owner of this private implementation.
+    friend class CxeMemoryMonitor;
+
+private:
+    explicit CxeMemoryMonitorPrivate(CxeFeatureManager &features);
+    ~CxeMemoryMonitorPrivate();
+
+private:
+    int free() const;
+    bool requestFreeMemory(int requiredFreeMemory);
+
+    void startMonitoring();
+    void stopMonitoring();
+
+private slots:
+    void checkMemory();
+
+private:
+    CxeFeatureManager &mFeatures;
+    QTimer mTimer;
+    QList<int> mLevels;
+#ifdef Q_OS_SYMBIAN
+    ROomMonitorSession mOomMonitor;
+#endif // Q_OS_SYMBIAN
+};
+
+#endif // CXEMEMORYMONITORPRIVATE_H
+
--- a/camerauis/cameraxui/cxengine/inc/cxesettingscontrolsymbian.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/inc/cxesettingscontrolsymbian.h	Thu May 13 21:30:19 2010 +0300
@@ -48,6 +48,7 @@
     void updateLightSensitivitySetting(QVariant newValue);
     void updateSharpnessSetting(QVariant newValue);
     void updateContrastSetting(QVariant newValue);
+    void updateBrightnessSetting(QVariant newValue);
     void updateExposureModeSetting(QVariant newValue);
     void updateExposureCompensationSetting(QVariant newValue);
 
--- a/camerauis/cameraxui/cxengine/inc/cxesettingsmodelimp.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/inc/cxesettingsmodelimp.h	Thu May 13 21:30:19 2010 +0300
@@ -64,7 +64,7 @@
 
     void loadSceneData(CxeScene &currentScene, CxeScene &sceneDefaultSettings);
     CxeError::Id sceneSettingValue(const QString &key, QVariant &value);
-    CxeError::Id setSceneSettingValue(const QString &key, int newValue);
+    CxeError::Id setSceneSettingValue(const QString &key, QVariant newValue);
 
     void supportedKeys(QList<QString> &runtimeKeys);
 
--- a/camerauis/cameraxui/cxengine/inc/cxestatemachinebase.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/inc/cxestatemachinebase.h	Thu May 13 21:30:19 2010 +0300
@@ -118,6 +118,9 @@
     //! Hash table of all states. stateId as key
     QHash<int, CxeState*> mStates;
 
+    //! All states ORed together
+    int mStateBitsUsed;
+
     //! Current state
     int mStateId;
 
--- a/camerauis/cameraxui/cxengine/inc/cxestillcapturecontrolsymbian.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/inc/cxestillcapturecontrolsymbian.h	Thu May 13 21:30:19 2010 +0300
@@ -21,7 +21,6 @@
 #include <ecam.h>
 #include <QPixmap>
 #include <QVariant>
-#include <driveinfo.h>
 
 #include "cxestillcapturecontrol.h"
 #include "cxeautofocuscontrol.h"
@@ -44,7 +43,7 @@
 class CxeAutoFocusControl;
 class CxeSettings;
 class CxeQualityPresets;
-
+class CxeDiskMonitor;
 
 
 /**
@@ -66,7 +65,8 @@
                                   CxeAutoFocusControl &autoFocusControl,
                                   CxeSettings &settings,
                                   CxeQualityPresets &qualityPresets,
-                                  CxeFileSaveThread &fileSaveThread);
+                                  CxeFileSaveThread &fileSaveThread,
+                                  CxeDiskMonitor &diskMonitor);
 
     virtual ~CxeStillCaptureControlSymbian();
 
@@ -111,6 +111,9 @@
     // settings call back
     void handleSettingValueChanged(const QString& settingId,QVariant newValue);
 
+    // Disk space change
+    void handleDiskSpaceChanged();
+
     // Autofocus events
     void handleAutofocusStateChanged(CxeAutoFocusControl::State newState, CxeError::Id error);
 
@@ -131,7 +134,7 @@
     void initializeStates();
     void prepare();
     void updateRemainingImagesCounter();
-    int calculateRemainingImages(int estimatedImagesize) ;
+    int calculateRemainingImages(int estimatedImagesize);
 
 private: // private data
 
@@ -145,6 +148,7 @@
     CxeSettings &mSettings;
     CxeQualityPresets &mQualityPresets;
     CxeFileSaveThread &mFileSaveThread;
+    CxeDiskMonitor &mDiskMonitor;
     CxeSoundPlayerSymbian *mCaptureSoundPlayer;
     CxeSoundPlayerSymbian *mAutoFocusSoundPlayer;
     CaptureMode mMode;
--- a/camerauis/cameraxui/cxengine/inc/cxesysutil.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/inc/cxesysutil.h	Thu May 13 21:30:19 2010 +0300
@@ -39,7 +39,7 @@
 
     static int getCameraDrive(RFs &fs);
 
-    static qint64 spaceAvailable(RFs &fs, CxeSettings &settings);
+    static qint64 spaceAvailable(RFs &fs, int index, CxeSettings &settings);
     };
 
 #endif // CXESYSUTIL_H
--- a/camerauis/cameraxui/cxengine/inc/cxevideocapturecontrolsymbian.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/inc/cxevideocapturecontrolsymbian.h	Thu May 13 21:30:19 2010 +0300
@@ -22,7 +22,6 @@
 #include <QString>
 #include <driveinfo.h>
 #include <videorecorder.h>
-#include <ecam/camerasnapshot.h>
 
 #include "cxesettings.h"
 #include "cxequalitypresets.h"
@@ -33,26 +32,6 @@
 #include "cxenamespace.h"
 
 
-// constants
-const TInt KOneSecond = 1000000;
-
-//CamCControllerCustomCommands.h.
-
-// Controller UId, can be used by the client to identify the controller, e.g. if the custom command can be used
-const TUid KCamCControllerImplementationUid = {0x101F8503};
-const int KMaintainAspectRatio = false;
-// TMMFEvent UIDs for Async stop
-const TUid KCamCControllerCCVideoRecordStopped = {0x2000E546};
-const TUid KCamCControllerCCVideoFileComposed = {0x2000E547};
-
-// Custom command for setting a new filename without closing & reopening the controller
-enum TCamCControllerCustomCommands
-    {
-    ECamCControllerCCNewFilename = 0,
-    ECamCControllerCCVideoStopAsync
-    };
-
-
 // forward declarations
 class CxeSettings;
 class CxeCameraDevice;
@@ -63,6 +42,7 @@
 class CxeSoundPlayerSymbian;
 class CxeCameraDeviceControl;
 class CxeVideoRecorderUtility;
+class CxeDiskMonitor;
 
 
 class CxeVideoCaptureControlSymbian : public CxeVideoCaptureControl,
@@ -73,12 +53,13 @@
 
 public:  // constructors
 
-    CxeVideoCaptureControlSymbian( CxeCameraDevice &cameraDevice,
-                                   CxeViewfinderControl &viewfinderControl,
-                                   CxeCameraDeviceControl &cameraDeviceControl,
-                                   CxeFilenameGenerator &nameGenerator,
-                                   CxeSettings &settings,
-                                   CxeQualityPresets &qualityPresets);
+    CxeVideoCaptureControlSymbian(CxeCameraDevice &cameraDevice,
+                                  CxeViewfinderControl &viewfinderControl,
+                                  CxeCameraDeviceControl &cameraDeviceControl,
+                                  CxeFilenameGenerator &nameGenerator,
+                                  CxeSettings &settings,
+                                  CxeQualityPresets &qualityPresets,
+                                  CxeDiskMonitor &diskMonitor);
 
     virtual ~CxeVideoCaptureControlSymbian();
 
@@ -127,6 +108,10 @@
     void handleCameraEvent(int eventUid, int error);
     // settings call back
     void handleSettingValueChanged(const QString& settingId,QVariant newValue);
+    // scene mode change
+    void handleSceneChanged(CxeScene& scene);
+    // Disk space change
+    void handleDiskSpaceChanged();
 
 private: // helper methods
     CxeError::Id findVideoController(const TDesC8& aMimeType, const TDesC&  aPreferredSupplier);
@@ -136,7 +121,7 @@
     int prepareVideoSnapshot();
     void initVideoRecorder();
     void open();
-	void prepare();
+    void prepare();
     TSize getSnapshotSize() const;
     virtual void createVideoRecorder();
     void calculateRemainingTime(CxeVideoDetails videoDetails, int &time);
@@ -159,6 +144,7 @@
     CxeFilenameGenerator &mFilenameGenerator;
     CxeSettings &mSettings;
     CxeQualityPresets &mQualityPresets;
+    CxeDiskMonitor &mDiskMonitor;
     //! Snapshot image.
     QPixmap mSnapshot;
     //! Soundplayers, own
--- a/camerauis/cameraxui/cxengine/src/cxeautofocuscontrolsymbian.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/src/cxeautofocuscontrolsymbian.cpp	Thu May 13 21:30:19 2010 +0300
@@ -52,6 +52,7 @@
 
     initializeStates();
 
+    OstTrace0(camerax_performance, CXEAUTOFOCUSCONTROLSYMBIAN_CREATE_MID1, "msg: e_CX_ENGINE_CONNECT_SIGNALS 1");
     // connect signals from cameraDevice, so we recieve events when camera reference changes
     QObject::connect( &cameraDevice,
                       SIGNAL(prepareForCameraDelete()),
@@ -64,6 +65,7 @@
     QObject::connect( &cameraDevice,
                       SIGNAL(prepareForRelease()),
                       this,SLOT(prepareForRelease()) );
+    OstTrace0(camerax_performance, CXEAUTOFOCUSCONTROLSYMBIAN_CREATE_MID2, "msg: e_CX_ENGINE_CONNECT_SIGNALS 0");
 
     initializeResources();
 
@@ -84,11 +86,14 @@
 
 /*
 * Start Autofocus
+* \param soundEnabled False if the auto focus sound don't need to be played
+* Default value for soundEnabled is true
 */
-CxeError::Id CxeAutoFocusControlSymbian::start()
+CxeError::Id CxeAutoFocusControlSymbian::start(bool soundEnabled)
 {
-    CX_DEBUG( ("CxeAutoFocusControlSymbian::start() <> state: %d", state() ) );
-
+    CX_DEBUG( ("CxeAutoFocusControlSymbian::start() <> state: %d, sound enabled: %d",
+               state(), soundEnabled ) );
+    mSoundEnabled = soundEnabled;
     int err = KErrNone;
 
     CX_ASSERT_ALWAYS(mAdvancedSettings);
@@ -104,7 +109,6 @@
     }
 
     CX_DEBUG( ("CxeAutoFocusControlSymbian::start() <= err : %d", err ) );
-
     return CxeErrorHandlingSymbian::map(err);
 }
 
@@ -199,7 +203,8 @@
 
     // We're only interested in autofocus events
     if ( eventUid == KUidECamEventCameraSettingsOptimalFocusUidValue ||
-         eventUid == KUidECamEventCameraSettingAutoFocusType2UidValue ) {
+         eventUid == KUidECamEventCameraSettingAutoFocusType2UidValue ||
+         eventUid == KUidECamEventCameraSettingFocusRangeUidValue) {
          // Autofocus Event handle it.
          handleAfEvent(eventUid, error);
     }
@@ -410,6 +415,13 @@
             } else {
                 setState(CxeAutoFocusControl::Failed, error);
             }
+         } else if (eventUid == KUidECamEventCameraSettingFocusRangeUidValue) {
+             // check for error, we don't need this event for anything else
+             if (error != KErrNone) {
+                 CX_DEBUG(("CxeAutofocusControlSymbian::handleAfEvent <> "
+                         "KUidECamEventCameraSettingFocusRangeUidValue: autofocus failed %d", error));
+                 setState(CxeAutoFocusControl::Failed, error);
+             }
          }
          break;
         }
@@ -433,6 +445,16 @@
         break;
     } // end switch
 
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+  * Public method for checking if auto focus sound is enabled
+  * \return true if enabled
+  */
+bool CxeAutoFocusControlSymbian::isSoundEnabled() const
+{
+    return mSoundEnabled;
 }
 
 // end of file
--- a/camerauis/cameraxui/cxengine/src/cxecameradevice.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/src/cxecameradevice.cpp	Thu May 13 21:30:19 2010 +0300
@@ -20,8 +20,14 @@
 #include "cxecameradevice.h"
 #include "cxeerrormappingsymbian.h"
 #include "cxutils.h"
+#include "cxedummycamera.h"
 
-#include "cxedummycamera.h"
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cxecameradeviceTraces.h"
+#endif
+
+
 
 CxeCameraDevice::CxeCameraDevice() :
     mCamera(NULL),
@@ -184,6 +190,8 @@
 CxeError::Id CxeCameraDevice::newCamera( Cxe::CameraIndex cameraIndex, MCameraObserver2 *observer )
 {
     CX_DEBUG_ENTER_FUNCTION();
+    OstTrace0(camerax_performance, CXECAMERADEVICE_NEWCAMERA_IN, "msg: e_CX_CAMERADEVICE_CREATE_CCAMERA 1");
+
     CX_DEBUG(("Cxe: using camera index %d", cameraIndex));
 
     CX_DEBUG_ASSERT(cameraIndex == Cxe::PrimaryCameraIndex || cameraIndex == Cxe::SecondaryCameraIndex);
@@ -202,6 +210,7 @@
         setCamera(camera);
     }
 
+    OstTrace0(camerax_performance, CXECAMERADEVICE_NEWCAMERA_OUT, "msg: e_CX_CAMERADEVICE_CREATE_CCAMERA 0");
     CX_DEBUG_EXIT_FUNCTION();
     return CxeErrorHandlingSymbian::map(err);
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxengine/src/cxediskmonitor.cpp	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,93 @@
+/*
+* 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 "cxutils.h"
+#include "cxediskmonitor.h"
+#include "cxediskmonitorprivate.h"
+
+/*!
+* Constructor.
+*/
+CxeDiskMonitor::CxeDiskMonitor(CxeSettings &settings)
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    p = new CxeDiskMonitorPrivate(settings);
+    CX_ASSERT_ALWAYS(p);
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Destructor.
+*/
+CxeDiskMonitor::~CxeDiskMonitor()
+{
+    delete p;
+}
+
+/*!
+* Set the warning level of free disk space.
+* When free disk space falls below this limit, diskSpaceLow() signal is emitted.
+* @param bytes Limit in bytes.
+*/
+void CxeDiskMonitor::setLowWarningLevel(qint64 bytes)
+{
+    if (p) {
+        p->setLowWarningLevel(bytes);
+    }
+}
+
+/*!
+* Slot to start monitoring disk space.
+*/
+void CxeDiskMonitor::start()
+{
+    if (p) {
+        connect(p, SIGNAL(diskSpaceLow()), this, SIGNAL(diskSpaceLow()), Qt::UniqueConnection);
+        connect(p, SIGNAL(diskSpaceChanged()), this, SIGNAL(diskSpaceChanged()), Qt::UniqueConnection);
+        p->start();
+    }
+}
+
+/*!
+* Slot to stop monitoring disk space.
+*/
+void CxeDiskMonitor::stop()
+{
+    if (p) {
+        p->stop();
+        disconnect(p, SIGNAL(diskSpaceChanged()), this, SIGNAL(diskSpaceChanged()));
+        disconnect(p, SIGNAL(diskSpaceLow()), this, SIGNAL(diskSpaceLow()));
+    }
+}
+
+/*!
+* Is monitoring ongoing at the moment.
+*/
+bool CxeDiskMonitor::isMonitoring() const
+{
+    return p ? p->isMonitoring() : false;
+}
+
+/*!
+* Get free disk space for Camera use in bytes.
+*/
+qint64 CxeDiskMonitor::free(bool cached) const
+{
+    return p ? p->free(cached) : 0;
+}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxengine/src/cxediskmonitorprivate.cpp	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,155 @@
+/*
+* 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 <QObject> // Compiler flags, keep first
+#ifdef Q_OS_SYMBIAN
+#include <coemain.h>
+#endif // Q_OS_SYMBIAN
+#include "cxutils.h"
+#include "cxesysutil.h"
+#include "cxesettings.h"
+#include "cxediskmonitor.h"
+#include "cxediskmonitorprivate.h"
+
+
+namespace
+{
+    const int MONITORING_INTERVAL = 2*1000; // in milliseconds
+    const int UNKNOWN = -1;
+}
+
+
+/*!
+* Constructor.
+*/
+CxeDiskMonitorPrivate::CxeDiskMonitorPrivate(CxeSettings &settings)
+    : mSettings(settings),
+      mTimer(),
+#ifdef Q_OS_SYMBIAN
+      mFs(CCoeEnv::Static()->FsSession()),
+      mCameraDrive(CxeSysUtil::getCameraDrive(mFs)),
+#endif // Q_OS_SYMBIAN
+      mTriggerLevelBytes(UNKNOWN),
+      mLatestFreeBytes(UNKNOWN)
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Destructor.
+*/
+CxeDiskMonitorPrivate::~CxeDiskMonitorPrivate()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    stop();
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Slot for checking if the available disk space is below warning trigger level.
+*/
+void CxeDiskMonitorPrivate::checkSpace()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+
+    qint64 previousFree(mLatestFreeBytes);
+
+    // Get the current free space.
+    mLatestFreeBytes = free(false);
+
+    // TESTING >>>
+    /*
+    static qint64 TEST = 20*1000*1000;
+    TEST /= 2;
+    mLatestFreeBytes = TEST;
+    */
+    // <<< TESTING
+
+    // If space has changed during monitoring, signal it now.
+    if (previousFree != mLatestFreeBytes && isMonitoring()) {
+        CX_DEBUG(("CxeDiskMonitorPrivate - Disk space changed %d -> %d bytes", previousFree, mLatestFreeBytes));
+        emit diskSpaceChanged();
+    }
+
+    // Only emit warning if trigger level is set to some positive value.
+    // Otherwise updating cached free space value is enough.
+    if (mTriggerLevelBytes != UNKNOWN && mLatestFreeBytes < mTriggerLevelBytes) {
+        CX_DEBUG(("[WARNING] CxeDiskMonitorPrivate - Disk space low!"));
+        emit diskSpaceLow();
+    }
+
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Set the warning level of free disk space.
+* When free disk space falls below this limit, diskSpaceLow() signal is emitted.
+* @param bytes Limit in bytes.
+*/
+void CxeDiskMonitorPrivate::setLowWarningLevel(qint64 bytes)
+{
+    mTriggerLevelBytes = bytes;
+}
+
+/*!
+* Start monitoring disk space.
+*/
+void CxeDiskMonitorPrivate::start()
+{
+    if (!mTimer.isActive()) {
+        connect(&mTimer, SIGNAL(timeout()), this, SLOT(checkSpace()), Qt::UniqueConnection);
+        mTimer.start(MONITORING_INTERVAL);
+    }
+}
+
+/*!
+* Stop monitoring disk space.
+*/
+void CxeDiskMonitorPrivate::stop()
+{
+    mTimer.stop();
+    mLatestFreeBytes = UNKNOWN;
+}
+
+/*!
+* Is monitoring ongoing at the moment.
+*/
+bool CxeDiskMonitorPrivate::isMonitoring() const
+{
+    return mTimer.isActive();
+}
+
+/*!
+* Get free disk space for Camera use in bytes.
+* @param cached Can cached value be used.
+* If true (default value), value of last constant-interval-check is used (if it exists).
+* If false (or there's no cached value), forced reading of free space is done now.
+* This may cause significant delay compared to returning cached value.
+*/
+qint64 CxeDiskMonitorPrivate::free(bool cached) const
+{
+    qint64 value(0);
+    if (cached && mLatestFreeBytes != UNKNOWN) {
+        value = mLatestFreeBytes;
+    } else {
+        value = CxeSysUtil::spaceAvailable(mFs, mCameraDrive, mSettings);
+    }
+    return value;
+}
+
+// end of file
--- a/camerauis/cameraxui/cxengine/src/cxeengine.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/src/cxeengine.cpp	Thu May 13 21:30:19 2010 +0300
@@ -26,7 +26,6 @@
     CX_DEBUG_ENTER_FUNCTION();
 
     CxeEngineSymbian *res = new CxeEngineSymbian();
-    res->construct();
 
     CX_DEBUG_EXIT_FUNCTION();
     return res;
--- a/camerauis/cameraxui/cxengine/src/cxeenginesymbian.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/src/cxeenginesymbian.cpp	Thu May 13 21:30:19 2010 +0300
@@ -14,6 +14,9 @@
 * Description:
 *
 */
+
+#include <xqserviceutil.h>
+
 #include "cxeenginesymbian.h"
 #include "cxecameradevicecontrolsymbian.h"
 #include "cxestillcapturecontrolsymbian.h"
@@ -33,17 +36,20 @@
 #include "cxesensoreventhandlersymbian.h"
 #include "cxefilesavethread.h"
 #include "cxecameradevice.h"
+#include "cxememorymonitor.h"
+#include "cxediskmonitor.h"
 
 #include "OstTraceDefinitions.h"
 #ifdef OST_TRACE_COMPILER_IN_USE
 #include "cxeenginesymbianTraces.h"
 #endif
-#include <xqserviceutil.h>
+
 
 //  Member Functions
 
 CxeEngineSymbian::CxeEngineSymbian()
     : mCameraDeviceControl(NULL),
+      mCameraDevice(NULL),
       mViewfinderControl(NULL),
       mStillCaptureControl(NULL),
       mVideoCaptureControl(NULL),
@@ -58,7 +64,25 @@
       mQualityPresets(NULL),
       mFileSaveThread(NULL)
 {
-    CX_DEBUG_IN_FUNCTION();
+    CX_DEBUG_ENTER_FUNCTION();
+
+    // Do secondary construction during reserve call.
+    //! @todo temporarily commented as part of a hack to change the startup sequence
+    // to avoid GOOM issues
+   // connect(this, SIGNAL(reserveStarted()), this, SLOT(construct()));
+
+    CxeCameraDeviceControlSymbian *deviceControl = new CxeCameraDeviceControlSymbian();
+    mCameraDeviceControl = deviceControl;
+    mCameraDevice = deviceControl->cameraDevice();
+    CX_ASSERT_ALWAYS(mCameraDeviceControl);
+    CX_ASSERT_ALWAYS(mCameraDevice);
+
+    mCameraDeviceControl->init();
+    //! @todo calling construct here is a hack to change the startup sequence
+    // to avoid GOOM issues
+    construct();
+    
+    CX_DEBUG_EXIT_FUNCTION();
 }
 
 
@@ -77,69 +101,77 @@
 
 
 /*!
-    Create all control classes
+    Create all control classes.
+    Note: Throws an error, if free memory request by CxeMemoryMonitor constructor fails!
 */
 void CxeEngineSymbian::createControls()
 {
     CX_DEBUG_ENTER_FUNCTION();
 
-    if (!mVideoCaptureControl) {
-        CxeCameraDeviceControlSymbian *deviceControl =
-                new CxeCameraDeviceControlSymbian();
+    // Check we do this only once.
+    if (!mSettingsModel) {
+        OstTrace0(camerax_performance, CXEENGINESYMBIAN_CREATECONTROLS_IN, "e_CX_ENGINE_CREATE_CONTROLS 1");
 
-        mCameraDeviceControl = deviceControl;
-        CxeCameraDevice *cameraDevice = deviceControl->cameraDevice();
-
-        CxeSettingsCenRepStore *settingsStore;
-
+        CxeSettingsCenRepStore *settingsStore(NULL);
         if (XQServiceUtil::isService()) {
             settingsStore = new CxeSettingsLocalStore();
         } else {
             settingsStore = new CxeSettingsCenRepStore();
         }
-
         //ownership of settings store transferred to the settings model.
-        mSettingsModel = new CxeSettingsModelImp(
-                settingsStore);
-
+        mSettingsModel = new CxeSettingsModelImp(settingsStore);
         // assert if settings model fails to intialize
         CX_DEBUG_ASSERT(mSettingsModel);
+
         mSettings = new CxeSettingsImp(*mSettingsModel);
-
+        
+        //! @todo a temporary hack to change the startup sequence to avoid GOOM problems
+        static_cast<CxeSettingsImp*>(mSettings)->loadSettings(mode());
+        
+        
+        // Connect P&S key updates to settings signal.
         connect(settingsStore, SIGNAL(settingValueChanged(long int, unsigned long int, QVariant)),
                 mSettings, SIGNAL(settingValueChanged(long int, unsigned long int, QVariant)));
 
+        mFeatureManager = new CxeFeatureManagerImp(*mSettingsModel);
+
+        // Memory monitor needed as early as possible to request free memory.
+        // Note: Throws error if enough memory cannot be freed!
+        mMemoryMonitor = new CxeMemoryMonitor(*mFeatureManager);
+
+        mDiskMonitor = new CxeDiskMonitor(*mSettings);
+
         mQualityPresets = new CxeQualityPresetsSymbian(*mSettings);
         CX_DEBUG_ASSERT(mQualityPresets);
 
-        mFeatureManager = new CxeFeatureManagerImp(*mSettingsModel);
-
         // sensor event handler initialization
         mSensorEventHandler = new CxeSensorEventHandlerSymbian();
 
         mFilenameGenerator = new CxeFilenameGeneratorSymbian(*mSettings,
             mode());
 
-        mViewfinderControl = new CxeViewfinderControlSymbian(*cameraDevice,
-            *deviceControl);
+        mViewfinderControl = new CxeViewfinderControlSymbian(*mCameraDevice,
+            *mCameraDeviceControl);
 
-        mAutoFocusControl = new CxeAutoFocusControlSymbian(*cameraDevice);
+        mAutoFocusControl = new CxeAutoFocusControlSymbian(*mCameraDevice);
 
         mFileSaveThread = CxeFileSaveThreadFactory::createFileSaveThread();
 
         mStillCaptureControl = new CxeStillCaptureControlSymbian(
-            *cameraDevice, *mViewfinderControl, *deviceControl,
+            *mCameraDevice, *mViewfinderControl, *mCameraDeviceControl,
             *mFilenameGenerator, *mSensorEventHandler, *mAutoFocusControl,
-            *mSettings, *mQualityPresets, *mFileSaveThread);
+            *mSettings, *mQualityPresets, *mFileSaveThread, *mDiskMonitor);
 
-        mZoomControl = new CxeZoomControlSymbian( *cameraDevice,
-            *deviceControl, *mSettings, *mFeatureManager);
+        mZoomControl = new CxeZoomControlSymbian( *mCameraDevice,
+            *mCameraDeviceControl, *mSettings, *mFeatureManager);
 
         mVideoCaptureControl = new CxeVideoCaptureControlSymbian(
-            *cameraDevice, *mViewfinderControl, *deviceControl,
-            *mFilenameGenerator, *mSettings, *mQualityPresets);
+            *mCameraDevice, *mViewfinderControl, *mCameraDeviceControl,
+            *mFilenameGenerator, *mSettings, *mQualityPresets, *mDiskMonitor);
 
-        mSettingsControl = new CxeSettingsControlSymbian(*cameraDevice, *mSettings);
+        mSettingsControl = new CxeSettingsControlSymbian(*mCameraDevice, *mSettings);
+
+        OstTrace0(camerax_performance, CXEENGINESYMBIAN_CREATECONTROLS_OUT, "e_CX_ENGINE_CREATE_CONTROLS 0");
     }
 
     CX_DEBUG_EXIT_FUNCTION();
@@ -151,6 +183,7 @@
 void CxeEngineSymbian::connectSignals()
 {
     CX_DEBUG_ENTER_FUNCTION();
+    OstTrace0(camerax_performance, CXEENGINESYMBIAN_CONNECTSIGNALS_IN, "e_CX_ENGINE_CONNECT_SIGNALS 1");
 
     // enabling scene setting change callbacks to Autofocus control
     connect(mSettings,
@@ -219,11 +252,7 @@
             mFileSaveThread,
             SLOT(handleSnapshotReady(CxeError::Id, const QPixmap&, const QString&)));
 
-
-
-    // init camera device control. We init the camera device control
-    // when all necessary engine classes are constructed.
-    mCameraDeviceControl->init();
+    OstTrace0(camerax_performance, CXEENGINESYMBIAN_CONNECTSIGNALS_OUT, "e_CX_ENGINE_CONNECT_SIGNALS 0");
 
     CX_DEBUG_EXIT_FUNCTION();
 }
@@ -239,6 +268,8 @@
     delete mVideoCaptureControl;
     delete mViewfinderControl;
     delete mFilenameGenerator;
+    delete mDiskMonitor;
+    delete mMemoryMonitor;
     delete mFeatureManager;
     delete mSettings;
     delete mSettingsModel;
@@ -292,11 +323,19 @@
 }
 
 
-CxeFeatureManager& CxeEngineSymbian::featureManager()
+CxeFeatureManager &CxeEngineSymbian::featureManager()
 {
     return *mFeatureManager;
 }
 
+/*!
+* Get memory monitor utility handle.
+*/
+CxeMemoryMonitor &CxeEngineSymbian::memoryMonitor()
+{
+    return *mMemoryMonitor;
+}
+
 /*
 * Returns true, if the engine is ready or else false.
 */
@@ -325,7 +364,7 @@
 void CxeEngineSymbian::doInit()
 {
     CX_DEBUG_ENTER_FUNCTION();
-    OstTrace0(camerax_performance, CXEENGINESYMBIAN_DOINIT, "e_CX_ENGINE_DO_INIT 1");
+    OstTrace0(camerax_performance, CXEENGINESYMBIAN_DOINIT_IN, "e_CX_ENGINE_DO_INIT 1");
 
     mFilenameGenerator->init(mode());
     // load settings whenever we change mode or start camera or switch camera
@@ -343,7 +382,7 @@
         mVideoCaptureControl->init();
     }
 
-    OstTrace0(camerax_performance, DUP1_CXEENGINESYMBIAN_DOINIT, "e_CX_ENGINE_DO_INIT 0");
+    OstTrace0(camerax_performance, CXEENGINESYMBIAN_DOINIT_OUT, "e_CX_ENGINE_DO_INIT 0");
 
     CX_DEBUG_EXIT_FUNCTION();
 }
@@ -429,7 +468,7 @@
             // Camera needs to be reserved. Initialization will continue
             // when we get the deviceReady() signal.
             CX_DEBUG(("initMode() - calling reserve()"));
-            mCameraDeviceControl->reserve();
+            reserve();
         } else if (initNeeded()) {
             // Camera is reserved and ready, but we need to prepare still image control or
             // video capture control
@@ -455,7 +494,7 @@
 
         if (reserveNeeded()) {
             CX_DEBUG(("initMode() - calling reserve()"));
-            mCameraDeviceControl->reserve();
+            reserve();
         } else if (mCameraDeviceControl->state() == CxeCameraDeviceControl::Ready) {
             CX_DEBUG(("initMode() - calling doInit()"));
             // Camera device is ready... we only need to prepare video or still
@@ -472,4 +511,12 @@
     CX_DEBUG_EXIT_FUNCTION();
 }
 
+void CxeEngineSymbian::reserve()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    mCameraDeviceControl->reserve();
+    emit reserveStarted();
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
 // End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxengine/src/cxememorymonitor.cpp	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,72 @@
+/*
+* 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 "cxememorymonitor.h"
+#include "cxememorymonitorprivate.h"
+
+/*!
+* Constructor
+*/
+CxeMemoryMonitor::CxeMemoryMonitor(CxeFeatureManager &features)
+{
+    p = new CxeMemoryMonitorPrivate(features);
+}
+
+/*!
+* Destructor
+*/
+CxeMemoryMonitor::~CxeMemoryMonitor()
+{
+    delete p;
+}
+
+/*!
+* Get the amount of free memory (RAM).
+* @return Free RAM in bytes.
+*/
+int CxeMemoryMonitor::free() const
+{
+    return p->free();
+}
+
+/*!
+* Request to free memory (RAM) to achieve asked level.
+* @param required Required free memory after this call.
+* @return Was it possible to achieve the required level of free memory.
+*/
+bool CxeMemoryMonitor::requestFreeMemory(int required)
+{
+    return p->requestFreeMemory(required);
+}
+
+/*!
+* Slot to start monitoring free memory.
+*/
+void CxeMemoryMonitor::startMonitoring()
+{
+    p->startMonitoring();
+}
+
+/*!
+* Slot to stop monitoring free memory.
+*/
+void CxeMemoryMonitor::stopMonitoring()
+{
+    p->stopMonitoring();
+}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxengine/src/cxememorymonitorprivate.cpp	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,147 @@
+/*
+* 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 <hal.h>
+
+#include "cxutils.h"
+#include "cxenamespace.h"
+#include "cxefeaturemanager.h"
+#include "cxememorymonitorprivate.h"
+
+namespace
+{
+    const int FREEING_RETRIES = 2;
+    const int MONITORING_INTERVAL = 10*1000; // in milliseconds
+}
+
+/*!
+* Constructor
+*/
+CxeMemoryMonitorPrivate::CxeMemoryMonitorPrivate(CxeFeatureManager &features)
+    : mFeatures(features)
+{
+    CX_DEBUG_ENTER_FUNCTION();
+
+    mFeatures.configuredValues(CxeRuntimeKeys::FREE_MEMORY_LEVELS, mLevels);
+
+    CX_DEBUG(("CxeMemoryMonitorPrivate - trigger level: %d bytes", mLevels.value(Cxe::FreeMemoryTrigger)));
+    CX_DEBUG(("CxeMemoryMonitorPrivate - target level:  %d bytes", mLevels.value(Cxe::FreeMemoryTarget)));
+
+#ifdef Q_OS_SYMBIAN
+    // Request free memory as defined in Feature Manager.
+    // If we cannot have enough free memory, throw error.
+    bool ok = requestFreeMemory(mLevels.value(Cxe::FreeMemoryTarget));
+    qt_symbian_throwIfError(ok ? KErrNone : KErrNoMemory);
+#endif // Q_OS_SYMBIAN
+
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Destructor
+*/
+CxeMemoryMonitorPrivate::~CxeMemoryMonitorPrivate()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    stopMonitoring();
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+
+/*!
+* Get the amount of free memory (RAM).
+* @return Free RAM in bytes.
+*/
+int CxeMemoryMonitorPrivate::free() const
+{
+#ifdef Q_OS_SYMBIAN
+    int ram(0);
+    HAL::Get(HALData::EMemoryRAMFree, ram);
+    return ram;
+#else
+    //!@todo: real implementation for desktop etc?
+    return 1024*1024*1024;
+#endif // Q_OS_SYMBIAN
+}
+
+
+/*!
+* Request to free memory (RAM) to achieve asked level.
+* @param required Required free memory after this call.
+* @return Was it possible to achieve the required level of free memory.
+*/
+bool CxeMemoryMonitorPrivate::requestFreeMemory(int required)
+{
+    CX_DEBUG_ENTER_FUNCTION();
+
+    if (free() < required) {
+#ifdef Q_OS_SYMBIAN
+    qt_symbian_throwIfError(mOomMonitor.Connect());
+
+    int i(0);
+    int status(KErrGeneral);
+    do {
+        status = mOomMonitor.RequestFreeMemory(required);
+    } while (status != KErrNone && ++i < FREEING_RETRIES);
+
+    mOomMonitor.Close();
+#endif // Q_OS_SYMBIAN
+    }
+
+    // If we have the free RAM we were asked for, all good.
+    bool ok = free() >= required;
+
+    CX_DEBUG_EXIT_FUNCTION();
+    return ok;
+}
+
+/*!
+* Start monitoring free memory.
+*/
+void CxeMemoryMonitorPrivate::startMonitoring()
+{
+    if (!mTimer.isActive()) {
+        connect(&mTimer, SIGNAL(timeout()), this, SLOT(checkMemory()), Qt::UniqueConnection);
+        mTimer.start(MONITORING_INTERVAL);
+    }
+}
+
+/*!
+* Stop monitoring free memory.
+*/
+void CxeMemoryMonitorPrivate::stopMonitoring()
+{
+    mTimer.stop();
+}
+
+/*!
+* Check free memory. Try to release memory if below trigger level.
+*/
+void CxeMemoryMonitorPrivate::checkMemory()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+
+    if(free() < mLevels.value(Cxe::FreeMemoryTrigger)) {
+        // Memory too low, request more free memory.
+        CX_DEBUG(("[WARNING] CxeMemoryMonitorPrivate - memory low, requesting more.."));
+        requestFreeMemory(mLevels.value(Cxe::FreeMemoryTarget));
+    }
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+
+// end of file
--- a/camerauis/cameraxui/cxengine/src/cxequalitypresetssymbian.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/src/cxequalitypresetssymbian.cpp	Thu May 13 21:30:19 2010 +0300
@@ -18,7 +18,7 @@
 */
 
 #include <e32std.h> // For Symbian types used in mmsenginedomaincrkeys.h
-#include <mmsenginedomaincrkeys.h>
+#include <MmsEngineDomainCRKeys.h>
 
 #include "cxutils.h"
 #include "cxenamespace.h"
@@ -26,6 +26,10 @@
 #include "cxequalitydetails.h"
 #include "cxequalitypresetssymbian.h"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cxequalitypresetssymbianTraces.h"
+#endif
 
 // constants
 namespace
@@ -83,6 +87,7 @@
 QList<CxeImageDetails> CxeQualityPresetsSymbian::imageQualityPresets(Cxe::CameraIndex cameraId)
 {
     CX_DEBUG_ENTER_FUNCTION();
+    OstTrace0(camerax_performance, CXEQUALITYPRESETSSYMBIAN_GETIMAGEPRESETS_IN, "msg: e_CX_QUALITYPRESETS_GETIMAGEPRESETS 1");
 
     QList<CxeImageDetails> presetList;
 
@@ -127,6 +132,7 @@
     delete levels;
     levels = NULL;
 
+    OstTrace0(camerax_performance, CXEQUALITYPRESETSSYMBIAN_GETIMAGEPRESETS_OUT, "msg: e_CX_QUALITYPRESETS_GETIMAGEPRESETS 0");
     CX_DEBUG_EXIT_FUNCTION();
     return presetList;
 }
@@ -142,6 +148,7 @@
 QList<CxeVideoDetails> CxeQualityPresetsSymbian::videoQualityPresets(Cxe::CameraIndex cameraId)
 {
     CX_DEBUG_ENTER_FUNCTION();
+    OstTrace0(camerax_performance, CXEQUALITYPRESETSSYMBIAN_GETVIDEOPRESETS_IN, "msg: e_CX_QUALITYPRESETS_GETVIDEOPRESETS 1");
 
     QList<CxeVideoDetails> presetList;
 
@@ -192,6 +199,7 @@
     mIcm->GetCamcorderMMFPluginSettings(mmfPluginSettings);
     mCMRAvgVideoBitRateScaler = mmfPluginSettings.iCMRAvgVideoBitRateScaler;
 
+    OstTrace0(camerax_performance, CXEQUALITYPRESETSSYMBIAN_GETVIDEOPRESETS_OUT, "msg: e_CX_QUALITYPRESETS_GETVIDEOPRESETS 0");
     CX_DEBUG_EXIT_FUNCTION();
     return presetList;
 }
@@ -209,10 +217,11 @@
     // set setting values from quality set
     newPreset.mWidth = set.iImageWidth;
     newPreset.mHeight = set.iImageHeight;
-    newPreset.mImageFileExtension = toString(set.iImageFileExtension);
     newPreset.mEstimatedSize = set.iEstimatedSize;
     newPreset.mMpxCount = calculateMegaPixelCount(set.iImageWidth,
                                                   set.iImageHeight);
+    newPreset.mPossibleImages = CxeImageDetails::UNKNOWN;
+    newPreset.mImageFileExtension = toString(set.iImageFileExtension);
     newPreset.mAspectRatio = calculateAspectRatio(set.iImageWidth,
                                                   set.iImageHeight);
 
@@ -231,6 +240,8 @@
     newPreset.mWidth = set.iVideoWidth;
     newPreset.mHeight = set.iVideoHeight;
 
+    newPreset.mRemainingTime = CxeVideoDetails::UNKNOWN;
+
     // Check if this is a sharing (mms) quality, and set size limit accordingly.
     if (set.iCamcorderVisible < MMS_QUALITY_CAMCORDERVISIBLE_LIMIT) {
         QVariant size;
--- a/camerauis/cameraxui/cxengine/src/cxesettingscenrepstore.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/src/cxesettingscenrepstore.cpp	Thu May 13 21:30:19 2010 +0300
@@ -331,8 +331,8 @@
                   XQSettingsManager::TypeString,
                   true);
 
-    addKeyMapping(CxeRuntimeKeys::CONTRAST_ITEMS,
-                  ContrastItemsCr,
+    addKeyMapping(CxeRuntimeKeys::FREE_MEMORY_LEVELS,
+                  FreeMemoryLevelsCr,
                   XQSettingsManager::TypeString,
                   true);
 
--- a/camerauis/cameraxui/cxengine/src/cxesettingscontrolsymbian.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/src/cxesettingscontrolsymbian.cpp	Thu May 13 21:30:19 2010 +0300
@@ -73,6 +73,8 @@
         updateSharpnessSetting(newValue);
     } else if (settingId == CxeSettingIds::CONTRAST) {
         updateContrastSetting(newValue);
+    } else if (settingId == CxeSettingIds::BRIGHTNESS) {
+        updateBrightnessSetting(newValue);
     } else if (settingId == CxeSettingIds::EXPOSURE_MODE) {
         updateExposureModeSetting(newValue);
     } else if (settingId == CxeSettingIds::EV_COMPENSATION_VALUE) {
@@ -189,9 +191,9 @@
 
     CX_ASSERT_ALWAYS(mCameraDevice.imageProcessor());
 
-    // Scale UI values of -10..10 to ECAM range -100..100.
+    // Scale UI values of -2..2 to ECAM range -100..100.
     int currentSharpness = mCameraDevice.imageProcessor()->TransformationValue(KUidECamEventImageProcessingAdjustSharpness);
-    int newSharpness     = newValue.toInt()*10;
+    int newSharpness     = newValue.toReal()*50;
 
     CX_DEBUG(("Current sharpness [uid:0x%08x] value is [%d]", KUidECamEventImageProcessingAdjustSharpness, currentSharpness));
     CX_DEBUG(("Setting sharpness [uid:0x%08x] to value [%d]", KUidECamEventImageProcessingAdjustSharpness, newSharpness));
@@ -215,9 +217,9 @@
     CX_DEBUG_ENTER_FUNCTION();
     CX_ASSERT_ALWAYS(mCameraDevice.imageProcessor());
 
-    // Scale UI values of -10..10 to ECAM range -100..100.
+    // Scale UI values of -2..2 to ECAM range -100..100.
     int currentContrast = mCameraDevice.imageProcessor()->TransformationValue(KUidECamEventImageProcessingAdjustContrast);
-    int newContrast     = newValue.toInt()*10;
+    int newContrast     = newValue.toReal()*50;
 
     CX_DEBUG(("Current contrast [uid:0x%08x] value is [%d]", KUidECamEventImageProcessingAdjustContrast, currentContrast));
     CX_DEBUG(("Setting contrast [uid:0x%08x] to value [%d]", KUidECamEventImageProcessingAdjustContrast, newContrast));
@@ -233,6 +235,29 @@
 /*!
 *
 */
+void CxeSettingsControlSymbian::updateBrightnessSetting(QVariant newValue)
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    CX_ASSERT_ALWAYS(mCameraDevice.imageProcessor());
+
+    // Scale UI values of -10..10 to ECAM range -100..100.
+    int currentBrightness = mCameraDevice.imageProcessor()->TransformationValue(KUidECamEventImageProcessingAdjustBrightness);
+    int newBrightness     = newValue.toInt()*10;
+
+    CX_DEBUG(("Current brightness [uid:0x%08x] value is [%d]", KUidECamEventImageProcessingAdjustBrightness, currentBrightness));
+    CX_DEBUG(("Setting brightness [uid:0x%08x] to value [%d]", KUidECamEventImageProcessingAdjustBrightness, newBrightness));
+    if (newBrightness != currentBrightness) {
+        mCameraDevice.imageProcessor()->SetTransformationValue(KUidECamEventImageProcessingAdjustBrightness, newBrightness);
+    } else {
+        CX_DEBUG(("CxeSettingsControlSymbian: value up-to-date"));
+    }
+
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+*
+*/
 void CxeSettingsControlSymbian::updateExposureModeSetting(QVariant newValue)
 {
     CX_DEBUG_ENTER_FUNCTION();
--- a/camerauis/cameraxui/cxengine/src/cxesettingsimp.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/src/cxesettingsimp.cpp	Thu May 13 21:30:19 2010 +0300
@@ -34,6 +34,10 @@
 #include "cxenamespace.h"
 #include "cxeerror.h"
 
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cxesettingsimpTraces.h"
+#endif
 
 
 
@@ -44,6 +48,8 @@
 void CxeSettingsImp::loadSettings(Cxe::CameraMode mode)
 {
     CX_DEBUG_ENTER_FUNCTION();
+    OstTrace0(camerax_performance, CXESETTINGSIMP_LOADSETTINGS_IN, "msg: e_CX_SETTINGS_LOADSETTINGS 1");
+
 
     // inform the settings model for the change in mode.
     mSettingsModel.cameraModeChanged(mode);
@@ -54,6 +60,7 @@
         emit sceneChanged(mSettingsModel.currentVideoScene());
     }
 
+    OstTrace0(camerax_performance, CXESETTINGSIMP_LOADSETTINGS_OUT, "msg: e_CX_SETTINGS_LOADSETTINGS 0");
     CX_DEBUG_EXIT_FUNCTION();
 }
 
@@ -123,7 +130,7 @@
 
     QVariant value;
     CxeError::Id err = getSceneMode(key, stringValue);
-    
+
     if (err == CxeError::NotFound) {
         // read from settings store
         err = mSettingsModel.getSettingValue(key, value);
@@ -180,14 +187,14 @@
     } else {
         err = CxeError::NotFound;
     }
-    
-    if (err == CxeError::None) {    
+
+    if (err == CxeError::None) {
         stringValue = scene["sceneId"].toString();
     }
 
     CX_DEBUG(("CxeSettingsImp::get - key: %s value: %s",
               key.toAscii().data(), stringValue.toAscii().data()));
-    
+
     CX_DEBUG_EXIT_FUNCTION();
 
     return err;
@@ -244,7 +251,7 @@
               key.toAscii().data(), newValue.toAscii().data()));
 
     CxeError::Id err = setSceneMode(key, newValue);
-    
+
     if (err == CxeError::NotFound) {
         // not scene mode setting, try setting value to settings store
         mSettingsModel.set(key, newValue);
@@ -281,12 +288,12 @@
     } else {
         err = CxeError::NotFound;
     }
-    
+
     if (err == CxeError::None) {
         // scene mode set, inform clients about scene mode change
         emit sceneChanged(scene);
     }
-        
+
     CX_DEBUG_EXIT_FUNCTION();
 
     return err;
--- a/camerauis/cameraxui/cxengine/src/cxesettingsmappersymbian.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/src/cxesettingsmappersymbian.cpp	Thu May 13 21:30:19 2010 +0300
@@ -130,7 +130,7 @@
       value = CCamera::CCameraAdvancedSettings::EFocusRangeMacro;
       break;
     case CxeAutoFocusControl::Portrait:
-      value = CCamera::CCameraAdvancedSettings::EFocusRangePortrait;
+      value = CCamera::CCameraAdvancedSettings::EFocusRangeAuto;
       break;
     case CxeAutoFocusControl::Infinity:
       value = CCamera::CCameraAdvancedSettings::EFocusRangeInfinite;
--- a/camerauis/cameraxui/cxengine/src/cxesettingsmodelimp.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/src/cxesettingsmodelimp.cpp	Thu May 13 21:30:19 2010 +0300
@@ -178,7 +178,7 @@
 
     // If this is one of scene settings,
     // store it as modification of current scene.
-    CxeError::Id err = setSceneSettingValue(key, newValue.toInt());
+    CxeError::Id err = setSceneSettingValue(key, newValue);
     CX_DEBUG(( "status storing to scene data: %d", err));
 
     // If not scene specific, store the setting value.
@@ -240,14 +240,13 @@
 
     CxeError::Id err = CxeError::None;
 
-    mCurrentImgScene.clear();
-
     // load the scene setting default values for the new scene id = "newScene"
     CxeScene sceneSettings;
     err = imageScene(newScene, sceneSettings);
 
     // create of copy of the new scene as we use it for accessing the scene settings later.
     if (CxeError::None == err) {
+        mCurrentImgScene.clear();
         loadSceneData(mCurrentImgScene, sceneSettings);
     }
 
@@ -267,14 +266,13 @@
 
     CxeError::Id err = CxeError::None;
 
-    mCurrentVidScene.clear();
-
     // load the scene setting default values for the new scene id = "newScene"
     CxeScene sceneSettings;
     err = videoScene(newScene, sceneSettings);
 
     // create of copy of the new scene as we use it for accessing the scene settings later.
     if (CxeError::None == err) {
+        mCurrentVidScene.clear();
         loadSceneData(mCurrentVidScene, sceneSettings);
     }
 
@@ -380,7 +378,7 @@
 /*
 * set scene setting value associated with the key
 */
-CxeError::Id CxeSettingsModelImp::setSceneSettingValue(const QString &key, int newValue)
+CxeError::Id CxeSettingsModelImp::setSceneSettingValue(const QString &key, QVariant newValue)
 {
     CX_DEBUG_ENTER_FUNCTION();
 
@@ -416,7 +414,7 @@
     runtimeKeys.append(CxeRuntimeKeys::PRIMARY_CAMERA_CAPTURE_KEYS);
     runtimeKeys.append(CxeRuntimeKeys::PRIMARY_CAMERA_AUTOFOCUS_KEYS);
     runtimeKeys.append(CxeRuntimeKeys::SECONDARY_CAMERA_CAPTURE_KEYS);
-    runtimeKeys.append(CxeRuntimeKeys::CONTRAST_ITEMS);
+    runtimeKeys.append(CxeRuntimeKeys::FREE_MEMORY_LEVELS);
     runtimeKeys.append(CxeRuntimeKeys::STILL_MAX_ZOOM_LIMITS);
     runtimeKeys.append(CxeRuntimeKeys::VIDEO_MAX_ZOOM_LIMITS);
 
@@ -466,7 +464,7 @@
     vidSceneLowLight.insert(CxeSettingIds::SCENE_ID, CxeSettingIds::VIDEO_SCENE_LOWLIGHT);
     vidSceneLowLight.insert(CxeSettingIds::FOCAL_RANGE, CxeAutoFocusControl::Hyperfocal);
     vidSceneLowLight.insert(CxeSettingIds::WHITE_BALANCE, WhitebalanceAutomatic);
-    vidSceneLowLight.insert(CxeSettingIds::EXPOSURE_MODE, ExposureNight);
+    vidSceneLowLight.insert(CxeSettingIds::EXPOSURE_MODE, ExposureAuto);
     vidSceneLowLight.insert(CxeSettingIds::COLOR_TONE, ColortoneNormal);
     vidSceneLowLight.insert(CxeSettingIds::CONTRAST, 0);
     vidSceneLowLight.insert(CxeSettingIds::FRAME_RATE, 15); //fps
--- a/camerauis/cameraxui/cxengine/src/cxestatemachinebase.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/src/cxestatemachinebase.cpp	Thu May 13 21:30:19 2010 +0300
@@ -20,7 +20,7 @@
 #include "cxestate.h"
 
 CxeStateMachineBase::CxeStateMachineBase( const char* stateMachineName ) :
-    mStateId(0), mName(stateMachineName)
+    mStateBitsUsed(0), mStateId(0), mName(stateMachineName)
 {
 }
 
@@ -32,25 +32,14 @@
 
 bool CxeStateMachineBase::addState( CxeState* state )
 {
-    bool success = true;
-
-    if (!state) {
-        // given parameter is null pointer
-        success = false;
-    } else {
-        // Make sure any of the existing stateId don't have overlapping bits.
-        // We need to be able to use bitwise AND operator for stateIds.
-        QList<int> stateIds = mStates.keys();
-        foreach(int i, stateIds) {
-            if ((i & state->stateId()) != 0) {
-                success = false;
-                break;
-            }
-        }
-    }
+    bool success( state // non-null state object
+               && state->stateId() // state id is not zero
+               && !(mStateBitsUsed & state->stateId()) // no overlapping bits
+                );
 
     // if no errors
     if (success) {
+        mStateBitsUsed |= state->stateId();
         mStates[state->stateId()] = state; // state is now owned by the state machine
     }
 
--- a/camerauis/cameraxui/cxengine/src/cxestillcapturecontrolsymbian.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/src/cxestillcapturecontrolsymbian.cpp	Thu May 13 21:30:19 2010 +0300
@@ -16,6 +16,7 @@
 */
 
 
+#include <algorithm>
 #include <exception>
 #include <fbs.h>
 #include <QPixmap>
@@ -29,7 +30,6 @@
 #include "cxefilenamegenerator.h"
 #include "cxefilesavethread.h"
 #include "cxutils.h"
-#include "cxesysutil.h"
 #include "cxecameradevicecontrol.h"
 #include "cxecameradevice.h"
 #include "cxesoundplayersymbian.h"
@@ -44,6 +44,7 @@
 #include "cxesensoreventhandler.h"
 #include "cxesensoreventhandler.h"
 #include "cxequalitypresetssymbian.h"
+#include "cxediskmonitor.h"
 
 #include "OstTraceDefinitions.h"
 #ifdef OST_TRACE_COMPILER_IN_USE
@@ -60,34 +61,43 @@
  * Constructor.
  */
 CxeStillCaptureControlSymbian::CxeStillCaptureControlSymbian(
-        CxeCameraDevice &cameraDevice,
-        CxeViewfinderControl &viewfinderControl,
-        CxeCameraDeviceControl &cameraDeviceControl,
-        CxeFilenameGenerator &nameGenerator,
-        CxeSensorEventHandler &sensorEventHandler,
-        CxeAutoFocusControl &autoFocusControl,
-        CxeSettings &settings,
-        CxeQualityPresets &qualityPresets,
-        CxeFileSaveThread &fileSaveThread)
-: CxeStateMachine("CxeStillCaptureControlSymbian"),
-  mCameraDevice(cameraDevice),
-  mViewfinderControl(viewfinderControl),
-  mCameraDeviceControl(cameraDeviceControl),
-  mFilenameGenerator(nameGenerator),
-  mSensorEventHandler(sensorEventHandler),
-  mAutoFocusControl(autoFocusControl),
-  mSettings(settings),
-  mQualityPresets(qualityPresets),
-  mFileSaveThread(fileSaveThread),
-  mMode(SingleImageCapture),
-  mAfState(CxeAutoFocusControl::Unknown)
+    CxeCameraDevice &cameraDevice,
+    CxeViewfinderControl &viewfinderControl,
+    CxeCameraDeviceControl &cameraDeviceControl,
+    CxeFilenameGenerator &nameGenerator,
+    CxeSensorEventHandler &sensorEventHandler,
+    CxeAutoFocusControl &autoFocusControl,
+    CxeSettings &settings,
+    CxeQualityPresets &qualityPresets,
+    CxeFileSaveThread &fileSaveThread,
+    CxeDiskMonitor &diskMonitor)
+    : CxeStateMachine("CxeStillCaptureControlSymbian"),
+      mCameraDevice(cameraDevice),
+      mViewfinderControl(viewfinderControl),
+      mCameraDeviceControl(cameraDeviceControl),
+      mFilenameGenerator(nameGenerator),
+      mSensorEventHandler(sensorEventHandler),
+      mAutoFocusControl(autoFocusControl),
+      mSettings(settings),
+      mQualityPresets(qualityPresets),
+      mFileSaveThread(fileSaveThread),
+      mDiskMonitor(diskMonitor),
+      mMode(SingleImageCapture),
+      mAfState(CxeAutoFocusControl::Unknown)
 {
     CX_DEBUG_ENTER_FUNCTION();
+    OstTrace0(camerax_performance, CXESTILLCAPTURECONTROLSYMBIAN_CREATE_IN, "msg: e_CX_STILLCAPTURECONTROL_NEW 1");
 
     qRegisterMetaType<CxeStillCaptureControl::State>();
     initializeStates();
     reset();
 
+    // If camera is already allocated, call the slot ourselves.
+    if (mCameraDevice.camera()) {
+        handleCameraAllocated(CxeError::None);
+    }
+
+    OstTrace0(camerax_performance, CXESTILLCAPTURECONTROLSYMBIAN_CREATE_MID1, "msg: e_CX_ENGINE_CONNECT_SIGNALS 1");
     // connect signals from cameraDevice to recieve events when camera reference changes
     connect(&cameraDevice, SIGNAL(prepareForCameraDelete()),
             this, SLOT(prepareForCameraDelete()));
@@ -110,10 +120,13 @@
     connect(&mCameraDeviceControl, SIGNAL(cameraEvent(int,int)),
             this, SLOT(handleCameraEvent(int,int)));
 
+    OstTrace0(camerax_performance, CXESTILLCAPTURECONTROLSYMBIAN_CREATE_MID2, "msg: e_CX_ENGINE_CONNECT_SIGNALS 0");
+
     mImageDataQueue = new CxeImageDataQueueSymbian();
     mAutoFocusSoundPlayer = new CxeSoundPlayerSymbian(CxeSoundPlayerSymbian::AutoFocus);
     mCaptureSoundPlayer = new CxeSoundPlayerSymbian(CxeSoundPlayerSymbian::StillCapture);
 
+    OstTrace0(camerax_performance, CXESTILLCAPTURECONTROLSYMBIAN_CREATE_OUT, "msg: e_CX_STILLCAPTURECONTROL_NEW 0");
     CX_DEBUG_EXIT_FUNCTION();
 }
 
@@ -171,7 +184,7 @@
 void CxeStillCaptureControlSymbian::init()
 {
     CX_DEBUG_ENTER_FUNCTION();
-    OstTrace0(camerax_performance, CXESTILLCAPTURECONTROLSYMBIAN_INIT, "msg: e_CX_STILL_CAPCONT_INIT 1");
+    OstTrace0(camerax_performance, CXESTILLCAPTURECONTROLSYMBIAN_INIT_IN, "msg: e_CX_STILL_CAPCONT_INIT 1");
 
     if (state() == Uninitialized) {
         prepare();
@@ -179,7 +192,7 @@
         mSensorEventHandler.init();
     }
 
-    OstTrace0(camerax_performance, DUP1_CXESTILLCAPTURECONTROLSYMBIAN_INIT, "msg: e_CX_STILL_CAPCONT_INIT 0");
+    OstTrace0(camerax_performance, CXESTILLCAPTURECONTROLSYMBIAN_INIT_OUT, "msg: e_CX_STILL_CAPCONT_INIT 0");
     CX_DEBUG_EXIT_FUNCTION();
 }
 
@@ -189,13 +202,18 @@
 void CxeStillCaptureControlSymbian::deinit()
 {
     CX_DEBUG_ENTER_FUNCTION();
-    OstTrace0( camerax_performance, CXESTILLCAPTURECONTROLSYMBIAN_DEINIT, "msg: e_CX_STILL_CAPCONT_DEINIT 1" );
 
     if (state() == Uninitialized) {
         // nothing to do
         return;
     }
 
+    OstTrace0( camerax_performance, CXESTILLCAPTURECONTROLSYMBIAN_DEINIT_IN, "msg: e_CX_STILL_CAPCONT_DEINIT 1" );
+
+    // Stop monitoring disk space.
+    mDiskMonitor.stop();
+    disconnect(&mDiskMonitor, SIGNAL(diskSpaceChanged()), this, SLOT(handleDiskSpaceChanged()));
+
     //stop viewfinder
     mViewfinderControl.stop();
 
@@ -211,7 +229,7 @@
     }
     setState(Uninitialized);
 
-    OstTrace0( camerax_performance, DUP1_CXESTILLCAPTURECONTROLSYMBIAN_DEINIT, "msg: e_CX_STILL_CAPCONT_DEINIT 0" );
+    OstTrace0( camerax_performance, CXESTILLCAPTURECONTROLSYMBIAN_DEINIT_OUT, "msg: e_CX_STILL_CAPCONT_DEINIT 0" );
     CX_DEBUG_EXIT_FUNCTION();
 }
 
@@ -228,7 +246,7 @@
         return;
     }
 
-    OstTrace0( camerax_performance, CXESTILLCAPTURECONTROLSYMBIAN_PREPARE, "msg: e_CX_STILLCAPCONT_PREPARE 1" );
+    OstTrace0( camerax_performance, CXESTILLCAPTURECONTROLSYMBIAN_PREPARE_IN, "msg: e_CX_STILLCAPCONT_PREPARE 1" );
 
     int err = KErrNone;
     CxeError::Id cxErr = getImageQualityDetails(mCurrentImageDetails);
@@ -253,9 +271,9 @@
 
         // Prepare Image capture
         CCamera::TFormat imgFormat = supportedStillFormat(mCameraDeviceControl.cameraIndex());
-        OstTrace0(camerax_performance, DUP2_CXESTILLCAPTURECONTROLSYMBIAN_PREPARE, "msg: e_CX_PREPARE_IMAGE_CAPTURE 1");
+        OstTrace0(camerax_performance, CXESTILLCAPTURECONTROLSYMBIAN_PREPARE_MID1, "msg: e_CX_PREPARE_IMAGE_CAPTURE 1");
         TRAP(err, mCameraDevice.camera()->PrepareImageCaptureL(imgFormat, ecamStillResolutionIndex));
-        OstTrace0(camerax_performance, DUP3_CXESTILLCAPTURECONTROLSYMBIAN_PREPARE, "msg: e_CX_PREPARE_IMAGE_CAPTURE 0");
+        OstTrace0(camerax_performance, CXESTILLCAPTURECONTROLSYMBIAN_PREPARE_MID2, "msg: e_CX_PREPARE_IMAGE_CAPTURE 0");
 
         CX_DEBUG(("PrepareImageCaptureL done, err=%d, resolution index = %d", err, ecamStillResolutionIndex));
 
@@ -268,18 +286,23 @@
     }
 
     if (!err) {
-        MCameraFaceTracking *faceTracking = mCameraDevice.faceTracking();
-        if (faceTracking) {
-            // Enable AF reticule drawing by adaptation
-            TRAP_IGNORE(faceTracking->EnableFaceIndicatorsL(ETrue));
-        }
-
         // Start viewfinder before claiming to be ready,
         // as e.g. pending capture might be started by state change,
         // and viewfinder start might have problems with just started capturing.
         // If viewfinder is already running, this call does nothing.
         mViewfinderControl.start();
 
+        // Start monitoring disk space.
+        mDiskMonitor.start();
+        connect(&mDiskMonitor, SIGNAL(diskSpaceChanged()), this, SLOT(handleDiskSpaceChanged()));
+
+
+        // Enable AF reticule drawing by adaptation
+        MCameraFaceTracking *faceTracking = mCameraDevice.faceTracking();
+        if (faceTracking) {
+            TRAP_IGNORE(faceTracking->EnableFaceIndicatorsL(ETrue));
+        }
+
         // Still capture and still snapshot are OK.
         // We can safely set state to READY.
         setState(Ready);
@@ -295,7 +318,7 @@
     // Inform interested parties that image mode has been prepared for capture
     emit imagePrepareComplete(CxeErrorHandlingSymbian::map(err));
 
-    OstTrace0( camerax_performance, DUP1_CXESTILLCAPTURECONTROLSYMBIAN_PREPARE, "msg: e_CX_STILLCAPCONT_PREPARE 0" );
+    OstTrace0( camerax_performance, CXESTILLCAPTURECONTROLSYMBIAN_PREPARE_OUT, "msg: e_CX_STILLCAPCONT_PREPARE 0" );
 
     CX_DEBUG_EXIT_FUNCTION();
 }
@@ -410,16 +433,31 @@
     CX_DEBUG_ENTER_FUNCTION();
     CX_ASSERT_ALWAYS(mCameraDevice.camera());
 
-    // Play the capture sound and start image capture
-    mCaptureSoundPlayer->play();
-
-    setState(Capturing);
+    // Start the image capture as fast as possible to minimize lag.
+    // Check e.g. space available *after* this.
     mCameraDevice.camera()->CaptureImage();
 
-    //! @todo: NOTE: This call may not stay here. It can move depending on the implementation for burst capture.
-    if (mMode == BurstCapture) {
-        // Start a new filename sequence
-        mFilenameGenerator.startNewImageFilenameSequence();
+    if (imagesLeft() > 0) {
+        mCaptureSoundPlayer->play();
+        setState(Capturing);
+
+        //! @todo: NOTE: This call may not stay here. It can move depending on the implementation for burst capture.
+        if (mMode == BurstCapture) {
+            // Start a new filename sequence
+            mFilenameGenerator.startNewImageFilenameSequence();
+        }
+    } else {
+        // There's no space for the image.
+        // Cancel started capturing.
+        mCameraDevice.camera()->CancelCaptureImage();
+
+        // Report error.
+        // Ui notification has anyway some delays, hence handling VF after this.
+        emit imageCaptured(CxeError::DiskFull, CxeStillImage::INVALID_ID);
+
+        // Capturing stops viewfinder, so restart it now.
+        mViewfinderControl.stop();
+        mViewfinderControl.start();
     }
 
     CX_DEBUG_EXIT_FUNCTION();
@@ -496,6 +534,7 @@
         prepareFilename(stillImage);
     }
 
+    OstTrace0( camerax_performance, DUP1_CXESTILLCAPTURECONTROLSYMBIAN_HANDLESNAPSHOTEVENT, "msg: e_CX_HANDLE_SNAPSHOT 0" );
     CX_DEBUG_EXIT_FUNCTION();
 }
 
@@ -553,7 +592,7 @@
 /**
  * handleImageData: Image data received from ECam
  */
-void CxeStillCaptureControlSymbian::handleImageData( MCameraBuffer* cameraBuffer, int error )
+void CxeStillCaptureControlSymbian::handleImageData(MCameraBuffer* cameraBuffer, int error)
 {
     CX_DEBUG_ENTER_FUNCTION();
 
@@ -641,6 +680,31 @@
     CX_DEBUG_EXIT_FUNCTION();
 }
 
+/*!
+* Disk space changed.
+* Emit remaining images changed signal, if space change affects it.
+*/
+void CxeStillCaptureControlSymbian::handleDiskSpaceChanged()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+
+    // Ignore updates on other states.
+    if (state() == CxeStillCaptureControl::Ready) {
+
+        int images = calculateRemainingImages(mCurrentImageDetails.mEstimatedSize);
+
+        if (images != mCurrentImageDetails.mPossibleImages) {
+            CX_DEBUG(("CxeStillCaptureControlSymbian - available images changed %d -> %d",
+                      mCurrentImageDetails.mPossibleImages, images));
+
+            mCurrentImageDetails.mPossibleImages = images;
+            emit availableImagesChanged();
+        }
+    }
+
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
 /**
  * ECam reference changing, release resources
  */
@@ -843,19 +907,23 @@
 
 /*!
 * Slot to handle Autofocus events.
+* \param newState Indicates current state of the auto focus
+* \param error Contains possible error code
 */
 void CxeStillCaptureControlSymbian::handleAutofocusStateChanged(
                                          CxeAutoFocusControl::State newState,
-                                         CxeError::Id /*error*/ )
+                                         CxeError::Id error )
 {
     CX_DEBUG_ENTER_FUNCTION();
+    Q_UNUSED(error);
     mAfState = newState;
     CxeAutoFocusControl::Mode mode = mAutoFocusControl.mode();
 
     // if focused and in correct mode, play sound
     if  (newState == CxeAutoFocusControl::Ready &&
          mode != CxeAutoFocusControl::Hyperfocal &&
-         mode != CxeAutoFocusControl::Infinity) {
+         mode != CxeAutoFocusControl::Infinity &&
+         mAutoFocusControl.isSoundEnabled()) {
         mAutoFocusSoundPlayer->play();
     }
     CX_DEBUG_EXIT_FUNCTION();
@@ -917,7 +985,14 @@
 */
 int CxeStillCaptureControlSymbian::imagesLeft()
 {
-    return calculateRemainingImages(mCurrentImageDetails.mEstimatedSize);
+    CX_DEBUG_ENTER_FUNCTION();
+
+    if (mCurrentImageDetails.mPossibleImages == CxeImageDetails::UNKNOWN) {
+        mCurrentImageDetails.mPossibleImages = calculateRemainingImages(mCurrentImageDetails.mEstimatedSize);
+    }
+
+    CX_DEBUG_EXIT_FUNCTION();
+    return mCurrentImageDetails.mPossibleImages;
 }
 
 
@@ -932,19 +1007,12 @@
 {
     CX_DEBUG_ENTER_FUNCTION();
 
-    //Check the memory in-use setting
-    qint64 memoryfree = CxeSysUtil::spaceAvailable(CCoeEnv::Static()->FsSession(), mSettings);
-
-    memoryfree = memoryfree - KMinRequiredSpaceImage;
-
-    if (memoryfree < 0) {
-        memoryfree = 0; // exception, inform ui
-    }
-    qint64 images = memoryfree / estimatedImagesize;
+    qint64 space = mDiskMonitor.free() - KMinRequiredSpaceImage;
+    int images = std::max(qint64(0), space / estimatedImagesize);
 
     CX_DEBUG_EXIT_FUNCTION();
 
-  return images;
+    return images;
 }
 
 // end of file
--- a/camerauis/cameraxui/cxengine/src/cxesysutil.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/src/cxesysutil.cpp	Thu May 13 21:30:19 2010 +0300
@@ -137,20 +137,17 @@
 /*!
 * Return space available for Camera to use.
 * @param fs File Server session
+* @param index Index for the drive to be checked.
 * @param settings Camera settings instance
 * @return Amount of bytes free for Camera usage.
 */
-qint64 CxeSysUtil::spaceAvailable(RFs &fs, CxeSettings &settings)
+qint64 CxeSysUtil::spaceAvailable(RFs &fs, int index, CxeSettings &settings)
 {
     CX_DEBUG_ENTER_FUNCTION();
 
     qint64 freeSpace(0);
 
     try {
-        // Get drive index
-        int index(getCameraDrive(fs));
-        qt_symbian_throwIfError(index);
-
         // Get volume info
         TVolumeInfo volumeInfo;
         int status(fs.Volume(volumeInfo, index));
@@ -169,7 +166,7 @@
         settings.get(KCRUidDiskLevel.iUid, KDiskCriticalThreshold, Cxe::Repository, criticalThreshold);
 
         // Calculate space that we can still use. A small safety buffer is used above critical value.
-        freeSpace = std::max(volumeInfo.iFree - criticalThreshold.toInt() - KDiskSafetyLimit, (qint64)0);
+        freeSpace = std::max(qint64(0), volumeInfo.iFree - criticalThreshold.toInt() - KDiskSafetyLimit);
 
     } catch(const std::exception& e) {
         Q_UNUSED(e);
--- a/camerauis/cameraxui/cxengine/src/cxevideocapturecontrolsymbian.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/src/cxevideocapturecontrolsymbian.cpp	Thu May 13 21:30:19 2010 +0300
@@ -30,57 +30,87 @@
 #include "cxestillimagesymbian.h"
 #include "cxecameradevice.h"
 #include "cxutils.h"
-#include "cxesysutil.h"
 #include "cxestate.h"
 #include "cxesettings.h"
 #include "cxenamespace.h"
-#include "OstTraceDefinitions.h"
 #include "cxesoundplayersymbian.h"
 #include "cxequalitypresetssymbian.h"
 #include "cxeviewfindercontrolsymbian.h"
+#include "cxediskmonitor.h"
+
+#include "OstTraceDefinitions.h"
 #ifdef OST_TRACE_COMPILER_IN_USE
 #include "cxevideocapturecontrolsymbianTraces.h"
 #endif
 
 
 // constants
-const TInt64  KMinRequiredSpaceVideo       = 4000000;
-const uint    KOneMillion                 = 1000000;
-const qreal   KMetaDataCoeff              = 1.03;      // Coefficient to estimate metadata amount
-const uint    KCamCMaxClipDurationInSecs  = 5400;      // Maximun video clip duration in seconds
-const qreal   KCMRAvgVideoBitRateScaler   = 0.9;       // avg video bit rate scaler
+namespace
+{
+    // Controller UId, can be used by the client to identify the controller, e.g. if the custom command can be used
+    const TUid KCamCControllerImplementationUid = {0x101F8503};
+    // TMMFEvent UIDs for Async stop
+    const TUid KCamCControllerCCVideoRecordStopped = {0x2000E546};
+    const TUid KCamCControllerCCVideoFileComposed = {0x2000E547};
+
+    // Custom command for setting a new filename without closing & reopening the controller
+    enum TCamCControllerCustomCommands
+        {
+        ECamCControllerCCNewFilename = 0,
+        ECamCControllerCCVideoStopAsync
+        };
+
+    const TInt    KOneSecond                  = 1000000;
+    const int     KMaintainAspectRatio        = false;
+    const TInt64  KMinRequiredSpaceVideo      = 4000000;
+    const uint    KOneMillion                 = 1000000;
+    const qreal   KMetaDataCoeff              = 1.03;      // Coefficient to estimate metadata amount
+    const uint    KCamCMaxClipDurationInSecs  = 5400;      // Maximun video clip duration in seconds
+    const qreal   KCMRAvgVideoBitRateScaler   = 0.9;       // avg video bit rate scaler
+}
 
 
 /*!
 * CxeVideoCaptureControlSymbian::CxeVideoCaptureControlSymbian
 */
-CxeVideoCaptureControlSymbian::CxeVideoCaptureControlSymbian(CxeCameraDevice &cameraDevice,
-                                                             CxeViewfinderControl &viewfinderControl,
-                                                             CxeCameraDeviceControl &cameraDeviceControl,
-                                                             CxeFilenameGenerator &nameGenerator,
-                                                             CxeSettings &settings,
-                                                             CxeQualityPresets &qualityPresets) :
-    CxeStateMachine("CxeVideoCaptureControlSymbian"),
-    mVideoRecorder(NULL),
-    mCameraDevice(cameraDevice),
-    mCameraDeviceControl(cameraDeviceControl),
-    mViewfinderControl(viewfinderControl),
-    mFilenameGenerator(nameGenerator),
-    mSettings(settings),
-    mQualityPresets(qualityPresets),
-    mSnapshot(),
-    mNewFileName(""),
-    mCurrentFilename("")
+CxeVideoCaptureControlSymbian::CxeVideoCaptureControlSymbian(
+    CxeCameraDevice &cameraDevice,
+    CxeViewfinderControl &viewfinderControl,
+    CxeCameraDeviceControl &cameraDeviceControl,
+    CxeFilenameGenerator &nameGenerator,
+    CxeSettings &settings,
+    CxeQualityPresets &qualityPresets,
+    CxeDiskMonitor &diskMonitor)
+    : CxeStateMachine("CxeVideoCaptureControlSymbian"),
+      mVideoRecorder(NULL),
+      mCameraDevice(cameraDevice),
+      mCameraDeviceControl(cameraDeviceControl),
+      mViewfinderControl(viewfinderControl),
+      mFilenameGenerator(nameGenerator),
+      mSettings(settings),
+      mQualityPresets(qualityPresets),
+      mDiskMonitor(diskMonitor),
+      mSnapshot(),
+      mNewFileName(""),
+      mCurrentFilename("")
 {
     CX_DEBUG_ENTER_FUNCTION();
+    OstTrace0(camerax_performance, CXEVIDEOCAPTURECONTROLSYMBIAN_CREATE_IN, "msg: e_CX_VIDEOCAPTURECONTROL_NEW 1");
 
     qRegisterMetaType<CxeVideoCaptureControl::State> ();
     initializeStates();
+
     mVideoStopSoundPlayer = new
              CxeSoundPlayerSymbian(CxeSoundPlayerSymbian::VideoCaptureStop);
     mVideoStartSoundPlayer = new
              CxeSoundPlayerSymbian(CxeSoundPlayerSymbian::VideoCaptureStart);
 
+    // If camera is already allocated, call the slot ourselves.
+    if (mCameraDevice.camera()) {
+        handleCameraAllocated(CxeError::None);
+    }
+
+    OstTrace0(camerax_performance, CXEVIDEOCAPTURECONTROLSYMBIAN_CREATE_M1, "msg: e_CX_ENGINE_CONNECT_SIGNALS 1");
     // connect signals from cameraDevice, so we recieve events when camera reference changes
     connect(&cameraDevice, SIGNAL(prepareForCameraDelete()),
             this, SLOT(prepareForCameraDelete()));
@@ -96,6 +126,11 @@
     connect(&mSettings, SIGNAL(settingValueChanged(const QString&,QVariant)),
             this, SLOT(handleSettingValueChanged(const QString&,QVariant)));
 
+    connect(&mSettings, SIGNAL(sceneChanged(CxeScene&)), this, SLOT(handleSceneChanged(CxeScene&)));
+
+    OstTrace0(camerax_performance, CXEVIDEOCAPTURECONTROLSYMBIAN_CREATE_M2, "msg: e_CX_ENGINE_CONNECT_SIGNALS 0");
+
+    OstTrace0(camerax_performance, CXEVIDEOCAPTURECONTROLSYMBIAN_CREATE_OUT, "msg: e_CX_VIDEOCAPTURECONTROL_NEW 0");
     CX_DEBUG_EXIT_FUNCTION();
 }
 
@@ -144,13 +179,14 @@
 void CxeVideoCaptureControlSymbian::deinit()
 {
     CX_DEBUG_ENTER_FUNCTION();
-    OstTrace0( camerax_performance, CXEVIDEOCAPTURECONTROLSYMBIAN_DEINIT, "msg: e_CX_VIDEO_CAPCONT_DEINIT 1" );
 
     if(state() == Idle) {
         // nothing to do
         return;
     }
 
+    OstTrace0( camerax_performance, CXEVIDEOCAPTURECONTROLSYMBIAN_DEINIT, "msg: e_CX_VIDEO_CAPCONT_DEINIT 1" );
+
     // first stop viewfinder
     mViewfinderControl.stop();
 
@@ -338,7 +374,6 @@
     CX_DEBUG(("Video resoulution (%d,%d)", mCurrentVideoDetails.mWidth,
                                            mCurrentVideoDetails.mHeight));
     CX_DEBUG(("Video bitrate = %d)", mCurrentVideoDetails.mVideoBitRate));
-    CX_DEBUG(("Video frame rate = %f)", mCurrentVideoDetails.mVideoFrameRate));
 
     OstTrace0(camerax_performance, CXEVIDEOCAPTURECONTROLSYMBIAN_PREPARE, "msg: e_CX_VIDCAPCONT_PREPARE 1");
     TSize frameSize;
@@ -347,10 +382,20 @@
     int muteSetting = 0; // audio enabled
     mSettings.get(CxeSettingIds::VIDEO_MUTE_SETTING, muteSetting);
 
+    // Check if scene defines frame rate.
+    // Use generic frame rate defined in video details, if no value is set in scene.
+    int frameRate = 0;
+    mSettings.get(CxeSettingIds::FRAME_RATE, frameRate);
+    if (frameRate <= 0) {
+        frameRate = mCurrentVideoDetails.mVideoFrameRate;
+    }
+
+    CX_DEBUG(("Video frame rate = %d)", frameRate));
+
     TRAPD(err,
               {
               mVideoRecorder->SetVideoFrameSizeL(frameSize);
-              mVideoRecorder->SetVideoFrameRateL(mCurrentVideoDetails.mVideoFrameRate);
+              mVideoRecorder->SetVideoFrameRateL(frameRate);
               mVideoRecorder->SetVideoBitRateL(mCurrentVideoDetails.mVideoBitRate);
               mVideoRecorder->SetAudioEnabledL(muteSetting == 0);
               // "No limit" value is handled in video recorder wrapper.
@@ -631,6 +676,8 @@
 
     setState(CxeVideoCaptureControl::Paused);
     TRAPD(pauseErr, mVideoRecorder->PauseL());
+    // play the sound, but not changing the state
+    mVideoStopSoundPlayer->play();
     if (pauseErr) {
         CX_DEBUG(("[WARNING] Error %d pausing!", pauseErr));
         //pause operation failed, report it
@@ -718,6 +765,7 @@
         if (!aError) {
             setState(CxeVideoCaptureControl::Ready);
             mViewfinderControl.start();
+            OstTrace0( camerax_performance, CXEVIDEOCAPTURECONTROLSYMBIAN_GOTOVIDEO, "msg: e_CX_GO_TO_VIDEO_MODE 0" );
         } else {
             deinit();
             // report error to interested parties
@@ -980,6 +1028,22 @@
 */
 void CxeVideoCaptureControlSymbian::handleStateChanged(int newStateId, CxeError::Id error)
 {
+    switch (newStateId) {
+    case Ready:
+        if (error == CxeError::None && !mDiskMonitor.isMonitoring()) {
+            mDiskMonitor.start();
+            connect(&mDiskMonitor, SIGNAL(diskSpaceChanged()), this, SLOT(handleDiskSpaceChanged()));
+        }
+        break;
+    default:
+        // Stop monitoring when video mode is released.
+        // Same goes during recording, as video times come from recorder.
+        if (mDiskMonitor.isMonitoring()) {
+            mDiskMonitor.stop();
+            disconnect(&mDiskMonitor, SIGNAL(diskSpaceChanged()), this, SLOT(handleDiskSpaceChanged()));
+        }
+        break;
+    }
     emit stateChanged(static_cast<State> (newStateId), error);
 }
 
@@ -1027,13 +1091,18 @@
 {
     CX_DEBUG_ENTER_FUNCTION();
 
-    if (state() == CxeVideoCaptureControl::Recording) {
+    if (state() == CxeVideoCaptureControl::Recording ||
+        state() == CxeVideoCaptureControl::Paused) {
         TTimeIntervalMicroSeconds remaining = 0;
         remaining = mVideoRecorder->RecordTimeAvailable();
         time = remaining.Int64() * 1.0 / KOneSecond;
         CX_DEBUG(( "timeRemaining2: %d", time ));
     } else {
-        calculateRemainingTime(mCurrentVideoDetails, time);
+        // Check if we need to recalculate the remaining time.
+        if (mCurrentVideoDetails.mRemainingTime == CxeVideoDetails::UNKNOWN) {
+            calculateRemainingTime(mCurrentVideoDetails, mCurrentVideoDetails.mRemainingTime);
+        }
+        time = mCurrentVideoDetails.mRemainingTime;
     }
 
     CX_DEBUG_EXIT_FUNCTION();
@@ -1054,7 +1123,7 @@
 
     // get available space in the drive selected in the settings
     // for storing videos
-    qint64 availableSpace = CxeSysUtil::spaceAvailable(CCoeEnv::Static()->FsSession(), mSettings);
+    qint64 availableSpace = mDiskMonitor.free();
 
     availableSpace = availableSpace - KMinRequiredSpaceVideo;
 
@@ -1120,7 +1189,8 @@
 
     TTimeIntervalMicroSeconds timeElapsed = 0;
     bool ok = false;
-    if (state() == CxeVideoCaptureControl::Recording) {
+    if (state() == CxeVideoCaptureControl::Recording ||
+        state() == CxeVideoCaptureControl::Paused) {
         TRAPD( err, timeElapsed = mVideoRecorder->DurationL() );
         if (!err) {
             time = timeElapsed.Int64() * 1.0 / KOneSecond;
@@ -1144,6 +1214,7 @@
     // start recording, if we were playing capture sound
     if (state() == CxeVideoCaptureControl::PlayingStartSound) {
         setState(CxeVideoCaptureControl::Recording);
+
         mVideoRecorder->Record();
     }
 
@@ -1168,14 +1239,21 @@
             // re-prepare for video
             if (state() == Ready) {
                 // release resources
-         	    deinit();
+                deinit();
                 // initialize video recording again
-           	    init();
-           	}
+                init();
+            }
         } else if (settingId == CxeSettingIds::VIDEO_MUTE_SETTING) {
             // mute setting changed, apply the new setting and re-prepare.
             setState(Preparing);
             prepare();
+        } else if (settingId == CxeSettingIds::FRAME_RATE){
+            // Frame rate setting changed. Need to re-prepare if we are prepared already.
+            // Otherwise can wait for next init call.
+            if (state() == Ready) {
+                setState(Preparing);
+                prepare();
+            }
         } else {
             // Setting not relevant to video mode
         }
@@ -1184,6 +1262,48 @@
     CX_DEBUG_EXIT_FUNCTION();
 }
 
+/*!
+ * Scene mode changed. We need to know about it because frame rate
+ * might have changed.
+ */
+void CxeVideoCaptureControlSymbian::handleSceneChanged(CxeScene& scene)
+{
+    CX_DEBUG_ENTER_FUNCTION();
+
+    // make sure we are in video mode
+    if (mCameraDeviceControl.mode() == Cxe::VideoMode) {
+        // Frame rate setting might have changed so re-prepare.
+        if (state() == Ready) {
+            setState(Preparing);
+            prepare();
+        }
+
+    }
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Disk space changed.
+* Emit remaining time changed signal, if space change affects it.
+*/
+void CxeVideoCaptureControlSymbian::handleDiskSpaceChanged()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+
+    // Ignore updates on preparing phase.
+    if (state() == CxeVideoCaptureControl::Ready) {
+
+        int time(0);
+        calculateRemainingTime(mCurrentVideoDetails, time);
+
+        if (time !=  mCurrentVideoDetails.mRemainingTime) {
+            mCurrentVideoDetails.mRemainingTime = time;
+            emit remainingTimeChanged();
+        }
+    }
+
+    CX_DEBUG_EXIT_FUNCTION();
+}
 
 /*!
 * Returns QList of all supported video quality details based on the camera index
--- a/camerauis/cameraxui/cxengine/src/cxeviewfindercontrolsymbian.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/src/cxeviewfindercontrolsymbian.cpp	Thu May 13 21:30:19 2010 +0300
@@ -166,7 +166,6 @@
     TInt err = KErrNone;
 
     if ( state() == Running ) {
-        OstTrace0( camerax_performance, CXEVIEWFINDERCONTROLSYMBIAN_START, "msg: e_CX_GO_TO_VIDEO_MODE 0" );
         CX_DEBUG( ( "Viewfinder already running - ignored start()" ) );
         CX_DEBUG_EXIT_FUNCTION();
         return CxeError::None;
@@ -212,7 +211,7 @@
                 CCoeEnv::Static()->WsSession(),
                 *CCoeEnv::Static()->ScreenDevice(),
                 *mVideoWindow, activeViewfinderRect));
-            OstTrace0(camerax_performance, DUP1_CXEVIEWFINDERCONTROLSYMBIAN_START, "msg: e_CX_STARTUP 0");
+            OstTrace0(camerax_performance, CXEVIEWFINDERCONTROLSYMBIAN_START, "msg: e_CX_STARTUP 0");
             setState(Running);
             break;
             }
--- a/camerauis/cameraxui/cxengine/src/cxezoomcontrolsymbian.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/src/cxezoomcontrolsymbian.cpp	Thu May 13 21:30:19 2010 +0300
@@ -23,7 +23,15 @@
 #include "cxenamespace.h"
 #include "cxestate.h"
 
-const int NOT_DEFINED = -1;
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cxezoomcontrolsymbianTraces.h"
+#endif
+
+namespace
+{
+    const int NOT_DEFINED = -1;
+}
 
 // ---------------------------------------------------------------------------
 // CxeZoomControlSymbian::CxeZoomControlSymbian
@@ -156,6 +164,7 @@
 void CxeZoomControlSymbian::prepareZoomForStill(int ecamStillResolutionIndex)
 {
     CX_DEBUG_ENTER_FUNCTION();
+    OstTrace0(camerax_performance, CXEZOOMCONTROLSYMBIAN_PREPARESTILL_IN, "msg: e_CX_PREPARE_ZOOM 1");
 
     if (mCameraDeviceControl.state() == CxeCameraDeviceControl::Ready) {
         init();
@@ -184,6 +193,7 @@
         finalizeZoomPreparation(error);
     }
 
+    OstTrace0(camerax_performance, CXEZOOMCONTROLSYMBIAN_PREPARESTILL_OUT, "msg: e_CX_PREPARE_ZOOM 0");
     CX_DEBUG_EXIT_FUNCTION();
 }
 
@@ -194,6 +204,7 @@
 void CxeZoomControlSymbian::prepareZoomForVideo()
 {
     CX_DEBUG_ENTER_FUNCTION();
+    OstTrace0(camerax_performance, CXEZOOMCONTROLSYMBIAN_PREPAREVIDEO_IN, "msg: e_CX_PREPARE_ZOOM 1");
 
     if (mCameraDeviceControl.state() == CxeCameraDeviceControl::Ready) {
         init();
@@ -214,7 +225,7 @@
         finalizeZoomPreparation(error);
     }
 
-
+    OstTrace0(camerax_performance, CXEZOOMCONTROLSYMBIAN_PREPAREVIDEO_OUT, "msg: e_CX_PREPARE_ZOOM 0");
     CX_DEBUG_EXIT_FUNCTION();
 }
 
--- a/camerauis/cameraxui/cxengine/tsrc/fakeclasses/cxefakesettingsmodel.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/fakeclasses/cxefakesettingsmodel.cpp	Thu May 13 21:30:19 2010 +0300
@@ -98,30 +98,27 @@
     mDummyScene.clear();
 
     // image scene mode key values
-    if(newScene == "ImageSceneAuto") {
+    if(newScene == CxeSettingIds::IMAGE_SCENE_AUTO) {
         mDummyScene.insert(CxeSettingIds::IMAGE_SCENE, CxeSettingIds::IMAGE_SCENE_AUTO);
     }
-    else if(newScene == "ImageScenePortrait") {
+    else if(newScene == CxeSettingIds::IMAGE_SCENE_PORTRAIT) {
         mDummyScene.insert(CxeSettingIds::IMAGE_SCENE, CxeSettingIds::IMAGE_SCENE_PORTRAIT);
     }
-    else if(newScene == "ImageSceneScenery") {
+    else if(newScene == CxeSettingIds::IMAGE_SCENE_SCENERY) {
         mDummyScene.insert(CxeSettingIds::IMAGE_SCENE, CxeSettingIds::IMAGE_SCENE_SCENERY);
     }
-    else if(newScene == "ImageSceneMacro") {
+    else if(newScene == CxeSettingIds::IMAGE_SCENE_MACRO) {
         mDummyScene.insert(CxeSettingIds::IMAGE_SCENE, CxeSettingIds::IMAGE_SCENE_MACRO);
     }
-    else if(newScene == "ImageSceneSports") {
+    else if(newScene == CxeSettingIds::IMAGE_SCENE_SPORTS) {
         mDummyScene.insert(CxeSettingIds::IMAGE_SCENE, CxeSettingIds::IMAGE_SCENE_SPORTS);
     }
-    else if(newScene == "ImageSceneNight") {
+    else if(newScene == CxeSettingIds::IMAGE_SCENE_NIGHT) {
         mDummyScene.insert(CxeSettingIds::IMAGE_SCENE, CxeSettingIds::IMAGE_SCENE_NIGHT);
     }
-    else if(newScene == "ImageSceneNightPortrait") {
+    else if(newScene == CxeSettingIds::IMAGE_SCENE_NIGHTPORTRAIT) {
         mDummyScene.insert(CxeSettingIds::IMAGE_SCENE, CxeSettingIds::IMAGE_SCENE_NIGHTPORTRAIT);
     }
-    else if(newScene == "ImageSceneCloseUp") {
-        mDummyScene.insert(CxeSettingIds::IMAGE_SCENE, CxeSettingIds::IMAGE_SCENE_CLOSEUP);
-    }
     else {
         return CxeError::NotFound;
     }
@@ -134,16 +131,16 @@
     mDummyScene.clear();
 
     // image scene mode key values
-    if(newScene == "VideoSceneAuto") {
+    if(newScene == CxeSettingIds::VIDEO_SCENE_AUTO) {
         mDummyScene.insert(CxeSettingIds::VIDEO_SCENE, CxeSettingIds::VIDEO_SCENE_AUTO);
     }
-    else if(newScene == "VideoSceneNightPortrait") {
+    else if(newScene == CxeSettingIds::VIDEO_SCENE_NIGHTPORTRAIT) {
         mDummyScene.insert(CxeSettingIds::VIDEO_SCENE, CxeSettingIds::VIDEO_SCENE_NIGHTPORTRAIT);
     }
-    else if(newScene == "VideoSceneLowLight") {
+    else if(newScene == CxeSettingIds::VIDEO_SCENE_LOWLIGHT) {
         mDummyScene.insert(CxeSettingIds::VIDEO_SCENE, CxeSettingIds::VIDEO_SCENE_LOWLIGHT);
     }
-    else if(newScene == "VideoSceneNight") {
+    else if(newScene == CxeSettingIds::VIDEO_SCENE_NIGHT) {
         mDummyScene.insert(CxeSettingIds::VIDEO_SCENE, CxeSettingIds::VIDEO_SCENE_NIGHT);
     }
     else {
@@ -159,13 +156,14 @@
 void CxeFakeSettingsModel::initDefaultCameraSettings()
 {
     CX_DEBUG_ENTER_FUNCTION();
-    mSettingStore.insert(CxeSettingIds::BRIGHTNESS,   QVariant(1));
     mSettingStore.insert(CxeSettingIds::FNAME_FOLDER_SUFFIX, QVariant(1));
     mSettingStore.insert(CxeSettingIds::FNAME_MONTH_FOLDER,  QVariant(1));
     mSettingStore.insert(CxeSettingIds::FNAME_IMAGE_COUNTER, QVariant(1));
     mSettingStore.insert(CxeSettingIds::FNAME_VIDEO_COUNTER, QVariant(1));
     mSettingStore.insert(CxeSettingIds::COLOR_TONE, QVariant(1));
+    mSettingStore.insert(CxeSettingIds::SHARPNESS, QVariant(1));
     mSettingStore.insert(CxeSettingIds::CONTRAST, QVariant(1));
+    mSettingStore.insert(CxeSettingIds::BRIGHTNESS,   QVariant(1));
     mSettingStore.insert(CxeSettingIds::EV_COMPENSATION_VALUE, QVariant(1));
     mSettingStore.insert(CxeSettingIds::EXPOSURE_MODE, QVariant(1));
     mSettingStore.insert(CxeSettingIds::FLASH_MODE, QVariant(1));
@@ -174,7 +172,6 @@
     mSettingStore.insert(CxeSettingIds::IMAGE_QUALITY, QVariant(1));
     mSettingStore.insert(CxeSettingIds::IMAGE_SCENE, QVariant(1));
     mSettingStore.insert(CxeSettingIds::IMAGE_SCENE_AUTO, QVariant(1));
-    mSettingStore.insert(CxeSettingIds::IMAGE_SCENE_CLOSEUP, QVariant(1));
     mSettingStore.insert(CxeSettingIds::IMAGE_SCENE_MACRO, QVariant(1));
     mSettingStore.insert(CxeSettingIds::IMAGE_SCENE_NIGHT, QVariant(1));
     mSettingStore.insert(CxeSettingIds::IMAGE_SCENE_NIGHTPORTRAIT, QVariant(1));
@@ -185,7 +182,6 @@
     mSettingStore.insert(CxeSettingIds::SCENE_ID, QVariant(1));
     mSettingStore.insert(CxeSettingIds::SECONDARY_CAMERA, QVariant(1));
     mSettingStore.insert(CxeSettingIds::SELF_TIMER, QVariant(1));
-    mSettingStore.insert(CxeSettingIds::SHARPNESS, QVariant(1));
     mSettingStore.insert(CxeSettingIds::VIDEO_SCENE, QVariant(1));
     mSettingStore.insert(CxeSettingIds::VIDEO_SCENE_AUTO, QVariant(1));
     mSettingStore.insert(CxeSettingIds::VIDEO_SCENE_LOWLIGHT, QVariant(1));
--- a/camerauis/cameraxui/cxengine/tsrc/unit/cxeunitrunner/cxetestrunner.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/cxeunitrunner/cxetestrunner.cpp	Thu May 13 21:30:19 2010 +0300
@@ -62,11 +62,11 @@
           << "unittest_cxezoomcontrolsymbian"
           << "unittest_cxestillcapturecontrolsymbian"
           << "unittest_cxefeaturemanagerimp"
-          << "unittest_cxeenginesymbian"
           << "unittest_cxesettingsimp"
           << "unittest_cxethumbnailmanagersymbian"
           << "unittest_cxeharvestercontrolsymbian"
-          << "unittest_cxesettingscontrolsymbian";
+          << "unittest_cxesettingscontrolsymbian"
+          << "unittest_cxeenginesymbian";
 
     QDir dir;
     dir.mkpath(logFileFolder);
--- a/camerauis/cameraxui/cxengine/tsrc/unit/cxeunitrunner/cxeunitrunner.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/cxeunitrunner/cxeunitrunner.pro	Thu May 13 21:30:19 2010 +0300
@@ -18,10 +18,10 @@
 
 TEMPLATE = app
 TARGET =
-DEPENDPATH += .
-INCLUDEPATH += .
+DEPENDPATH *= .
+INCLUDEPATH *= .
 
-CONFIG += symbian_test
+CONFIG *= symbian_test
 
 symbian {
     TARGET.CAPABILITY = ALL -TCB -DRM
@@ -29,7 +29,7 @@
 }
 
 # Input
-SOURCES += main.cpp \
+SOURCES *= main.cpp \
            cxetestrunner.cpp
 
-HEADERS += cxetestrunner.h
+HEADERS *= cxetestrunner.h
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unit.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unit.pro	Thu May 13 21:30:19 2010 +0300
@@ -44,4 +44,4 @@
           unittest_cxeharvestercontrolsymbian \
           unittest_cxesettingscontrolsymbian
 
-CONFIG += ordered
+CONFIG *= ordered
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeautofocuscontrolsymbian/unittest_cxeautofocuscontrolsymbian.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeautofocuscontrolsymbian/unittest_cxeautofocuscontrolsymbian.pro	Thu May 13 21:30:19 2010 +0300
@@ -8,19 +8,21 @@
 # Nokia Corporation - initial contribution.
 # Contributors:
 # Description:
+
 include(../unittest.pri)
+
 TARGET = unittest_cxeautofocuscontrolsymbian
-LIBS += -lecamadvsettings
-LIBS += -lecam
-LIBS += -lecampluginsupport
-LIBS += -lfbscli
-LIBS += -lbitgdi
-LIBS += -lecamsnapshot
 
-DEFINES += CXE_USE_DUMMY_CAMERA
-DEFINES = $$unique(DEFINES)
+LIBS *= -lecamadvsettings
+LIBS *= -lecam
+LIBS *= -lecampluginsupport
+LIBS *= -lfbscli
+LIBS *= -lbitgdi
+LIBS *= -lecamsnapshot
 
-SOURCES += unittest_cxeautofocuscontrolsymbian.cpp \
+DEFINES *= CXE_USE_DUMMY_CAMERA
+
+SOURCES *= unittest_cxeautofocuscontrolsymbian.cpp \
     cxeautofocuscontrolsymbian.cpp \
     cxestatemachine.cpp \
     cxestate.cpp \
@@ -32,7 +34,7 @@
     cxefakecameradevice.cpp \
     cxecameradevicecontrolsymbian.cpp \
     cxefakecameradevicecontrol.cpp
-HEADERS += unittest_cxeautofocuscontrolsymbian.h \
+HEADERS *= unittest_cxeautofocuscontrolsymbian.h \
     cxeautofocuscontrol.h \
     cxeautofocuscontrolsymbian.h \
     cxestatemachine.h \
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxecameradevice/unittest_cxecameradevice.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxecameradevice/unittest_cxecameradevice.pro	Thu May 13 21:30:19 2010 +0300
@@ -8,26 +8,28 @@
 # Nokia Corporation - initial contribution.
 # Contributors:
 # Description:
+
 include(../unittest.pri)
+
 TARGET = unittest_cxecameradevice
-LIBS += -lecamadvsettings
-LIBS += -lecamsnapshot
-LIBS += -lecam
-LIBS += -lecampluginsupport
-LIBS += -lfbscli
-LIBS += -lbitgdi
 
-DEFINES += CXE_USE_DUMMY_CAMERA
-DEFINES = $$unique(DEFINES)
+LIBS *= -lecamadvsettings
+LIBS *= -lecamsnapshot
+LIBS *= -lecam
+LIBS *= -lecampluginsupport
+LIBS *= -lfbscli
+LIBS *= -lbitgdi
 
-SOURCES += unittest_cxecameradevice.cpp \
+DEFINES *= CXE_USE_DUMMY_CAMERA
+
+SOURCES *= unittest_cxecameradevice.cpp \
     cxestate.cpp \
     cxestatemachinebase.cpp \
     cxestatemachine.cpp \
     cxedummycamera.cpp \
     cxecameradevice.cpp \
     cxeerrormappingsymbian.cpp
-HEADERS += unittest_cxecameradevice.h \
+HEADERS *= unittest_cxecameradevice.h \
     cxestate.h \
     cxestatemachinebase.h \
     cxestatemachine.h \
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxecameradevicecontrolsymbian/unittest_cxecameradevicecontrolsymbian.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxecameradevicecontrolsymbian/unittest_cxecameradevicecontrolsymbian.pro	Thu May 13 21:30:19 2010 +0300
@@ -18,19 +18,18 @@
 
 TARGET = unittest_cxecameradevicecontrolsymbian
 
-LIBS += -lplatformenv
-LIBS += -lecamadvsettings
-LIBS += -lecamsnapshot
-LIBS += -lecam
-LIBS += -lecampluginsupport
-LIBS += -lfbscli
-LIBS += -lbitgdi
+LIBS *= -lplatformenv
+LIBS *= -lecamadvsettings
+LIBS *= -lecamsnapshot
+LIBS *= -lecam
+LIBS *= -lecampluginsupport
+LIBS *= -lfbscli
+LIBS *= -lbitgdi
+LIBS *= -lsysutil
 
-DEFINES += CXE_USE_DUMMY_CAMERA
-DEFINES = $$unique(DEFINES)
+DEFINES *= CXE_USE_DUMMY_CAMERA
 
-
-SOURCES += unittest_cxecameradevicecontrolsymbian.cpp \
+SOURCES *= unittest_cxecameradevicecontrolsymbian.cpp \
            cxecameradevicecontrolsymbian.cpp \
            cxecameradevicecontrolunit.cpp \
            cxecameradevice.cpp \
@@ -40,9 +39,10 @@
            cxestatemachine.cpp \
            cxestate.cpp \
            cxestatemachinebase.cpp \
-           cxedummycamera.cpp
+           cxedummycamera.cpp \
+           cxesysutil.cpp
 
-HEADERS += unittest_cxecameradevicecontrolsymbian.h \
+HEADERS *= unittest_cxecameradevicecontrolsymbian.h \
            cxecameradevicecontrolsymbian.h \
            cxecameradevicecontrolunit.h \
            cxecameradevicecontrol.h \
@@ -51,7 +51,8 @@
            cxestatemachine.h \
            cxestate.h \
            cxestatemachinebase.h \
-	   cxefilenamegenerator.h
+           cxefilenamegenerator.h \
+           cxesysutil.h
 
 
 
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeenginesymbian/unittest_cxeenginesymbian.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeenginesymbian/unittest_cxeenginesymbian.cpp	Thu May 13 21:30:19 2010 +0300
@@ -42,7 +42,7 @@
     delete mEngine;
     mEngine = NULL;
     mEngine = new CxeEngineSymbianUnit();
-    mEngine->construct();
+    mEngine->initMode(Cxe::ImageMode);
 
     mCameraDeviceControl = qobject_cast<CxeFakeCameraDeviceControl*>(
             &mEngine->cameraDeviceControl());
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeenginesymbian/unittest_cxeenginesymbian.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeenginesymbian/unittest_cxeenginesymbian.pro	Thu May 13 21:30:19 2010 +0300
@@ -18,36 +18,36 @@
 
 TARGET = unittest_cxeenginesymbian
 
-DEFINES += CXE_USE_DUMMY_CAMERA
-DEFINES = $$unique(DEFINES)
+DEFINES *= CXE_USE_DUMMY_CAMERA
 
-INCLUDEPATH += ../../../inc/sensor
+INCLUDEPATH *= ../../../inc/sensor
 
-LIBS += -lecam
-LIBS += -lecamadvsettings
-LIBS += -lecamsnapshot
-LIBS += -lecamdirectviewfinder
-LIBS += -lfbscli
-LIBS += -lbitgdi
-LIBS += -lxqsettingsmanager
-LIBS += -lecampluginsupport
-LIBS += -lmediaclientvideo
-LIBS += -lefsrv
-LIBS += -lsysutil
-LIBS += -lbafl
-LIBS += -lmediaclientaudio
-LIBS += -lecom
-LIBS += -lmmfcontrollerframework
-LIBS += -lplatformenv
-LIBS += -lsensrvclient
-LIBS += -lsensrvutil
-LIBS += -limagingconfigmanager
-LIBS += -lalfclient
-LIBS += -lalfdecoderserverclient
-LIBS += -lxqserviceutil
+LIBS *= -lecam
+LIBS *= -lecamadvsettings
+LIBS *= -lecamsnapshot
+LIBS *= -lecamdirectviewfinder
+LIBS *= -lfbscli
+LIBS *= -lbitgdi
+LIBS *= -lxqsettingsmanager
+LIBS *= -lecampluginsupport
+LIBS *= -lmediaclientvideo
+LIBS *= -lefsrv
+LIBS *= -lsysutil
+LIBS *= -lbafl
+LIBS *= -lmediaclientaudio
+LIBS *= -lecom
+LIBS *= -lmmfcontrollerframework
+LIBS *= -lplatformenv
+LIBS *= -lsensrvclient
+LIBS *= -lsensrvutil
+LIBS *= -limagingconfigmanager
+LIBS *= -lalfclient
+LIBS *= -lalfdecoderserverclient
+LIBS *= -lxqserviceutil
+LIBS *= -loommonitor
 
 
-SOURCES += unittest_cxeenginesymbian.cpp \
+SOURCES *= unittest_cxeenginesymbian.cpp \
            cxeenginesymbianunit.cpp \
            cxeenginesymbian.cpp \
            cxeengine.cpp \
@@ -99,14 +99,17 @@
            sensor/xqaccsensor_p.cpp \
            cxefakequalitypresets.cpp \
            cxequalitypresetssymbian.cpp \
+           cxediskmonitor.cpp \
+           cxediskmonitorprivate.cpp \
+           cxememorymonitor.cpp \
+           cxememorymonitorprivate.cpp
 
 
 
-HEADERS += unittest_cxeenginesymbian.h \
+HEADERS *= unittest_cxeenginesymbian.h \
            cxeenginesymbianunit.h \
            cxeenginesymbian.h \
            cxeengine.h \
-           cxesettingscontrolsymbian.h \
            cxeautofocuscontrol.h \
            cxeautofocuscontrolsymbian.h \
            cxefakeautofocuscontrol.h \
@@ -126,25 +129,25 @@
            cxevideocontainer.h \
            cxevideocapturecontrol.h \
            cxefakevideocapturecontrol.h \
+           cxevideocapturecontrolsymbian.h \
            cxestatemachine.h \
            cxestatemachinebase.h \
            cxestate.h \
-           cxesettingsmodel.h \
+           cxesettings.h \
            cxesettingsimp.h \
+           cxefakesettings.h \
+           cxesettingsmodel.h \
            cxesettingscenrepstore.h \
+           cxesettingsmappersymbian.h \
+           cxesettingscontrolsymbian.h \
            cxefilenamegeneratorsymbian.h \
            cxefakefilenamegenerator.h \
            cxezoomcontrolsymbian.h \
            cxefakezoomcontrol.h \
            cxezoomcontrol.h \
-           cxevideocapturecontrolsymbian.h \
-           cxevideocapturecontrol.h \
            cxefeaturemanager.h \
            cxefeaturemanagerimp.h \
            cxefakefeaturemanager.h \
-           cxesettings.h \
-           cxefakesettings.h \
-           cxesettingsmappersymbian.h \
            cxesoundplayersymbian.h \
            cxesensoreventhandlersymbian.h \
            cxesensoreventhandler.h \
@@ -167,4 +170,8 @@
            sensor/xqaccsensor_p.h \
            cxequalitypresets.h \
            cxefakequalitypresets.h \
-           cxequalitypresetssymbian.h
+           cxequalitypresetssymbian.h \
+           cxediskmonitor.h \
+           cxediskmonitorprivate.h \
+           cxememorymonitor.h \
+           cxememorymonitorprivate.h
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeerrormappersymbian/unittest_cxeerrormappersymbian.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeerrormappersymbian/unittest_cxeerrormappersymbian.pro	Thu May 13 21:30:19 2010 +0300
@@ -8,11 +8,14 @@
 # Nokia Corporation - initial contribution.
 # Contributors:
 # Description:
+
 include(../unittest.pri)
+
 TARGET = unittest_cxeerrormappersymbian
 
-SOURCES += unittest_cxeerrormappersymbian.cpp \
+SOURCES *= unittest_cxeerrormappersymbian.cpp \
     cxeerrormappingsymbian.cpp
-HEADERS += unittest_cxeerrormappersymbian.h \
+
+HEADERS *= unittest_cxeerrormappersymbian.h \
     cxeerrormappingsymbian.h \
     cxeerror.h
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxefeaturemanagerimp/unittest_cxefeaturemanagerimp.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxefeaturemanagerimp/unittest_cxefeaturemanagerimp.pro	Thu May 13 21:30:19 2010 +0300
@@ -8,13 +8,15 @@
 # Nokia Corporation - initial contribution.
 # Contributors:
 # Description:
+
 include(../unittest.pri)
+
 TARGET = unittest_cxefeaturemanagerimp
 
-SOURCES += unittest_cxefeaturemanagerimp.cpp \
+SOURCES *= unittest_cxefeaturemanagerimp.cpp \
            cxefeaturemanagerimp.cpp \
            cxefakesettingsmodel.cpp
-HEADERS += unittest_cxefeaturemanagerimp.h \
+HEADERS *= unittest_cxefeaturemanagerimp.h \
            cxefeaturemanagerimp.h \
            cxefakesettingsmodel.h \
            cxeerror.h
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxefilenamegeneratorsymbian/unittest_cxefilenamegeneratorsymbian.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxefilenamegeneratorsymbian/unittest_cxefilenamegeneratorsymbian.pro	Thu May 13 21:30:19 2010 +0300
@@ -18,17 +18,18 @@
 
 TARGET = unittest_cxefilenamegeneratorsymbian
 
-LIBS += -lplatformenv
+LIBS *= -lplatformenv
+LIBS *= -lsysutil
 
-SOURCES += unittest_cxefilenamegeneratorsymbian.cpp \
+SOURCES *= unittest_cxefilenamegeneratorsymbian.cpp \
            cxefakesettings.cpp \
+           cxesysutil.cpp \
            cxeerrormappingsymbian.cpp \
-           cxefilenamegeneratorsymbian.cpp \
-           cxesysutil.cpp
+           cxefilenamegeneratorsymbian.cpp
 
-HEADERS += unittest_cxefilenamegeneratorsymbian.h \
+HEADERS *= unittest_cxefilenamegeneratorsymbian.h \
            cxefakesettings.h \
-           cxesettings.h \
-           cxesysutil.h
+           cxesysutil.h \
+           cxesettings.h
 
 
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxefilesavethreadsymbian/unittest_cxefilesavethreadsymbian.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxefilesavethreadsymbian/unittest_cxefilesavethreadsymbian.pro	Thu May 13 21:30:19 2010 +0300
@@ -10,18 +10,20 @@
 # Description:
 
 # This unit test doesn't want to include system include path of real xqsettingsmanager api
-CONFIG += cxeunit_no_system_paths
+CONFIG *= cxeunit_no_system_paths
 
 include(../unittest.pri)
 
-INCLUDEPATH += ../system_include
-DEPENDPATH  += ../system_include
+INCLUDEPATH *= ../system_include
+DEPENDPATH  *= ../system_include
 
 TARGET = unittest_cxefilesavethreadsymbian
 
-LIBS += -lsysutil
+LIBS *= -lsysutil
+LIBS *= -lplatformenv
 
-SOURCES += unittest_cxefilesavethreadsymbian.cpp \
+
+SOURCES *= unittest_cxefilesavethreadsymbian.cpp \
            thumbnailmanager_qt.cpp \
            harvesterclient.cpp \
            cxefilesavethread.cpp \
@@ -36,7 +38,7 @@
            cxestate.cpp \
            cxeerrormappingsymbian.cpp
 
-HEADERS += unittest_cxefilesavethreadsymbian.h \
+HEADERS *= unittest_cxefilesavethreadsymbian.h \
            thumbnailmanager_qt.h \
            harvesterclient.h \
            cxefilesavethread.h \
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeharvestercontrolsymbian/unittest_cxeharvestercontrolsymbian.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeharvestercontrolsymbian/unittest_cxeharvestercontrolsymbian.pro	Thu May 13 21:30:19 2010 +0300
@@ -9,22 +9,22 @@
 # Contributors:
 # Description:
 
-CONFIG += cxeunit_no_system_paths
+CONFIG *= cxeunit_no_system_paths
 
 include(../unittest.pri)
 
 TARGET = unittest_cxeharvestercontrolsymbian
 
-INCLUDEPATH += ../system_include
-DEPENDPATH  += ../system_include
+INCLUDEPATH *= ../system_include
+DEPENDPATH  *= ../system_include
 
-HEADERS += unittest_cxeharvestercontrolsymbian.h \
+HEADERS *= unittest_cxeharvestercontrolsymbian.h \
            cxeerrormappingsymbian.h \
            cxeharvestercontrolsymbian.h \
            harvesterclient.h \
            cxutils.h
 
-SOURCES += unittest_cxeharvestercontrolsymbian.cpp \
+SOURCES *= unittest_cxeharvestercontrolsymbian.cpp \
            cxeerrormappingsymbian.cpp \
            harvesterclient.cpp \
            cxeharvestercontrolsymbian.cpp
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeimagedataitemsymbian/unittest_cxeimagedataitemsymbian.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeimagedataitemsymbian/unittest_cxeimagedataitemsymbian.pro	Thu May 13 21:30:19 2010 +0300
@@ -18,16 +18,16 @@
 
 TARGET = unittest_cxeimagedataitemsymbian
 
-LIBS += -lplatformenv
-LIBS += -lsysutil
-LIBS += -lbitgdi
-LIBS += -lws32
-LIBS += -lsysutil
-LIBS += -lecom
-LIBS += -lecampluginsupport
+LIBS *= -lplatformenv
+LIBS *= -lsysutil
+LIBS *= -lbitgdi
+LIBS *= -lws32
+LIBS *= -lsysutil
+LIBS *= -lecom
+LIBS *= -lecampluginsupport
 
 
-SOURCES += cxeimagedataitemsymbian.cpp \
+SOURCES *= cxeimagedataitemsymbian.cpp \
            cxeerrormappingsymbian.cpp \
            cxestatemachine.cpp \
            cxestate.cpp \
@@ -39,7 +39,7 @@
 		   cxefakesysutil.cpp  
 
 
-HEADERS += cxeimagedataitemsymbian.h \
+HEADERS *= cxeimagedataitemsymbian.h \
            cxestatemachine.h \
            cxestatemachinebase.h \
            cxestate.h \
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeimagedataqueuesymbian/unittest_cxeimagedataqueuesymbian.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeimagedataqueuesymbian/unittest_cxeimagedataqueuesymbian.pro	Thu May 13 21:30:19 2010 +0300
@@ -12,10 +12,12 @@
 include(../unittest.pri)
 
 TARGET = unittest_cxeimagedataqueuesymbian
-LIBS += -lsysutil
 
-SOURCES += unittest_cxeimagedataqueuesymbian.cpp \
-           cxeimagedataqueuesymbian.cpp \           
+LIBS *= -lsysutil
+LIBS *= -lplatformenv
+
+SOURCES *= unittest_cxeimagedataqueuesymbian.cpp \
+           cxeimagedataqueuesymbian.cpp \
            cxeimagedataqueueunit.cpp \
            cxeimagedataitemsymbian.cpp \
            cxefakeimagedataitem.cpp \
@@ -24,8 +26,8 @@
            cxestatemachinebase.cpp \
            cxeerrormappingsymbian.cpp \
            cxesysutil.cpp
-           
-HEADERS += unittest_cxeimagedataqueuesymbian.h \
+
+HEADERS *= unittest_cxeimagedataqueuesymbian.h \
            cxeimagedataqueue.h \
            cxeimagedataqueuesymbian.h \
            cxeimagedataqueueunit.h \
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxequalitypresetssymbian/unittest_cxequalitypresetssymbian.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxequalitypresetssymbian/unittest_cxequalitypresetssymbian.pro	Thu May 13 21:30:19 2010 +0300
@@ -14,7 +14,7 @@
 TARGET = unittest_cxequalitypresetssymbian
 
 
-HEADERS += unittest_cxequalitypresetssymbian.h \
+HEADERS *= unittest_cxequalitypresetssymbian.h \
            cxequalitypresetssymbian.h \
            imagingconfigmanager.h \
            cxenamespace.h \
@@ -22,7 +22,7 @@
            cxefakesettings.h \
            cxequalitydetails.h
 
-SOURCES += unittest_cxequalitypresetssymbian.cpp \
+SOURCES *= unittest_cxequalitypresetssymbian.cpp \
            cxequalitypresetssymbian.cpp \
            imagingconfigmanager.cpp \
            cxefakesettings.cpp
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettingscenrepstore/unittest_cxesettingscenrepstore.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettingscenrepstore/unittest_cxesettingscenrepstore.cpp	Thu May 13 21:30:19 2010 +0300
@@ -127,7 +127,7 @@
     keys.append(CxeRuntimeKeys::PRIMARY_CAMERA_CAPTURE_KEYS);
     keys.append(CxeRuntimeKeys::PRIMARY_CAMERA_AUTOFOCUS_KEYS);
     keys.append(CxeRuntimeKeys::SECONDARY_CAMERA_CAPTURE_KEYS);
-    keys.append(CxeRuntimeKeys::CONTRAST_ITEMS);
+    keys.append(CxeRuntimeKeys::FREE_MEMORY_LEVELS);
     QHash<QString, QVariantList> runtimesettings =  mSettingsCenrepStore->loadRuntimeSettings(keys);
     
     foreach(QString runtimekey, keys) {
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettingscenrepstore/unittest_cxesettingscenrepstore.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettingscenrepstore/unittest_cxesettingscenrepstore.pro	Thu May 13 21:30:19 2010 +0300
@@ -14,12 +14,12 @@
 
 TARGET = unittest_cxesettingscenrepstore
 
-LIBS += -lxqsettingsmanager
+LIBS *= -lxqsettingsmanager
 
-SOURCES += unittest_cxesettingscenrepstore.cpp \
+SOURCES *= unittest_cxesettingscenrepstore.cpp \
            cxesettingscenrepstore.cpp
 
-HEADERS += unittest_cxesettingscenrepstore.h \
+HEADERS *= unittest_cxesettingscenrepstore.h \
            cxutils.h \
            cxeerror.h \
            cxenamespace.h \
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettingscontrolsymbian/unittest_cxesettingscontrolsymbian.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettingscontrolsymbian/unittest_cxesettingscontrolsymbian.pro	Thu May 13 21:30:19 2010 +0300
@@ -11,20 +11,19 @@
 
 include(../unittest.pri)
 
-DEFINES += CXE_USE_DUMMY_CAMERA
-DEFINES = $$unique(DEFINES)
+DEFINES *= CXE_USE_DUMMY_CAMERA
 
 TARGET  = unittest_cxesettingscontrolsymbian
 
-LIBS    += -lbitgdi
-LIBS    += -lfbscli
-LIBS    += -lecam
-LIBS    += -lecamadvsettings
-LIBS    += -lecamsnapshot
-LIBS    += -lecamdirectviewfinder
-LIBS    += -lecampluginsupport
+LIBS    *= -lbitgdi
+LIBS    *= -lfbscli
+LIBS    *= -lecam
+LIBS    *= -lecamadvsettings
+LIBS    *= -lecamsnapshot
+LIBS    *= -lecamdirectviewfinder
+LIBS    *= -lecampluginsupport
 
-HEADERS += unittest_cxesettingscontrolsymbian.h \
+HEADERS *= unittest_cxesettingscontrolsymbian.h \
            cxesettingscontrolsymbian.h \
            cxesettings.h \
            cxefakesettings.h \
@@ -36,7 +35,7 @@
            cxeerrormappingsymbian.h \
            cxedummycamera.h
 
-SOURCES += unittest_cxesettingscontrolsymbian.cpp \
+SOURCES *= unittest_cxesettingscontrolsymbian.cpp \
            cxesettingscontrolsymbian.cpp \
            cxefakesettings.cpp \
            cxecameradevice.cpp \
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettingsimp/unittest_cxesettingsimp.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettingsimp/unittest_cxesettingsimp.cpp	Thu May 13 21:30:19 2010 +0300
@@ -172,11 +172,6 @@
     mSettingsModel->getSettingValue(CxeSettingIds::IMAGE_SCENE_AUTO, testValue);
     QCOMPARE(stringValue, QString(testValue.toString()));
 
-    err = mSettingsImp->get(CxeSettingIds::IMAGE_SCENE_CLOSEUP, stringValue);
-    QCOMPARE(err, CxeError::None);
-    mSettingsModel->getSettingValue(CxeSettingIds::IMAGE_SCENE_CLOSEUP, testValue);
-    QCOMPARE(stringValue, QString(testValue.toString()));
-
     err = mSettingsImp->get(CxeSettingIds::IMAGE_SCENE_MACRO, stringValue);
     QCOMPARE(err, CxeError::None);
     mSettingsModel->getSettingValue(CxeSettingIds::IMAGE_SCENE_MACRO, testValue);
@@ -427,11 +422,6 @@
     mSettingsModel->getSettingValue(CxeSettingIds::IMAGE_SCENE_AUTO, checkValue);
     QCOMPARE(int(checkValue.toInt()), range);
 
-    error = mSettingsImp->set(CxeSettingIds::IMAGE_SCENE_CLOSEUP,  range);
-    QCOMPARE(error, CxeError::None);
-    mSettingsModel->getSettingValue(CxeSettingIds::IMAGE_SCENE_CLOSEUP, checkValue);
-    QCOMPARE(int(checkValue.toInt()), range);
-
     error = mSettingsImp->set(CxeSettingIds::IMAGE_SCENE_MACRO,  range);
     QCOMPARE(error, CxeError::None);
     mSettingsModel->getSettingValue(CxeSettingIds::IMAGE_SCENE_MACRO, checkValue);
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettingsimp/unittest_cxesettingsimp.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettingsimp/unittest_cxesettingsimp.pro	Thu May 13 21:30:19 2010 +0300
@@ -8,9 +8,12 @@
 # Nokia Corporation - initial contribution.
 # Contributors:
 # Description:
+
 include(../unittest.pri)
+
 TARGET = unittest_cxesettingsimp
-HEADERS += unittest_cxesettingsimp.h \
+
+HEADERS *= unittest_cxesettingsimp.h \
     cxefakesettingsmodel.h \
     cxesettings.h \
     cxesettingsimp.h \
@@ -18,7 +21,8 @@
     cxenamespace.h \
     cxeerror.h \
     cxesettingsmodel.h
-SOURCES += unittest_cxesettingsimp.cpp \
+
+SOURCES *= unittest_cxesettingsimp.cpp \
     cxesettingsimp.cpp \
     cxefakesettingsmodel.cpp
-    
\ No newline at end of file
+
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettingsmodelimp/unittest_cxesettingsmodelimp.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettingsmodelimp/unittest_cxesettingsmodelimp.pro	Thu May 13 21:30:19 2010 +0300
@@ -8,12 +8,16 @@
 # Nokia Corporation - initial contribution.
 # Contributors:
 # Description:
+
 include(../unittest.pri)
+
 TARGET = unittest_cxesettingsmodelimp
-SOURCES += unittest_cxesettingsmodelimp.cpp \
+
+SOURCES *= unittest_cxesettingsmodelimp.cpp \
     cxesettingsmodelimp.cpp \
 	cxefakesettingsstore.cpp
-HEADERS += unittest_cxesettingsmodelimp.h \
+
+HEADERS *= unittest_cxesettingsmodelimp.h \
     cxesettingsmodel.h \
     cxesettingsmodelimp.h \
     cxeerror.h \
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettmappersymbian/unittest_cxesettmappersymbian.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxesettmappersymbian/unittest_cxesettmappersymbian.pro	Thu May 13 21:30:19 2010 +0300
@@ -8,11 +8,16 @@
 # Nokia Corporation - initial contribution.
 # Contributors:
 # Description:
+
 include(../unittest.pri)
+
 TARGET = unittest_cxesettmappersymbian
-LIBS += -lplatformenv
-SOURCES += unittest_cxesettingsmappersymbian.cpp \
+
+LIBS *= -lplatformenv
+
+SOURCES *= unittest_cxesettingsmappersymbian.cpp \
     cxesettingsmappersymbian.cpp
-HEADERS += unittest_cxesettingsmappersymbian.h \
+
+HEADERS *= unittest_cxesettingsmappersymbian.h \
     cxesettingsmappersymbian.h \
     cxesettings.h
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxestate/unittest_cxestate.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxestate/unittest_cxestate.pro	Thu May 13 21:30:19 2010 +0300
@@ -8,10 +8,15 @@
 # Nokia Corporation - initial contribution.
 # Contributors:
 # Description:
+
 include(../unittest.pri)
+
 TARGET = unittest_cxestate
-LIBS += -lplatformenv
-SOURCES += unittest_cxestate.cpp \
+
+LIBS *= -lplatformenv
+
+SOURCES *= unittest_cxestate.cpp \
             cxestate.cpp
-HEADERS += unittest_cxestate.h \
+
+HEADERS *= unittest_cxestate.h \
             cxestate.h
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxestatemachine/unittest_cxestatemachine.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxestatemachine/unittest_cxestatemachine.pro	Thu May 13 21:30:19 2010 +0300
@@ -8,15 +8,20 @@
 # Nokia Corporation - initial contribution.
 # Contributors:
 # Description:
+
 include(../unittest.pri)
+
 TARGET = unittest_cxestatemachine
-LIBS += -lplatformenv
-SOURCES += unittest_cxestatemachine.cpp \
+
+LIBS *= -lplatformenv
+
+SOURCES *= unittest_cxestatemachine.cpp \
             cxestatemachineunit.cpp \
             cxestatemachinebase.cpp \
             cxeerrormappingsymbian.cpp \
             cxestate.cpp
-HEADERS += unittest_cxestatemachine.h \
+
+HEADERS *= unittest_cxestatemachine.h \
             cxestatemachineunit.h \
             cxestatemachinebase.h \
             cxeerrormappingsymbian.h \
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxestillcapturecontrolsymbian/unittest_cxestillcapturecontrolsymbian.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxestillcapturecontrolsymbian/unittest_cxestillcapturecontrolsymbian.cpp	Thu May 13 21:30:19 2010 +0300
@@ -36,6 +36,7 @@
 #include "cxefakesettings.h"
 #include "cxefakequalitypresets.h"
 #include "cxefakefilesavethread.h"
+#include "cxediskmonitor.h"
 
 UnitTestCxeStillCaptureControlSymbian::UnitTestCxeStillCaptureControlSymbian()
     : mFakeCameraDeviceControl(0)
@@ -70,6 +71,9 @@
     mFakeAutoFocusControl = new CxeFakeAutoFocusControl();
     mFakeQualityPresets = new CxeFakeQualityPresets();
     mFakeFileSaveThread = new CxeFakeFileSaveThread();
+    
+    mDiskMonitor = new CxeDiskMonitor(*mFakeSettings);
+
 
     mStillCaptureControl = new CxeStillCaptureControlSymbian(
             *mFakeCameraDevice,
@@ -80,7 +84,8 @@
             *mFakeAutoFocusControl,
             *mFakeSettings,
             *mFakeQualityPresets,
-            *mFakeFileSaveThread);
+            *mFakeFileSaveThread,
+            *mDiskMonitor);
 
     // init supported qualities.
     mStillCaptureControl->supportedImageQualities();
@@ -111,6 +116,8 @@
     mSpyState = 0;
     delete mFakeQualityPresets;
     mFakeQualityPresets = 0;
+    delete mDiskMonitor;
+    mDiskMonitor = 0;
     delete mFakeFileSaveThread;
     mFakeFileSaveThread = 0;
 }
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxestillcapturecontrolsymbian/unittest_cxestillcapturecontrolsymbian.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxestillcapturecontrolsymbian/unittest_cxestillcapturecontrolsymbian.h	Thu May 13 21:30:19 2010 +0300
@@ -36,6 +36,7 @@
 class CxeFakeSettings;
 class CxeFakeQualityPresets;
 class CxeFakeFileSaveThread;
+class CxeDiskMonitor;
 
 class UnitTestCxeStillCaptureControlSymbian : public QObject
 {
@@ -75,6 +76,7 @@
     QSignalSpy *mSpyState;
     CxeFakeQualityPresets *mFakeQualityPresets;
     CxeFakeFileSaveThread *mFakeFileSaveThread;
+    CxeDiskMonitor *mDiskMonitor;
 };
 
 #endif // UNITTEST_CXESTILLCAPTURECONTROLSYMBIAN_H
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxestillcapturecontrolsymbian/unittest_cxestillcapturecontrolsymbian.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxestillcapturecontrolsymbian/unittest_cxestillcapturecontrolsymbian.pro	Thu May 13 21:30:19 2010 +0300
@@ -10,30 +10,30 @@
 # Description:
 
 include(../unittest.pri)
+
 TARGET = unittest_cxestillcapturecontrolsymbian
 
-LIBS += -lecamadvsettings
-LIBS += -lecamsnapshot
-LIBS += -lecamdirectviewfinder
-LIBS += -lfbscli
-LIBS += -lbitgdi
-LIBS += -lsysutil
-LIBS += -lbafl
-LIBS += -lmediaclientaudio
-LIBS += -lecom
-LIBS += -lecam
-LIBS += -lecamsnapshot
-LIBS += -lecampluginsupport
-LIBS += -lmmfcontrollerframework
-LIBS += -lxqsettingsmanager
-LIBS += -lsensrvclient
-LIBS += -lsensrvutil
-LIBS += -lplatformenv
+LIBS *= -lecamadvsettings
+LIBS *= -lecamsnapshot
+LIBS *= -lecamdirectviewfinder
+LIBS *= -lfbscli
+LIBS *= -lbitgdi
+LIBS *= -lsysutil
+LIBS *= -lbafl
+LIBS *= -lmediaclientaudio
+LIBS *= -lecom
+LIBS *= -lecam
+LIBS *= -lecamsnapshot
+LIBS *= -lecampluginsupport
+LIBS *= -lmmfcontrollerframework
+LIBS *= -lxqsettingsmanager
+LIBS *= -lsensrvclient
+LIBS *= -lsensrvutil
+LIBS *= -lplatformenv
 
-DEFINES += CXE_USE_DUMMY_CAMERA
-DEFINES = $$unique(DEFINES)
+DEFINES *= CXE_USE_DUMMY_CAMERA
 
-SOURCES += unittest_cxestillcapturecontrolsymbian.cpp \
+SOURCES *= unittest_cxestillcapturecontrolsymbian.cpp \
     cxestillcapturecontrolsymbian.cpp \
     cxestatemachine.cpp \
     cxestate.cpp \
@@ -66,9 +66,11 @@
     cxefakeautofocuscontrol.cpp \
     cxefakesettings.cpp \
     cxefilesavethread.cpp \
+    cxediskmonitor.cpp \
+    cxediskmonitorprivate.cpp \
     cxefakefilesavethread.cpp
 
-HEADERS += unittest_cxestillcapturecontrolsymbian.h \
+HEADERS *= unittest_cxestillcapturecontrolsymbian.h \
     cxestillcapturecontrolsymbian.h \
     cxestate.h \
     cxestatemachine.h \
@@ -84,6 +86,7 @@
     cxutils.h \
     cxeimagedataitem.h \
     cxeimagedataitemsymbian.h \
+    cxeimagedataqueue.h \
     cxeimagedataqueuesymbian.h \
     cxestillcapturecontrol.h \
     cxefakefilenamegenerator.h \
@@ -91,9 +94,6 @@
     cxestillimagesymbian.h \
     cxesensoreventhandler.h \
     cxesensoreventhandlersymbian.h \
-    cxeimagedataqueue.h \
-    cxeimagedataitem.h \
-    cxeimagedataitemsymbian.h \
     sensor/xqdeviceorientation.h \
     sensor/xqdeviceorientation_p.h \
     sensor/xqaccsensor.h \
@@ -114,4 +114,6 @@
     cxefakequalitypresets.h \
     cxefakefilesavethread.h \
     cxefilesavethread.h \
+    cxediskmonitor.h \
+    cxediskmonitorprivate.h \
     cxequalitypresets.h
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxestillimagesymbian/unittest_cxestillimagesymbian.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxestillimagesymbian/unittest_cxestillimagesymbian.pro	Thu May 13 21:30:19 2010 +0300
@@ -8,11 +8,15 @@
 # Nokia Corporation - initial contribution.
 # Contributors:
 # Description:
+
 include(../unittest.pri)
+
 TARGET = unittest_cxestillimagesymbian
-LIBS += -lplatformenv
-LIBS += -lsysutil
-SOURCES += unittest_cxestillimagesymbian.cpp \
+
+LIBS *= -lplatformenv
+LIBS *= -lsysutil
+
+SOURCES *= unittest_cxestillimagesymbian.cpp \
     cxeimagedataitemsymbian.cpp \
     cxestatemachine.cpp \
     cxestatemachinebase.cpp \
@@ -20,7 +24,8 @@
     cxeerrormappingsymbian.cpp \
     cxestillimagesymbian.cpp \
     cxesysutil.cpp
-HEADERS += unittest_cxestillimagesymbian.h \
+
+HEADERS *= unittest_cxestillimagesymbian.h \
     cxestillimagesymbian.h \
     cxeimagedataitemsymbian.h \
     cxeimagedataitem.h \
@@ -30,4 +35,4 @@
     cxeerrormappingsymbian.h \
     cxutils.h \
     cxesysutil.h
-    
\ No newline at end of file
+
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxetestutils/unittest_cxetestutils.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxetestutils/unittest_cxetestutils.pro	Thu May 13 21:30:19 2010 +0300
@@ -13,14 +13,14 @@
 
 TARGET = unittest_cxetestutils
 
-SOURCES += unittest_cxetestutils.cpp \
+SOURCES *= unittest_cxetestutils.cpp \
            cxedummystatemachine.cpp \
            cxestatemachine.cpp \
            cxestate.cpp \
            cxestatemachinebase.cpp \
            cxeerrormappingsymbian.cpp
 
-HEADERS += unittest_cxetestutils.h \
+HEADERS *= unittest_cxetestutils.h \
            cxedummystatemachine.h \
            cxestatemachine.h \
            cxestate.h \
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxethumbnailmanagersymbian/unittest_cxethumbnailmanagersymbian.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxethumbnailmanagersymbian/unittest_cxethumbnailmanagersymbian.pro	Thu May 13 21:30:19 2010 +0300
@@ -9,20 +9,20 @@
 # Contributors:
 # Description:
 
-CONFIG += cxeunit_no_system_paths
+CONFIG *= cxeunit_no_system_paths
 
 include(../unittest.pri)
 
 TARGET = unittest_cxethumbnailmanagersymbian
 
-INCLUDEPATH += ../system_include
-DEPENDPATH  += ../system_include
+INCLUDEPATH *= ../system_include
+DEPENDPATH  *= ../system_include
 
-HEADERS += unittest_cxethumbnailmanagersymbian.h \
+HEADERS *= unittest_cxethumbnailmanagersymbian.h \
            cxethumbnailmanagersymbian.h \
            thumbnailmanager_qt.h \
            cxutils.h
 
-SOURCES += unittest_cxethumbnailmanagersymbian.cpp \
+SOURCES *= unittest_cxethumbnailmanagersymbian.cpp \
            thumbnailmanager_qt.cpp \
            cxethumbnailmanagersymbian.cpp
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxevideocapturecontrolsymbian/cxevideocapturecontrolsymbianunit.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxevideocapturecontrolsymbian/cxevideocapturecontrolsymbianunit.cpp	Thu May 13 21:30:19 2010 +0300
@@ -21,6 +21,7 @@
 #include "cxevideocapturecontrolsymbianunit.h"
 #include "cxefakeVideorecorderutility.h"
 #include "cxutils.h"
+#include "cxediskmonitor.h"
 
 CxeVideoCaptureControlSymbianUnit::CxeVideoCaptureControlSymbianUnit( 
                                    CxeCameraDevice &cameraDevice,
@@ -28,10 +29,11 @@
                                    CxeCameraDeviceControl &cameraDeviceControl,
                                    CxeFilenameGenerator &nameGenerator,
                                    CxeSettings &settings,
-                                   CxeQualityPresets &qualityPresets)
+                                   CxeQualityPresets &qualityPresets,
+                                   CxeDiskMonitor &diskMonitor)
     : CxeVideoCaptureControlSymbian(cameraDevice, viewfinderControl, 
                                     cameraDeviceControl, nameGenerator,
-                                    settings, qualityPresets)
+                                    settings, qualityPresets, diskMonitor)
 {
     CX_DEBUG_IN_FUNCTION();
 }
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxevideocapturecontrolsymbian/cxevideocapturecontrolsymbianunit.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxevideocapturecontrolsymbian/cxevideocapturecontrolsymbianunit.h	Thu May 13 21:30:19 2010 +0300
@@ -37,7 +37,8 @@
                                    CxeCameraDeviceControl &cameraDeviceControl,
                                    CxeFilenameGenerator &nameGenerator,
                                    CxeSettings &settings,
-                                   CxeQualityPresets &qualityPresets);
+                                   CxeQualityPresets &qualityPresets,
+                                   CxeDiskMonitor &diskMonitor);
     virtual ~CxeVideoCaptureControlSymbianUnit();
     void createVideoRecorder();
 
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxevideocapturecontrolsymbian/unittest_cxevideocapturecontrolsymbian.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxevideocapturecontrolsymbian/unittest_cxevideocapturecontrolsymbian.cpp	Thu May 13 21:30:19 2010 +0300
@@ -29,6 +29,8 @@
 #include "cxefakequalitypresets.h"
 #include "cxefakesettings.h"
 #include "cxutils.h"
+#include "cxediskmonitor.h"
+
 
 // Enums
 
@@ -68,12 +70,14 @@
     mFilenameGeneratorSymbian = new CxeFakeFilenameGenerator();
     mFilenameGeneratorSymbian->init(Cxe::VideoMode);
     mFakeQualityPresets = new CxeFakeQualityPresets();
+    mDiskMonitor = new CxeDiskMonitor(*mSettings);
     mCxeVideoCaptureControlSymbian = new CxeVideoCaptureControlSymbianUnit(*mCameraDevice,
                                                                        *mViewfinderControl,
                                                                        *mCameraDeviceControl,
                                                                        *mFilenameGeneratorSymbian,
                                                                        *mSettings,
-                                                                       *mFakeQualityPresets);
+                                                                       *mFakeQualityPresets,
+                                                                       *mDiskMonitor);
     mCameraDevice->newCamera(mCameraDeviceControl->cameraIndex(), mCameraDeviceControl);
 
     mSpyState = new QSignalSpy(mCxeVideoCaptureControlSymbian,
@@ -104,6 +108,8 @@
     mCameraDevice = 0;
     delete mFakeQualityPresets;
     mFakeQualityPresets = 0;
+    delete mDiskMonitor;
+    mDiskMonitor = 0;
     delete mSettings;
     mSettings = 0;
     delete mSpyState;
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxevideocapturecontrolsymbian/unittest_cxevideocapturecontrolsymbian.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxevideocapturecontrolsymbian/unittest_cxevideocapturecontrolsymbian.h	Thu May 13 21:30:19 2010 +0300
@@ -28,6 +28,7 @@
 class CxeFakeFilenameGenerator;
 class QSignalSpy;
 class CxeFakeQualityPresets;
+class CxeDiskMonitor;
 
 class UnitTestCxeVideoCaptureControlSymbian : public QObject
 {
@@ -74,6 +75,7 @@
     CxeFakeFilenameGenerator *mFilenameGeneratorSymbian;
     QSignalSpy *mSpyState;
     CxeFakeQualityPresets *mFakeQualityPresets;
+    CxeDiskMonitor *mDiskMonitor;
 };
 
 #endif // UNITTEST_CXESTILLIMAGESYMBIAN_H
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxevideocapturecontrolsymbian/unittest_cxevideocapturecontrolsymbian.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxevideocapturecontrolsymbian/unittest_cxevideocapturecontrolsymbian.pro	Thu May 13 21:30:19 2010 +0300
@@ -8,26 +8,28 @@
 # Nokia Corporation - initial contribution.
 # Contributors:
 # Description:
+
 include(../unittest.pri)
+
 TARGET = unittest_cxevideocapturecontrolsymbian
 
-LIBS += -lecamadvsettings
-LIBS += -lecam
-LIBS += -lecampluginsupport
-LIBS += -lfbscli
-LIBS += -lbitgdi
-LIBS += -lecamdirectviewfinder
-LIBS += -lecamsnapshot
-
-LIBS += -lmediaclientvideo
-LIBS += -lmediaclientaudio
-LIBS += -lmmfcontrollerframework
-LIBS += -lplatformenv
+LIBS *= -lecamadvsettings
+LIBS *= -lecam
+LIBS *= -lecampluginsupport
+LIBS *= -lfbscli
+LIBS *= -lbitgdi
+LIBS *= -lecamdirectviewfinder
+LIBS *= -lecamsnapshot
+LIBS *= -lmediaclientvideo
+LIBS *= -lmediaclientaudio
+LIBS *= -lmmfcontrollerframework
+LIBS *= -lplatformenv
+LIBS *= -lsysutil
 
 
-DEFINES += CXE_USE_DUMMY_CAMERA
-DEFINES = $$unique(DEFINES)
-SOURCES += unittest_cxevideocapturecontrolsymbian.cpp \
+DEFINES *= CXE_USE_DUMMY_CAMERA
+
+SOURCES *= unittest_cxevideocapturecontrolsymbian.cpp \
     cxevideocapturecontrolsymbian.cpp \
     cxevideocapturecontrolsymbianunit.cpp \
     cxefakevideorecorderutility.cpp \
@@ -48,9 +50,11 @@
     cxesoundplayersymbian.cpp \
     cxeerrormappingsymbian.cpp \
     cxefakequalitypresets.cpp \
+    cxediskmonitor.cpp \
+    cxediskmonitorprivate.cpp \
     cxesysutil.cpp
 
-HEADERS += unittest_cxevideocapturecontrolsymbian.h \
+HEADERS *= unittest_cxevideocapturecontrolsymbian.h \
     cxevideocapturecontrolsymbian.h \
     cxevideocapturecontrolsymbianunit.h \
     cxevideorecorderutility.h \
@@ -63,6 +67,7 @@
     cxecameradevice.h \
     cxefakeviewfindercontrol.h \
     cxeviewfindercontrol.h \
+    cxecameradevicecontrol.h \
     cxefakecameradevicecontrol.h \
     cxesettingsimp.h \
     cxesettings.h \
@@ -72,9 +77,10 @@
     cxestate.h \
     cxeerrormappingsymbian.h \
     cxestatemachinebase.h \
-    cxecameradevicecontrol.h \
     cxesettingsmappersymbian.h \
     cxesoundplayersymbian.h \
+    cxefakequalitypresets.h \
     cxutils.h \
-    cxefakequalitypresets.h \
+    cxediskmonitor.h \
+    cxediskmonitorprivate.h \
     cxesysutil.h
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeviewfindercontrolsymbian/unittest_cxeviewfindercontrolsymbian.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxeviewfindercontrolsymbian/unittest_cxeviewfindercontrolsymbian.pro	Thu May 13 21:30:19 2010 +0300
@@ -8,23 +8,25 @@
 # Nokia Corporation - initial contribution.
 # Contributors:
 # Description:
+
 include(../unittest.pri)
+
 TARGET = unittest_cxeviewfindercontrolsymbian
-LIBS += -lecamadvsettings
-LIBS += -lecam
-LIBS += -lecamsnapshot
-LIBS += -lecampluginsupport
-LIBS += -lecamdirectviewfinder
-LIBS += -lfbscli
-LIBS += -lbitgdi
-LIBS += -lcone
-LIBS += -lalfclient
-LIBS += -lalfdecoderserverclient
 
-DEFINES += CXE_USE_DUMMY_CAMERA
-DEFINES = $$unique(DEFINES)
+LIBS *= -lecamadvsettings
+LIBS *= -lecam
+LIBS *= -lecamsnapshot
+LIBS *= -lecampluginsupport
+LIBS *= -lecamdirectviewfinder
+LIBS *= -lfbscli
+LIBS *= -lbitgdi
+LIBS *= -lcone
+LIBS *= -lalfclient
+LIBS *= -lalfdecoderserverclient
 
-SOURCES += unittest_cxeviewfindercontrolsymbian.cpp \
+DEFINES *= CXE_USE_DUMMY_CAMERA
+
+SOURCES *= unittest_cxeviewfindercontrolsymbian.cpp \
            cxeviewfindercontrolsymbian.cpp \
            cxestatemachine.cpp \
            cxestate.cpp \
@@ -38,7 +40,8 @@
            cxefakecameradevicecontrol.cpp \
            cxefakecontainer.cpp \
            cxevideocontainer.cpp
-HEADERS += unittest_cxeviewfindercontrolsymbian.h \
+
+HEADERS *= unittest_cxeviewfindercontrolsymbian.h \
            cxeviewfindercontrol.h \
            cxeviewfindercontrolsymbian.h \
            cxestatemachine.h \
--- a/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxezoomcontrolsymbian/unittest_cxezoomcontrolsymbian.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxezoomcontrolsymbian/unittest_cxezoomcontrolsymbian.pro	Thu May 13 21:30:19 2010 +0300
@@ -8,22 +8,21 @@
 # Nokia Corporation - initial contribution.
 # Contributors:
 # Description:
+
 include(../unittest.pri)
+
 TARGET = unittest_cxezoomcontrolsymbian
-#LIBS += -lplatformenv
 
-LIBS += -lecamsnapshot
-LIBS += -lecamadvsettings
-LIBS += -lecam
-LIBS += -lecampluginsupport
-LIBS += -lfbscli
-LIBS += -lbitgdi
+LIBS *= -lecamsnapshot
+LIBS *= -lecamadvsettings
+LIBS *= -lecam
+LIBS *= -lecampluginsupport
+LIBS *= -lfbscli
+LIBS *= -lbitgdi
 
-DEFINES += CXE_USE_DUMMY_CAMERA
-DEFINES = $$unique(DEFINES)
+DEFINES *= CXE_USE_DUMMY_CAMERA
 
-
-SOURCES += unittest_cxezoomcontrolsymbian.cpp \
+SOURCES *= unittest_cxezoomcontrolsymbian.cpp \
     cxezoomcontrolsymbian.cpp \
     cxestate.cpp \
     cxestatemachine.cpp \
@@ -38,7 +37,7 @@
     cxefakecameradevicecontrol.cpp \
     cxeerrormappingsymbian.cpp
 
-HEADERS += unittest_cxezoomcontrolsymbian.h \
+HEADERS *= unittest_cxezoomcontrolsymbian.h \
     cxezoomcontrolsymbian.h \
     cxezoomcontrol.h \
     cxestate.h \
--- a/camerauis/cameraxui/cxui/cxui.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/cxui.pro	Thu May 13 21:30:19 2010 +0300
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
 # This component and the accompanying materials are made available
 # under the terms of "Eclipse Public License v1.0"
@@ -26,13 +26,16 @@
     TARGET.EPOCHEAPSIZE = 0x020000 0x1000000
     ICON                = ./icons/cxui.svg
     RSS_RULES           = "group_name=\"Qt Camera\";"
+    # Fix for QMake translating INCLUDEPATH to SYSTEMINCLUDE
+    # and TraceCompiler needing USERINCLUDE.
+    MMP_RULES           += "USERINCLUDE traces"
 }
 
 DEPENDPATH += ../cxengine/inc/api
 VPATH += src \
     inc
 INCLUDEPATH += inc \
-               ../traces
+               traces
 
 LIBS += -lecam  \
     -lecamsnapshot \
@@ -44,10 +47,14 @@
     -lcommonui \
     -lxqsettingsmanager \
     -lxqutils \
-    -lalfclient \
     -lxqservice \
     -lxqserviceutil \
-    -lshareui
+    -lshareui \
+    -lcone \
+    -lefsrv \
+    -lws32 \
+    -lgdi \
+    -lapgrfx
 
 CONFIG += hb
 CONFIG += service
@@ -55,61 +62,71 @@
 SERVICE.FILE = cxui_service_conf.xml
 SERVICE.OPTIONS = embeddable
 
-HB += hbcore hbwidgets hbutils hbtools hbfeedback
+HB += hbcore hbwidgets hbfeedback hbutils
 
 # Input
-HEADERS += cxuiprecaptureview.h \
+HEADERS += cxuiapplication.h \
+    cxuiapplicationframeworkmonitor.h \
+    cxuiapplicationframeworkmonitorprivate.h \
+    cxuiprecaptureview.h \
     cxuistillprecaptureview.h \
-    cxuistillprecaptureview2.h \
     cxuivideoprecaptureview.h \
-    cxuivideoprecaptureview2.h \
     cxuipostcaptureview.h \
     cxestillcapturecontrol.h \
     cxuicapturekeyhandler.h \
     cxuiviewmanager.h \
-    ../traces/OstTraceDefinitions.h \
     cxuidocumentloader.h \
     cxuidisplaypropertyhandler.h \
     cxuisettingdialog.h \
-    cxuisettingbutton.h \
     cxuisettingslider.h \
     cxuiselftimer.h \
     cxuisettingradiobuttonlist.h \
     cxuiscenelabel.h \
-    cxuisettingbuttoncontainer.h \
     cxuierrormanager.h \
     cxuistandby.h \
     cxuisettingradiobuttonlistmodel.h \
     cxuisettingsinfo.h \
     cxuisettingxmlreader.h \
-    cxuiserviceprovider.h
+    cxuiserviceprovider.h \
+    cxuiscenemodeview.h \
+    cxuizoomslider.h \
+    traces/OstTraceDefinitions.h
 
 SOURCES += main.cpp \
+    cxuiapplication.cpp \
+    cxuiapplicationframeworkmonitor.cpp \
+    cxuiapplicationframeworkmonitorprivate.cpp \
     cxuiprecaptureview.cpp \
     cxuivideoprecaptureview.cpp \
-    cxuivideoprecaptureview2.cpp \
     cxuistillprecaptureview.cpp \
-    cxuistillprecaptureview2.cpp \
     cxuipostcaptureview.cpp \
     cxuicapturekeyhandler.cpp \
     cxuiviewmanager.cpp \
     cxuidocumentloader.cpp \
     cxuidisplaypropertyhandler.cpp \
     cxuisettingdialog.cpp \
-    cxuisettingbutton.cpp \
     cxuisettingslider.cpp \
     cxuiselftimer.cpp \
     cxuisettingradiobuttonlist.cpp \
     cxuiscenelabel.cpp \
-    cxuisettingbuttoncontainer.cpp \
     cxuierrormanager.cpp \
     cxuistandby.cpp \
     cxuisettingradiobuttonlistmodel.cpp \
     cxuisettingsinfo.cpp \
     cxuisettingxmlreader.cpp \
-    cxuiserviceprovider.cpp
-
+    cxuiserviceprovider.cpp \
+    cxuiscenemodeview.cpp \
+    cxuizoomslider.cpp
 
 RESOURCES += cxui.qrc
 
+# Variating internal and external icons for scene selection view
+SCENEICONDIR = ../internal/icons
+exists($$SCENEICONDIR) {
+    RESOURCES += cxuiinternalsceneimages.qrc
+}
+else {
+    RESOURCES += cxuiexternalsceneimages.qrc
+}
+
 TRANSLATIONS = camera.ts
--- a/camerauis/cameraxui/cxui/cxui.qrc	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/cxui.qrc	Thu May 13 21:30:19 2010 +0300
@@ -1,81 +1,11 @@
 <RCC>
     <qresource prefix="/camerax" >
-        <file alias="blackbg.png" >icons/blackbg.png</file>
-        <file alias="qgn_indi_cam4_antired.svg" >icons/qgn_indi_cam4_antired.svg</file>
-        <file alias="qgn_indi_cam4_autoflash.svg" >icons/qgn_indi_cam4_autoflash.svg</file>
-        <file alias="qgn_indi_cam4_camera.svg" >icons/qgn_indi_cam4_camera.svg</file>
-        <file alias="qgn_indi_cam4_camera_second.svg" >icons/qgn_indi_cam4_camera_second.svg</file>
-        <file alias="qgn_indi_cam4_colour.svg" >icons/qgn_indi_cam4_colour.svg</file>
-        <file alias="qgn_indi_cam4_colour_bw.svg" >icons/qgn_indi_cam4_colour_bw.svg</file>
-        <file alias="qgn_indi_cam4_colour_negative.svg" >icons/qgn_indi_cam4_colour_negative.svg</file>
-        <file alias="qgn_indi_cam4_colour_normal.svg" >icons/qgn_indi_cam4_colour_normal.svg</file>
-        <file alias="qgn_indi_cam4_colour_sepia.svg" >icons/qgn_indi_cam4_colour_sepia.svg</file>
-        <file alias="qgn_indi_cam4_colour_vivid.svg" >icons/qgn_indi_cam4_colour_vivid.svg</file>
-        <file alias="qgn_indi_cam4_contrast.svg" >icons/qgn_indi_cam4_contrast.svg</file>
-        <file alias="qgn_indi_cam4_exposure.svg" >icons/qgn_indi_cam4_exposure.svg</file>
-        <file alias="qgn_indi_cam4_flash_off.svg" >icons/qgn_indi_cam4_flash_off.svg</file>
-        <file alias="qgn_indi_cam4_flash_on.svg" >icons/qgn_indi_cam4_flash_on.svg</file>
-        <file alias="qgn_indi_cam4_goto_gallery.svg" >icons/qgn_indi_cam4_goto_gallery.svg</file>
-        <file alias="qgn_indi_cam4_gridviewer.svg" >icons/qgn_indi_cam4_gridviewer.svg</file>
-        <file alias="qgn_indi_cam4_iso.svg" >icons/qgn_indi_cam4_iso.svg</file>
-        <file alias="qgn_indi_cam4_iso_auto.svg" >icons/qgn_indi_cam4_iso_auto.svg</file>
-        <file alias="qgn_indi_cam4_iso_high.svg" >icons/qgn_indi_cam4_iso_high.svg</file>
-        <file alias="qgn_indi_cam4_iso_low.svg" >icons/qgn_indi_cam4_iso_low.svg</file>
-        <file alias="qgn_indi_cam4_iso_medium.svg" >icons/qgn_indi_cam4_iso_medium.svg</file>
-        <file alias="qgn_indi_cam4_light_off.svg" >icons/qgn_indi_cam4_light_off.svg</file>
-        <file alias="qgn_indi_cam4_light_on.svg" >icons/qgn_indi_cam4_light_on.svg</file>
-        <file alias="qgn_indi_cam4_mode_auto.svg" >icons/qgn_indi_cam4_mode_auto.svg</file>
-        <file alias="qgn_indi_cam4_mode_camera.svg" >icons/qgn_indi_cam4_mode_camera.svg</file>
-        <file alias="qgn_indi_cam4_mode_closeup.svg" >icons/qgn_indi_cam4_mode_closeup.svg</file>
-        <file alias="qgn_indi_cam4_mode_landscape.svg" >icons/qgn_indi_cam4_mode_landscape.svg</file>
-        <file alias="qgn_indi_cam4_mode_night.svg" >icons/qgn_indi_cam4_mode_night.svg</file>
-        <file alias="qgn_indi_cam4_mode_portrait.svg" >icons/qgn_indi_cam4_mode_portrait.svg</file>
-        <file alias="qgn_indi_cam4_mode_portrait_night.svg" >icons/qgn_indi_cam4_mode_portrait_night.svg</file>
-        <file alias="qgn_indi_cam4_mode_sport.svg" >icons/qgn_indi_cam4_mode_sport.svg</file>
-        <file alias="qgn_indi_cam4_selftimer.svg" >icons/qgn_indi_cam4_selftimer.svg</file>
-        <file alias="qgn_indi_cam4_sequence_burst.svg" >icons/qgn_indi_cam4_sequence_burst.svg</file>
-        <file alias="qgn_indi_cam4_sharpness.svg" >icons/qgn_indi_cam4_sharpness.svg</file>
-        <file alias="qgn_indi_cam4_tb_capture.svg" >icons/qgn_indi_cam4_tb_capture.svg</file>
-        <file alias="qgn_indi_cam4_tb_delete.svg" >icons/qgn_indi_cam4_tb_delete.svg</file>
-        <file alias="qgn_indi_cam4_tb_extension.svg" >icons/qgn_indi_cam4_tb_extension.svg</file>
-        <file alias="qgn_indi_cam4_tb_flash.svg" >icons/qgn_indi_cam4_tb_flash.svg</file>
-        <file alias="qgn_indi_cam4_tb_play.svg" >icons/qgn_indi_cam4_tb_play.svg</file>
-        <file alias="qgn_indi_cam4_tb_record.svg" >icons/qgn_indi_cam4_tb_record.svg</file>
-        <file alias="qgn_indi_cam4_tb_switch_still.svg" >icons/qgn_indi_cam4_tb_switch_still.svg</file>
-        <file alias="qgn_indi_cam4_tb_switch_video.svg" >icons/qgn_indi_cam4_tb_switch_video.svg</file>
-        <file alias="qgn_indi_cam4_tb_upload.svg" >icons/qgn_indi_cam4_tb_upload.svg</file>
-        <file alias="qgn_indi_cam4_wb.svg" >icons/qgn_indi_cam4_wb.svg</file>
-        <file alias="qgn_indi_cam4_wb_auto.svg" >icons/qgn_indi_cam4_wb_auto.svg</file>
-        <file alias="qgn_indi_cam4_wb_cloudy.svg" >icons/qgn_indi_cam4_wb_cloudy.svg</file>
-        <file alias="qgn_indi_cam4_wb_fluorescent.svg" >icons/qgn_indi_cam4_wb_fluorecent.svg</file>
-        <file alias="qgn_indi_cam4_wb_sunny.svg" >icons/qgn_indi_cam4_wb_sunny.svg</file>
-        <file alias="qgn_indi_cam4_wb_tungsten.svg" >icons/qgn_indi_cam4_wb_tungsten.svg</file>
-        <file alias="qgn_indi_cams_tb_rec_pause.svg" >icons/qgn_indi_cams_tb_rec_pause.svg</file>
-        <file alias="qgn_indi_cams_tb_rec_stop.svg" >icons/qgn_indi_cams_tb_rec_stop.svg</file>
-        <file alias="qgn_indi_tb_zoom.svg" >icons/qgn_indi_tb_zoom.svg</file>
-        <file alias="qgn_indi_vid4_video.svg" >icons/qgn_indi_vid4_video.svg</file>
-        <file alias="qgn_prop_vc_media_play.svg" >icons/qgn_prop_vc_media_play.svg</file>
-        <file alias="scene_automatic.png" >icons/scene_automatic.png</file>
-        <file alias="scene_landscape.png" >icons/scene_landscape.png</file>
-        <file alias="scene_lowlight.png" >icons/scene_lowlight.png</file>
-        <file alias="scene_macro.png" >icons/scene_macro.png</file>
-        <file alias="scene_night.png" >icons/scene_night.png</file>
-        <file alias="scene_nightportrait.png" >icons/scene_nightportrait.png</file>
-        <file alias="scene_portrait.png" >icons/scene_portrait.png</file>
-        <file alias="scene_sport.png" >icons/scene_sport.png</file>
-        <file alias="whitebg.png" >icons/whitebg.png</file>
-        <file alias="zoomin.svg" >icons/zoomin.svg</file>
-        <file alias="zoomout.svg" >icons/zoomout.svg</file>
-        <file alias="qtg_mono_tick.svg" >icons/qtg_mono_tick.svg</file>
     </qresource>
     <qresource prefix="/xml" >
-        <file alias="setting_still_scenemode.docml" >layouts/setting_still_scenemode.docml</file>
-        <file alias="setting_video_scenemode.docml" >layouts/setting_video_scenemode.docml</file>
+        <file alias="setting_scenemode.docml" >layouts/setting_scenemode.docml</file>
         <file alias="standbymode_popup.docml" >layouts/standbymode_popup.docml</file>
         <file alias="view_still_precapture.docml" >layouts/view_still_precapture.docml</file>
-        <file alias="view_still_precapture_secondary.docml" >layouts/view_still_precapture_secondary.docml</file>
         <file alias="view_video_precapture.docml" >layouts/view_video_precapture.docml</file>
-        <file alias="view_video_precapture_secondary.docml" >layouts/view_video_precapture_secondary.docml</file>
         <file alias="view_postcapture.docml" >layouts/view_postcapture.docml</file>
         <file alias="errornote_popup.docml" >layouts/errornote_popup.docml</file>
         <file alias="setting.docml" >layouts/setting.docml</file>
--- a/camerauis/cameraxui/cxui/cxui_service_conf.xml	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/cxui_service_conf.xml	Thu May 13 21:30:19 2010 +0300
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
-<service name="Camera"  filepath="must-not-be-empty" >
+<service name="cxui"  filepath="must-not-be-empty" >
   <description>Camera Service for taking pictures and videos</description>
-  <interface name="com.nokia.ICaptureNew" version="1.0" capabilities="">
+  <interface name="com.nokia.symbian.ICameraCapture" version="1.0" capabilities="">
      <description>Camera interface</description>
   </interface>
 </service>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/cxuiexternalsceneimages.qrc	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,12 @@
+<RCC>
+    <qresource prefix="/camerax" >
+        <file alias="scene_automatic.png">icons/scene_automatic.png</file>
+        <file alias="scene_close-up.png">icons/scene_close-up.png</file>
+        <file alias="scene_landscape.png">icons/scene_landscape.png</file>
+        <file alias="scene_night.png">icons/scene_night.png</file>
+        <file alias="scene_nightportrait.png">icons/scene_nightportrait.png</file>
+        <file alias="scene_sport.png">icons/scene_sport.png</file>
+        <file alias="scene_lowlight.png">icons/scene_lowlight.png</file>
+        <file alias="scene_portrait.png">icons/scene_portrait.png</file>
+    </qresource>
+</RCC>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/cxuiinternalsceneimages.qrc	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,12 @@
+<RCC>
+    <qresource prefix="/camerax" >
+        <file alias="scene_automatic.png">../internal/icons/scene_automatic.png</file>
+        <file alias="scene_close-up.png">../internal/icons/scene_close-up.png</file>
+        <file alias="scene_landscape.png">../internal/icons/scene_landscape.png</file>
+        <file alias="scene_night.png">../internal/icons/scene_night.png</file>
+        <file alias="scene_nightportrait.png">../internal/icons/scene_nightportrait.png</file>
+        <file alias="scene_sport.png">../internal/icons/scene_sport.png</file>
+        <file alias="scene_lowlight.png">../internal/icons/scene_lowlight.png</file>
+        <file alias="scene_portrait.png">../internal/icons/scene_portrait.png</file>
+    </qresource>
+</RCC>
\ No newline at end of file
Binary file camerauis/cameraxui/cxui/icons/blackbg.png has changed
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_antired.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32px" version="1.1" viewBox="0 0 32 32" width="32px" x="0px" y="0px">
-<g>
-<rect fill="none" height="32" width="32"/>
-</g>
-<g>
-<path d="M27.963,19.113c0,0-0.463,0.006-0.641,0.008c1.125-2.378,2.441-5.166,2.441-5.166   c0.707-1.491-0.53-2.852-1.801-2.855c0,0-3.34-0.009-6.072-0.017c1.107-2.326,2.4-5.041,2.4-5.041   c0.566-1.183-0.186-2.86-1.805-2.86h-5.111c-0.775,0-1.482,0.449-1.811,1.152l-4.062,8.68C7.22,13.163,2.299,16.502,1,19.72   c1.29,2.576,5.124,6.48,10.799,6.48c1.696,0,3.222-0.316,4.574-0.812l2.816,3.062c0.715,0.779,1.916,0.865,2.736,0.195l7.326-5.983   C30.756,21.438,29.792,19.093,27.963,19.113z" fill="#FFFFFF"/>
-<path d="M24.146,21.159l3.811-8.06l-9.229-0.025l3.758-7.893h-5.111l-3.729,7.971c2.148,0.328,3.92,1.183,5.328,2.193l2.898,0.006   l-0.837,1.774c1.114,1.143,1.823,2.184,2.163,2.594c-0.596,1.262-2.291,3.33-4.915,4.791l2.378,2.586l7.324-5.983L24.146,21.159z"/>
-<path d="M11.799,23.08c-2.16,0-5.279-1.44-6.72-3.36c1.44-2.16,4.56-3.6,6.72-3.6c2.641,0,5.4,1.439,7.08,3.6   C17.439,21.64,14.439,23.08,11.799,23.08 M11.799,14.68c-3.119,0-6.959,1.92-8.64,5.04c1.681,3.12,5.761,4.801,8.64,4.801   c3.48,0,7.561-1.92,9.24-4.801C19.119,16.84,15.279,14.68,11.799,14.68z"/>
-<path d="M15.039,19.72c0,1.44-1.32,2.881-3,2.881s-2.88-1.44-2.88-2.881c0-1.68,1.2-2.88,2.88-2.88S15.039,18.04,15.039,19.72"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_autoflash.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<rect fill="none" height="32" width="32"/>
-<path d="M27.963,19.113c0,0-0.463,0.006-0.641,0.008c1.125-2.378,2.441-5.166,2.441-5.166   c0.549-1.031-0.076-2.855-1.802-2.855c0,0-3.34-0.009-6.071-0.017c1.106-2.326,2.399-5.041,2.399-5.041   c0.489-0.899,0.021-2.86-1.806-2.86h-5.11c-0.774,0-1.482,0.449-1.811,1.152l-2.949,6.301c-0.235-0.097-0.49-0.156-0.758-0.156   H7.869c-0.898,0-1.684,0.597-1.926,1.46L1.873,26.46C1.563,27.455,2.281,29,3.799,29h2.973c0.92,0,1.723-0.629,1.941-1.523   c0,0,0.184-0.744,0.363-1.486h0.803c0.176,0.736,0.352,1.474,0.352,1.474C10.443,28.363,11.25,29,12.176,29h3.49   c0.621,0,1.207-0.287,1.584-0.777c0.322-0.418,0.452-0.941,0.391-1.457l1.549,1.686c0.715,0.779,1.916,0.865,2.736,0.195   l7.326-5.983C30.531,21.549,30.188,19.268,27.963,19.113z M17.865,19.156h-2.188l-0.478-1.819l3.521,0.009L17.865,19.156z" fill="#FFFFFF"/>
-<polygon fill="#010101" points="27.957,13.1 18.729,13.074 22.486,5.182 17.375,5.182 12.627,15.332 21.873,15.352 19.135,21.156    15.201,21.156 20.662,27.098 27.986,21.113 24.146,21.159  "/>
-<path d="M15.666,27h-3.49l-0.717-3.012H7.51L6.771,27H3.799l4.07-14.521h3.988L15.666,27z M11.059,22.072   l-1.555-6.819l-1.596,6.819H11.059z" fill="#010101"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_camera.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<path d="M2,5C0.896,5,0,5.896,0,7v19c0,1.104,0.896,2,2,2h28c1.104,0,2-0.896,2-2V7c0-1.104-0.896-2-2-2H2z" fill="#FFFFFF"/>
-<path d="M2,7v19h28V7H2z M28,24H4V9h24V24z" fill="#010101"/>
-<rect fill="#010101" height="2" width="4" x="22" y="11"/>
-<path d="M16,11c-3.313,0-6,2.687-6,6c0,3.313,2.688,6,6,6c3.314,0,6-2.688,6-6C22,13.687,19.314,11,16,11z M16,21   c-2.205,0-4-1.793-4-4c0-2.206,1.795-4,4-4c2.207,0,4,1.794,4,4C20,19.207,18.207,21,16,21z" fill="#010101"/>
-<rect fill="none" height="32" width="32"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_camera_second.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<rect fill="none" height="32" width="32"/>
-<path d="M30,25.089c0,0-1.23,0-2.344,0c0.344-0.506,4.226-2.631,4.226-6.767c0-2.295-0.991-3.63-1.882-4.37V4   c0-1.104-0.896-2-2-2H2C0.896,2,0,2.896,0,4v18c0,1.104,0.896,2,2,2h17.8c-0.536,1.055-0.901,2.29-0.901,3.738V29   c0,1.104,0.896,2,2,2H30c1.104,0,2-0.896,2-2v-1.911C32,25.984,31.104,25.089,30,25.089z" fill="#FFFFFF"/>
-<path d="M23.244,20H4V6h22v6.547c0.725,0.05,1.396,0.159,2,0.349V4H2v18h19.156   C21.883,21.156,22.648,20.5,23.244,20z" fill="#010101"/>
-<path d="M15,8c-3.035,0-5.5,2.461-5.5,5.499C9.5,16.534,11.965,19,15,19c3.039,0,5.5-2.466,5.5-5.501   C20.5,10.461,18.039,8,15,8z M15,17c-1.93,0-3.5-1.568-3.5-3.5c0-1.93,1.57-3.5,3.5-3.5c1.932,0,3.5,1.57,3.5,3.5   C18.5,15.432,16.932,17,15,17z" fill="#010101"/>
-<path d="M23.952,27.089c0.138-1.558,1.3-2.601,3.073-4.098c1.674-1.419,2.855-2.541,2.855-4.669   c0-2.659-1.773-3.822-4.648-3.822c-1.092,0-2.168,0.159-3.232,0.431v1.904c0.762-0.246,1.555-0.443,2.424-0.443   c1.557,0,2.207,0.729,2.207,2.049c0,1.221-0.768,1.971-2.01,3.014c-1.832,1.537-3.723,3.389-3.723,6.285V29H30v-1.911H23.952z" fill="#010101"/>
-<rect fill="#010101" height="2" width="3.586" x="20.414" y="8"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_colour.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<rect fill="none" height="32" width="32"/>
-<path d="M22.915,14.005C23.344,13.33,24,11.459,24,10c0-4.411-3.589-8-8-8s-8,3.588-8,8   c0,1.46,0.563,3.112,1.085,4.005C4.625,13.924,1,17.589,1,21.999C1,26.411,4.589,30,9,30c3.01,0,5.635-1.673,7-4.137   C17.365,28.327,19.99,30,23,30c4.411,0,8-3.589,8-8.001C31,17.799,27.75,14.005,22.915,14.005z" fill="#FFFFFF"/>
-<circle cx="16" cy="10" fill="#040404" r="6"/>
-<circle cx="16" cy="10" fill="#ED2224" r="4"/>
-<circle cx="23" cy="21.999" fill="#040404" r="6"/>
-<circle cx="23" cy="22" fill="#3A54A5" r="4"/>
-<circle cx="9" cy="21.999" fill="#040404" r="6"/>
-<circle cx="9" cy="22" fill="#6ABD45" r="4"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_colour_bw.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<rect fill="none" height="32" width="32"/>
-<path d="M22.915,14.004C23.344,13.33,24,11.459,24,10c0-4.411-3.589-8-8-8s-8,3.588-8,8   c0,1.46,0.563,3.111,1.085,4.005C4.625,13.923,1,17.588,1,22s3.589,8,8,8c3.01,0,5.635-1.672,7-4.135C17.365,28.328,19.99,30,23,30   c4.411,0,8-3.588,8-8C31,17.798,27.75,14.004,22.915,14.004z" fill="#FFFFFF"/>
-<path d="M16,4c-3.313,0-6,2.687-6,6c0,3.314,2.687,6,6,6c3.313,0,6-2.686,6-6C22,6.687,19.313,4,16,4z M16,14   c-2.211,0-4-1.79-4-4c0-2.209,1.789-4,4-4s4,1.791,4,4S18.211,14,16,14z" fill="#040404"/>
-<circle cx="23" cy="22" fill="#040404" r="6"/>
-<circle cx="9" cy="22" fill="#040404" r="6"/>
-<circle cx="9" cy="22" fill="#B2B2B2" r="4"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_colour_negative.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<rect fill="#FFFFFF" height="32" width="32"/>
-<rect fill="#040404" height="28" width="28" x="2" y="2"/>
-<circle cx="16" cy="10" fill="#71CDDD" r="5"/>
-<circle cx="23" cy="22" fill="#F6EB16" r="5"/>
-<circle cx="9" cy="22" fill="#B9539F" r="5"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_colour_normal.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<rect fill="none" height="32" width="32"/>
-<path d="M22.915,14.004C23.344,13.33,24,11.459,24,10c0-4.411-3.589-8-8-8s-8,3.588-8,8   c0,1.46,0.563,3.111,1.085,4.005C4.625,13.923,1,17.588,1,22s3.589,8,8,8c3.01,0,5.635-1.672,7-4.135C17.365,28.328,19.99,30,23,30   c4.411,0,8-3.588,8-8C31,17.798,27.75,14.004,22.915,14.004z" fill="#FFFFFF"/>
-<circle cx="16" cy="10" fill="#040404" r="6"/>
-<circle cx="16" cy="10" fill="#ED2224" r="4"/>
-<circle cx="23" cy="22" fill="#040404" r="6"/>
-<circle cx="23" cy="22" fill="#3A54A5" r="4"/>
-<circle cx="9" cy="22" fill="#040404" r="6"/>
-<circle cx="9" cy="22" fill="#6ABD45" r="4"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_colour_sepia.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<rect fill="none" height="32" width="32"/>
-<path d="M22.915,14.005C23.344,13.33,24,11.459,24,10c0-4.411-3.589-8-8-8s-8,3.588-8,8   c0,1.46,0.563,3.112,1.085,4.005C4.625,13.924,1,17.589,1,21.999C1,26.411,4.589,30,9,30c3.01,0,5.635-1.673,7-4.137   C17.365,28.327,19.99,30,23,30c4.411,0,8-3.589,8-8.001C31,17.799,27.75,14.005,22.915,14.005z" fill="#FFFFFF"/>
-<circle cx="16" cy="10" fill="#040404" r="6"/>
-<circle cx="16" cy="10" fill="#E6BD45" r="4"/>
-<circle cx="23" cy="21.999" fill="#040404" r="6"/>
-<circle cx="23" cy="22" fill="#824E1F" r="4"/>
-<circle cx="9" cy="21.999" fill="#040404" r="6"/>
-<circle cx="9" cy="22" fill="#FEEA9F" r="4"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_colour_vivid.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32.001" version="1.1" viewBox="0 0 32 32.001" width="32">
-<g>
-<path d="M22.915,14.005C23.344,13.331,24,11.459,24,10c0-4.411-3.589-8-8-8s-8,3.588-8,8   c0,1.46,0.563,3.113,1.085,4.005C4.625,13.925,1,17.589,1,21.999c0,4.412,3.589,8.002,8,8.002c3.01,0,5.635-1.674,7-4.138   c1.365,2.464,3.99,4.138,7,4.138c4.411,0,8-3.59,8-8.002C31,17.8,27.75,14.005,22.915,14.005z" fill="#FFFFFF"/>
-<rect fill="none" height="32.001" width="32"/>
-<rect fill="none" height="32.001" width="32"/>
-<circle cx="23" cy="21.999" fill="#040404" r="6"/>
-<circle cx="9" cy="21.999" fill="#040404" r="6"/>
-<path d="M19.271,23.419c0.572,1.506,2.02,2.582,3.729,2.582c2.211,0,4-1.791,4-4c0-0.787-0.234-1.517-0.626-2.133   L19.271,23.419z" fill="#3A54A5"/>
-<path d="M5.29,23.479C5.878,24.954,7.313,26,9,26c2.211,0,4-1.791,4-4c0-0.766-0.226-1.471-0.597-2.078L5.29,23.479   z" fill="#6ABD45"/>
-<circle cx="16" cy="10" fill="#040404" r="6"/>
-<path d="M12.267,11.403c0.569,1.514,2.019,2.598,3.733,2.598c2.211,0,4-1.792,4-4.001   c0-0.792-0.236-1.525-0.634-2.146L12.267,11.403z" fill="#ED2224"/>
-<path d="M19.59,8.267C18.943,6.93,17.586,6,16,6c-2.211,0-4,1.791-4,4c0,0.663,0.177,1.279,0.463,1.83L19.59,8.267z   " fill="#F7A9AB"/>
-<path d="M12.59,20.268c-0.646-1.336-2.004-2.267-3.59-2.267c-2.211,0-4,1.791-4,4c0,0.662,0.177,1.278,0.463,1.83   L12.59,20.268z" fill="#CBE5BE"/>
-<path d="M26.59,20.268c-0.646-1.336-2.004-2.267-3.59-2.267c-2.211,0-4,1.791-4,4c0,0.662,0.177,1.278,0.463,1.83   L26.59,20.268z" fill="#8EAEDB"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_contrast.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32px" version="1.1" viewBox="0 0 32 32" width="32px" x="0px" y="0px">
-<rect fill="none" height="32" width="32"/>
-<circle cx="16" cy="16" fill="#FFFFFF" r="14"/>
-<path d="M16,4C9.381,4,4,9.383,4,16c0,6.618,5.381,12,12,12s12-5.383,12-12C28,9.383,22.619,4,16,4z M6.182,16  c0-5.414,4.406-9.818,9.818-9.818c0,4.191,0,15.233,0,19.635C10.588,25.817,6.182,21.415,6.182,16z"/>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_exposure.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<rect fill="none" height="32" width="32"/>
-<rect fill="#FFFFFF" height="26" width="26" x="3" y="3"/>
-<path d="M5,5v22h22V5H5z M25,8.391V25H8.389L25,8.391z M7,23.563V7h16.563L7,23.563z" fill="#010101"/>
-<rect fill="#010101" height="2" width="5.863" x="16.936" y="19"/>
-<polygon fill="#010101" points="9,13.023 10.977,13.023 10.977,15 13.023,15 13.023,13.023 15,13.023 15,10.978 13.023,10.978    13.023,9 10.977,9 10.977,10.978 9,10.978  "/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_flash_off.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32.001" version="1.1" viewBox="0 0 32 32.001" width="32">
-<g>
-<rect fill="none" height="31.973" width="32" y="0.013"/>
-<path d="M31.414,25.391l-6.732-6.729c1.297-2.74,2.731-5.771,2.731-5.771c0.588-1.277-0.287-2.853-1.802-2.853   c0,0-5.278-0.015-8.684-0.024c1.407-2.917,3.449-7.148,3.449-7.148C20.793,2.164,20.459,0,18.576,0h-6.568   c-0.773,0-1.479,0.446-1.809,1.145L9.221,3.216L7.43,1.427c-0.537-0.537-1.791-1.037-2.828,0L3.188,2.841   c-0.781,0.781-0.781,2.045,0,2.826L6.5,8.976l-2.397,5.073C3.585,15.32,4.252,16.9,5.912,16.9c0,0,5.115,0,8.521,0l0.139,0.14   c-0.729,1.554-1.158,2.463-1.571,3.341c-1.423,0-3.78,0-3.78,0c-1.926,0-2.468,2.225-1.473,3.352l7.012,7.623   c0.715,0.776,1.911,0.863,2.732,0.199l6.41-5.191l3.271,3.268c0.979,0.979,2.302,0.528,2.828,0l1.414-1.412   C32.195,27.436,32.195,26.171,31.414,25.391z" fill="#FFFFFF"/>
-<polygon fill="#010101" points="18.027,12.016 23.18,17.162 25.605,12.037  "/>
-<polygon fill="#010101" points="18.576,1.999 12.008,1.999 10.723,4.718 15.136,9.127  "/>
-<polygon fill="#010101" points="14.27,22.379 9.219,22.379 16.23,30.001 22.479,24.941 16.074,18.542  "/>
-<polygon fill="#010101" points="8.002,10.477 5.91,14.903 12.432,14.903  "/>
-<rect fill="#010101" height="2" transform="matrix(-0.7074 -0.7068 0.7068 -0.7074 18.5635 38.7421)" width="33.903" x="0.349" y="14.529"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_flash_on.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<g>
-<path d="M12.008,0c-0.773,0-1.479,0.446-1.809,1.145L4.102,14.049C3.584,15.32,4.251,16.9,5.911,16.9    c0,0,5.324,0,8.726,0c-0.771,1.643-1.211,2.576-1.637,3.479c-1.423,0-3.78,0-3.78,0c-1.926,0-2.468,2.226-1.473,3.351l7.012,7.623    c0.715,0.777,1.911,0.865,2.732,0.201l9.409-7.623c1.394-1.201,0.685-3.551-1.26-3.551c0,0-0.957,0-1.773,0    c1.417-2.99,3.547-7.49,3.547-7.49c0.588-1.277-0.287-2.853-1.803-2.853c0,0-5.277-0.015-8.682-0.024    c1.406-2.917,3.448-7.148,3.448-7.148C20.793,2.164,20.459,0,18.576,0H12.008z" fill="#FFFFFF"/>
-</g>
-<rect fill="none" height="31.973" width="32" y="0.013"/>
-<polygon fill="#010101" points="25.605,12.037 13.748,12.004 18.576,1.999 12.008,1.999 5.91,14.903 17.785,14.903 14.27,22.379    9.219,22.379 16.23,30.001 25.641,22.38 20.707,22.38  "/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_goto_gallery.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32.001" version="1.1" viewBox="0 0 32 32.001" width="32">
-<g>
-<polygon fill="#FFFFFF" points="26,10 26,2 0,2 0,24.001 8,24.001 8,30.001 32,30.001 32,10  "/>
-<rect fill="#040404" height="2" width="2" x="9.916" y="8"/>
-<rect fill="#040404" height="2" width="2" x="17.916" y="8"/>
-<rect fill="#040404" height="2" width="2" x="13.916" y="8"/>
-<rect fill="#040404" height="2" width="2" x="5.916" y="8"/>
-<rect fill="#040404" height="2" width="2" x="5.916" y="16.001"/>
-<rect fill="none" height="32.001" width="32"/>
-<path d="M23.916,12V4h-22v18.001H10v6h20V12H23.916z M10,20.001H3.916V5.999h18V12H10V20.001z M12,26.001v-2.864   c0.913-0.48,2.578-1.349,3.059-1.599c0.79,0.424,1.443,0.771,2.001,1.063L14,26.001H12z M28,20.001l-5.555-3.379l-4.141,4.599   l-3.243-1.689L12,21.13V14h16V20.001z" fill="#040404"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_gridviewer.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 32 32">
-<g>
-<rect fill="none" width="32" height="32"/>
-<rect x="3" y="3" fill="#FFFFFF" width="26" height="26"/>
-<path d="M5,5v22h22V5H5z M25,25H7V7h18V25z"/>
-<rect x="9" y="9" width="6" height="6"/>
-<rect x="17" y="9" width="6" height="6"/>
-<rect x="9" y="17" width="6" height="6"/>
-<rect x="17" y="17" width="6" height="6"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_iso.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<path d="M23.609,7.523c-1.43,0-3.392,0.336-4.859,1.856V8.138l-1.616-0.316c-1.011-0.198-4.153-0.776-6.671,0.536   V7.663H1.5v5.671c0,0,0.523,0,1.045,0v5.332c-0.521,0-1.045,0-1.045,0v5.671h8.962v-0.054c0.738,0.113,1.482,0.193,2.213,0.193   c2.621,0,4.582-0.858,5.688-2.401c1.496,1.979,3.687,2.401,5.244,2.401c2.574,0,6.892-1.125,6.892-8.65   C30.5,8.602,26.182,7.523,23.609,7.523z" fill="#FFFFFF"/>
-<path d="M8.462,22.337H3.5v-1.671h1.045v-9.332H3.5V9.663h4.962v1.671H7.417v9.332h1.045V22.337z" fill="#010101"/>
-<path d="M16.75,11.474c-0.802-0.175-1.428-0.279-2.281-0.279c-1.131,0-1.828,0.522-1.828,1.462   c0,1.01,0.748,1.479,2.02,2.141c1.689,0.889,2.733,1.897,2.733,3.763c0,2.768-1.88,3.916-4.719,3.916   c-0.975,0-1.984-0.121-2.925-0.349v-1.724c0.888,0.227,1.793,0.4,2.733,0.4c1.375,0,2.055-0.645,2.055-1.672   c0-1.08-0.645-1.48-2.316-2.42c-1.428-0.801-2.454-1.758-2.454-3.656c0-2.385,1.811-3.534,4.317-3.534   c0.889,0,1.775,0.087,2.664,0.261V11.474z" fill="#010101"/>
-<path d="M23.609,22.477c-4.231,0-4.91-3.656-4.91-6.649c0-2.978,0.783-6.303,4.91-6.303   c4.125,0,4.891,3.325,4.891,6.303C28.5,18.838,27.839,22.477,23.609,22.477z M23.609,11.195c-1.795,0-1.935,2.263-1.935,4.631   c0,2.367,0.209,4.979,1.935,4.979c1.793,0,1.914-2.578,1.914-4.979C25.523,13.563,25.35,11.195,23.609,11.195z" fill="#010101"/>
-<rect fill="none" height="32" width="32"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_iso_auto.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<rect fill="none" height="32" width="32"/>
-<path d="M21.584,1.493c-0.75,0-1.941,0.131-3.034,0.801V1.87c-1.81-0.189-4.33-0.689-6.084-0.039V1.595H4.825v5.227   c0,0,0.404,0,0.767,0v2.849c-0.363,0-0.767,0-0.767,0v5.227h7.293c0.482,0.063,3.622,0.616,5.614-1.386   C18.998,14.788,20.641,15,21.584,15c1.682,0,5.591-0.671,5.591-6.882C27.175,2.138,23.266,1.493,21.584,1.493z" fill="#FFFFFF"/>
-<g>
-<path d="M10.466,12.897H6.825V11.67h0.767V4.822H6.825V3.595h3.641v1.227H9.701v6.849h0.766L10.466,12.897    L10.466,12.897z" fill="#010101"/>
-<path d="M16.55,4.924c-0.588-0.128-1.049-0.205-1.674-0.205c-0.83,0-1.343,0.384-1.343,1.074    c0,0.741,0.55,1.085,1.483,1.571c1.239,0.652,2.005,1.393,2.005,2.76c0,2.033-1.38,2.875-3.462,2.875    c-0.717,0-1.457-0.09-2.146-0.256v-1.265c0.65,0.166,1.315,0.293,2.006,0.293c1.01,0,1.508-0.473,1.508-1.226    c0-0.793-0.474-1.086-1.699-1.777c-1.049-0.587-1.803-1.29-1.803-2.684c0-1.75,1.329-2.594,3.17-2.594    c0.652,0,1.303,0.063,1.955,0.191V4.924z" fill="#010101"/>
-<path d="M21.584,13c-3.105,0-3.604-2.684-3.604-4.882c0-2.185,0.574-4.625,3.604-4.625s3.591,2.44,3.591,4.625    C25.175,10.329,24.689,13,21.584,13z M21.584,4.719c-1.316,0-1.419,1.662-1.419,3.399c0,1.738,0.153,3.654,1.419,3.654    c1.316,0,1.406-1.891,1.406-3.654C22.991,6.458,22.863,4.719,21.584,4.719z" fill="#010101"/>
-</g>
-<g>
-<g>
-<path d="M13.378,16.493L9.593,30h6.151c0,0,0.1-0.404,0.198-0.809C16.039,29.596,16.135,30,16.135,30h6.457     l-3.544-13.507H13.378z" fill="#FFFFFF"/>
-</g>
-</g>
-<g>
-<path d="M20,28h-2.285l-0.469-1.973H14.66L14.175,28H12.23l2.664-9.507h2.611L20,28z M16.984,24.773l-1.021-4.467    l-1.045,4.467H16.984z" fill="#010101"/>
-</g>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_iso_high.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<rect fill="none" height="32" width="32"/>
-<path d="M32,21h-4v-1c0-1.104-0.895-2-2-2h-2c-1.104,0-2,0.896-2,2v1H0v7h22v1c0,1.104,0.896,2,2,2h2   c1.105,0,2-0.896,2-2v-1h4V21z" fill="#FFFFFF"/>
-<rect fill="#010101" height="3" width="20" x="2" y="23"/>
-<rect fill="#010101" height="9" width="2" x="24" y="20"/>
-<rect fill="#B2B2B2" height="3" width="2" x="28" y="23"/>
-<path d="M21.584,1.493c-0.75,0-1.941,0.131-3.034,0.801V1.87c-1.81-0.189-4.33-0.689-6.084-0.039V1.595H4.825v5.227   c0,0,0.404,0,0.767,0v2.849c-0.363,0-0.767,0-0.767,0v5.227h7.293c0.482,0.063,3.622,0.616,5.614-1.386   C18.998,14.788,20.641,15,21.584,15c1.682,0,5.591-0.671,5.591-6.882C27.175,2.138,23.266,1.493,21.584,1.493z" fill="#FFFFFF"/>
-<g>
-<path d="M10.466,12.897H6.825V11.67h0.767V4.822H6.825V3.595h3.641v1.227H9.701v6.849h0.766L10.466,12.897    L10.466,12.897z" fill="#010101"/>
-<path d="M16.55,4.924c-0.588-0.128-1.049-0.205-1.674-0.205c-0.83,0-1.343,0.384-1.343,1.074    c0,0.741,0.55,1.085,1.483,1.571c1.239,0.652,2.005,1.393,2.005,2.76c0,2.033-1.38,2.875-3.462,2.875    c-0.717,0-1.457-0.09-2.146-0.256v-1.265c0.65,0.166,1.315,0.294,2.006,0.294c1.01,0,1.508-0.473,1.508-1.226    c0-0.793-0.474-1.086-1.699-1.777c-1.049-0.587-1.803-1.29-1.803-2.684c0-1.75,1.329-2.594,3.17-2.594    c0.652,0,1.303,0.063,1.955,0.191V4.924z" fill="#010101"/>
-<path d="M21.584,13c-3.105,0-3.604-2.684-3.604-4.882c0-2.185,0.574-4.625,3.604-4.625s3.591,2.44,3.591,4.625    C25.175,10.329,24.689,13,21.584,13z M21.584,4.719c-1.316,0-1.419,1.662-1.419,3.399c0,1.738,0.153,3.655,1.419,3.655    c1.316,0,1.406-1.891,1.406-3.655C22.991,6.458,22.863,4.719,21.584,4.719z" fill="#010101"/>
-</g>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_iso_low.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<rect fill="none" height="32" width="32"/>
-<path d="M32,21H10v-1c0-1.104-0.895-2-2-2H6c-1.104,0-2,0.896-2,2v1H0v7h4v1c0,1.104,0.896,2,2,2h2   c1.105,0,2-0.896,2-2v-1h22V21z" fill="#FFFFFF"/>
-<rect fill="#010101" height="3" width="2" x="2" y="23"/>
-<rect fill="#010101" height="9" width="2" x="6" y="20"/>
-<path d="M21.584,1.493c-0.75,0-1.941,0.131-3.034,0.801V1.87c-1.81-0.189-4.33-0.689-6.084-0.039V1.595H4.825v5.227   c0,0,0.404,0,0.767,0v2.849c-0.363,0-0.767,0-0.767,0v5.227h7.293c0.482,0.063,3.622,0.616,5.614-1.386   C18.998,14.788,20.641,15,21.584,15c1.682,0,5.591-0.671,5.591-6.882C27.175,2.138,23.266,1.493,21.584,1.493z" fill="#FFFFFF"/>
-<g>
-<path d="M10.466,12.897H6.825V11.67h0.767V4.822H6.825V3.595h3.641v1.227H9.701v6.849h0.766L10.466,12.897    L10.466,12.897z" fill="#010101"/>
-<path d="M16.55,4.924c-0.588-0.128-1.049-0.205-1.674-0.205c-0.83,0-1.343,0.384-1.343,1.074    c0,0.741,0.55,1.085,1.483,1.571c1.239,0.652,2.005,1.393,2.005,2.76c0,2.033-1.38,2.875-3.462,2.875    c-0.717,0-1.457-0.09-2.146-0.256v-1.265c0.65,0.166,1.315,0.294,2.006,0.294c1.01,0,1.508-0.473,1.508-1.226    c0-0.793-0.474-1.086-1.699-1.777c-1.049-0.587-1.803-1.29-1.803-2.684c0-1.75,1.329-2.594,3.17-2.594    c0.652,0,1.303,0.063,1.955,0.191V4.924z" fill="#010101"/>
-<path d="M21.584,13c-3.105,0-3.604-2.684-3.604-4.882c0-2.185,0.574-4.625,3.604-4.625s3.591,2.44,3.591,4.625    C25.175,10.329,24.689,13,21.584,13z M21.584,4.719c-1.316,0-1.419,1.662-1.419,3.399c0,1.738,0.153,3.655,1.419,3.655    c1.316,0,1.406-1.891,1.406-3.655C22.991,6.458,22.863,4.719,21.584,4.719z" fill="#010101"/>
-</g>
-<rect fill="#B2B2B2" height="3" width="20" x="10" y="23"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_iso_medium.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<rect fill="none" height="32" width="32"/>
-<path d="M32,21H19v-1c0-1.104-0.895-2-2-2h-2c-1.104,0-2,0.896-2,2v1H0v7h13v1c0,1.104,0.896,2,2,2h2   c1.105,0,2-0.896,2-2v-1h13V21z" fill="#FFFFFF"/>
-<rect fill="#B2B2B2" height="3" width="11" x="19" y="23"/>
-<rect fill="#010101" height="3" width="11" x="2" y="23"/>
-<rect fill="#010101" height="9" width="2" x="15" y="20"/>
-<path d="M21.583,1.493c-0.75,0-1.94,0.131-3.033,0.801V1.87c-1.812-0.189-4.33-0.689-6.084-0.039V1.595H4.825v5.227   c0,0,0.404,0,0.767,0v2.849c-0.362,0-0.767,0-0.767,0v5.227h7.293c0.482,0.063,3.621,0.616,5.612-1.386   C18.998,14.788,20.641,15,21.583,15c1.683,0,5.592-0.671,5.592-6.882C27.175,2.138,23.266,1.493,21.583,1.493z" fill="#FFFFFF"/>
-<g>
-<path d="M10.466,12.897H6.825V11.67h0.767V4.822H6.825V3.595h3.641v1.227H9.701v6.849h0.766L10.466,12.897    L10.466,12.897z" fill="#010101"/>
-<path d="M16.55,4.924c-0.588-0.128-1.049-0.205-1.674-0.205c-0.83,0-1.344,0.384-1.344,1.074    c0,0.741,0.551,1.085,1.484,1.571c1.238,0.652,2.005,1.393,2.005,2.76c0,2.033-1.38,2.875-3.462,2.875    c-0.717,0-1.457-0.09-2.146-0.256v-1.265c0.65,0.166,1.314,0.293,2.006,0.293c1.01,0,1.508-0.473,1.508-1.226    c0-0.793-0.475-1.086-1.699-1.777c-1.049-0.587-1.803-1.29-1.803-2.684c0-1.75,1.328-2.594,3.17-2.594    c0.652,0,1.303,0.063,1.955,0.191V4.924z" fill="#010101"/>
-<path d="M21.583,13c-3.104,0-3.604-2.684-3.604-4.882c0-2.185,0.576-4.625,3.604-4.625s3.592,2.44,3.592,4.625    C25.175,10.329,24.689,13,21.583,13z M21.583,4.719c-1.315,0-1.418,1.662-1.418,3.399c0,1.738,0.153,3.654,1.418,3.654    c1.315,0,1.405-1.891,1.405-3.654C22.99,6.458,22.863,4.719,21.583,4.719z" fill="#010101"/>
-</g>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_light_off.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg width="34px" height="34px" viewBox="0 0 34 34">
-<path d="M16.818,1.503c-6.578,0-11.172,4.092-11.172,9.949c0,2.86,1.747,6.119,3.285,8.996 c0.547,1.022,1.145,2.096,1.824,3.077v8.866h12.201v-8.908c0.385-0.611,1.044-1.661,1.479-2.361c1.937-3.125,3.915-6.719,3.915-9.67 C28.351,5.688,23.501,1.503,16.818,1.503z" fill="#FFFFFF"/>
-<path d="M16.818,3.48c-5.175,0-9.188,3.048-9.188,7.972c0,2.336,1.574,5.304,3.053,8.066c0.662,1.238,1.332,2.422,2.076,3.396 c-0.009,0-0.018,0-0.02,0v7.5h8.234v-7.5c0-0.005,1.135-1.799,1.775-2.83c1.766-2.852,3.619-6.17,3.619-8.632 C26.368,6.528,21.991,3.48,16.818,3.48z M14.388,28.357v-4.072h4.961v4.072H14.388z M21.228,19.159c0,0-1.281,2.218-1.879,2.971 v0.124h-4.961V22.13l-2.103-3.435c0,0-2.707-5.136-2.707-7.042c0-4.284,3.644-6.203,7.254-6.203c3.659,0,7.597,1.941,7.597,6.203 C24.429,13.655,21.228,19.159,21.228,19.159z"/>
-<path d="M29.131,34l4.794-4.769L4.997,0.352l-4.793,4.77L29.131,34z" fill="#FFFFFF"/>
-<polygon points="29.136,31.019 3.196,5.123 4.992,3.335 30.932,29.229 "/>
-<rect fill="none" height="34" width="34"/>
-</svg>
\ No newline at end of file
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_light_on.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg width="34px" height="34px" viewBox="0 0 34 34">
-<path d="M32.953,13.466h-6.202c-0.053-0.203-0.106-0.407-0.174-0.604l4.632-4.66L26.993,3.98l-4.26,4.29 c-0.846-0.497-1.791-0.887-2.822-1.146V0.76h-5.964v6.318c-1.039,0.247-2,0.624-2.853,1.125L6.896,3.982L2.686,8.205l4.595,4.621 c-0.071,0.208-0.128,0.423-0.183,0.64H1.047v5.967h6.62c0.562,1.427,1.317,2.854,2.029,4.187c0.471,0.879,0.977,1.791,1.542,2.622 v7.001h11.131v-7.045l0.01-0.014c0.338-0.537,0.872-1.387,1.229-1.966c0.977-1.582,1.902-3.207,2.55-4.785h6.795V13.466z" fill="#FFFFFF"/>
-<path d="M16.771,8.748c-4.478,0-7.952,2.646-7.952,6.922c0,2.029,1.36,4.607,2.642,7.006c0.573,1.074,1.154,2.103,1.797,2.949 c-0.008,0-0.017,0-0.017,0v5.617h7.128v-5.617c0.001-0.005,0.983-1.563,1.537-2.458c1.528-2.477,3.135-5.358,3.135-7.497 C25.04,11.394,21.251,8.748,16.771,8.748z M15.399,28.996v-1.575h2.693v1.575H15.399z"/>
-<path d="M16.771,10.749c-2.963,0-5.952,1.521-5.952,4.92c0,1.561,1.334,4.059,2.404,6.063c0.508,0.949,1.056,1.93,1.627,2.684 l0.406,0.536l-0.011,0.469h0.154h2.692h0.275v-0.269l0.211-0.422c0.002-0.002,0.072-0.132,0.206-0.345 c0.271-0.432,0.983-1.562,1.421-2.271c0.775-1.255,2.835-4.597,2.835-6.445C23.04,12.288,19.791,10.749,16.771,10.749L16.771,10.749 z"/>
-<path d="M16.771,10.749c-2.963,0-5.952,1.521-5.952,4.92c0,1.561,1.334,4.059,2.404,6.063 c0.508,0.949,2.022,3.688,2.022,3.688h3.122c0,0,1.4-2.597,1.838-3.307c0.775-1.255,2.835-4.597,2.835-6.445 C23.04,12.288,19.791,10.749,16.771,10.749L16.771,10.749z" fill="#FFFFFF"/>
-<rect height="3.848" width="1.966" x="15.946" y="2.76"/>
-<rect height="1.967" width="3.85" x="27.104" y="15.465"/>
-<rect height="1.967" width="3.85" x="3.047" y="15.465"/>
-<polygon points="25.924,10.683 24.537,9.292 26.999,6.814 28.387,8.205 "/>
-<polygon points="6.895,6.815 5.509,8.206 7.971,10.684 9.358,9.294 "/>
-<rect fill="none" height="34" width="34"/>
-</svg>
\ No newline at end of file
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_mode_auto.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<g>
-<path d="M13.048,2.5c-0.896,0-1.684,0.597-1.926,1.46l-6.446,23c-0.429,1.954,1.3,2.54,1.926,2.54h4.708    c0.922,0,1.724-0.629,1.943-1.523c0,0,0.449-1.836,0.795-3.246c1.168,0,1.934,0,3.106,0c0.336,1.412,0.77,3.232,0.77,3.232    c0.215,0.9,1.02,1.537,1.946,1.537h5.526c0.621,0,2.271-0.512,1.937-2.508l-6.033-23C21.07,3.113,20.275,2.5,19.367,2.5H13.048z" fill="#FFFFFF"/>
-</g>
-<rect fill="none" height="32" width="32"/>
-<path d="M25.398,27.5h-5.527l-1.137-4.771H12.48L11.31,27.5H6.603l6.446-23h6.318L25.398,27.5z M18.102,19.695   l-2.463-10.8l-2.527,10.802h4.991V19.695z" fill="#010101"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_mode_camera.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="20px" version="1.1" viewBox="0 0 20 20" width="20px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M0,0v20h20V0H0z M18.863,18.06l-3.472-3.497l-0.235,1.359l2.904,2.942H1.939L4.844,16l-0.28-1.368L1.137,18.06V1.94  l4.235,4.234l1.03-0.576L1.939,1.136h16.121l-4.383,4.408l1.01,0.639l4.175-4.242V18.06z"/>
-<g>
-<path d="M11.425,5.748l-0.081,1.154c2.507,0.464,4.294,2.181,2.528,3.966l-0.542,4.37c-0.377,2.664-6.201,2.71-6.652,0l-0.58-4.426   C4.531,9.197,5.97,7.362,8.73,6.884L8.677,5.711c-3.53,0.614-5.706,3.318-3.682,5.68l0.5,3.909   c0.516,4.113,8.586,4.047,9.023-0.062l0.503-3.898C17.06,8.91,14.677,6.354,11.425,5.748z"/>
-<path d="M14.818,2.107c-1.329-1.241-4.631,0.491-4.836,2.25C9.677,2.353,6.307,1.084,5.156,2.162   C4.842,3.87,7.822,5.661,9.48,5.091v2.833C7.9,8.049,6.593,8.728,6.065,9.635c1.331,2.316,6.56,2.283,7.869,0   c-0.518-0.892-1.787-1.563-3.325-1.706V5.07C12.186,5.501,15.141,3.859,14.818,2.107z"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_mode_closeup.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<g>
-<g>
-<path d="M5.082,2.434C5.015,2.639,4.185,5.537,4.185,8.992c0,6.278,2.783,8.634,3.159,9.013     c-3.031-1.999-4.039-1.586-4.745-1.286C1.597,17.145,1,18.129,1,19.354c0.001,3.519,1.084,6.244,3.218,8.104     c2.993,2.605,7.149,2.708,9.785,2.443c0.163,0.041,0.321,0.1,0.497,0.1h2c0.178,0,0.336-0.059,0.498-0.102     c2.639,0.265,6.798,0.162,9.792-2.448c2.133-1.86,3.213-4.589,3.21-8.106c-0.001-1.227-0.602-2.211-1.604-2.636     c-0.707-0.299-1.715-0.71-4.738,1.289c0.375-0.379,3.154-2.727,3.154-9.011c0-3.45-0.814-6.351-0.895-6.551     c-0.822-2.086-2.92-1.578-3.583-0.545c0,0-1.272,1.909-2.433,3.648C18.587,3.782,17.1,1.8,17.1,1.8     c-0.638-0.854-2.227-1.252-3.2,0c0,0-1.486,1.982-2.804,3.739C9.937,3.8,8.664,1.891,8.664,1.891     C7.94,0.703,5.71,0.504,5.082,2.434z M9.732,19.775c0.829,0.414,1.77,0.689,2.768,0.892c0,0.501,0,0.754,0,1.458     C11.468,21.206,10.55,20.43,9.732,19.775z M21.271,19.77c-0.818,0.654-1.737,1.436-2.771,2.358c0-0.707,0-0.962,0-1.464     C19.5,20.462,20.441,20.186,21.271,19.77z" fill="#FFFFFF"/>
-</g>
-</g>
-<path d="M16.5,26.715v-7.754C28.482,18.156,24,3,24,3l-4,6l-4.5-6L11,9L7,3c0,0-4.484,15.172,7.5,15.962v7.742   C11.557,23.866,2.999,15.909,3,19.352c0.004,9.276,8.558,8.892,11.5,8.484V28h2v-0.164c2.932,0.404,11.506,0.796,11.5-8.492   C27.997,15.893,19.43,23.882,16.5,26.715z" fill="#010101"/>
-<rect fill="none" height="32" width="32"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_mode_landscape.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32px" version="1.1" viewBox="0 0 32 32" width="32px" x="0px" y="0px">
-<rect fill="none" height="32" width="32"/>
-<path d="M27.389,12.152h-6.356c-2.205,0-3.999-1.796-3.999-4.001c0-2.765,1.161-4.289,2.151-5.086  c0.846-1.679,2.409-2.957,5.026-2.957c3.678,0.087,4.816,2.548,4.922,2.75c1.147,0.822,2.256,2.373,2.256,5.293  C31.389,10.356,29.594,12.152,27.389,12.152L27.389,12.152z" fill="#FFFFFF"/>
-<path d="M27.389,10.152h-6.355c-1.104,0-2-0.896-2-2c0-2.179,0.877-3.259,1.791-3.793c0.091-0.304,0.724-2.262,3.387-2.25  c2.717,0.084,3.255,1.86,3.346,2.125c1.218,0.607,1.832,1.918,1.832,3.918C29.389,9.257,28.493,10.152,27.389,10.152L27.389,10.152z  "/>
-<path d="M27.389,8.153c0-1.155,0-2.312-1.734-2.312c0,0,0.578-1.732-1.443-1.732c-2.022,0-1.445,1.732-1.445,1.732  c-1.732,0-1.732,1.734-1.732,2.312H27.389z" fill="#FFFFFF"/>
-<path d="M30.032,31.001H2.033c-0.875,0.117-2.531-1.055-1.838-2.79l9.875-23c0.839-1.796,3.121-1.39,3.655-0.048  l6.583,14.285l2.336-3.062c1.297-1.534,2.953-0.597,3.372,0.306l5.8,11.402C32.362,29.478,31.331,31.04,30.032,31.001L30.032,31.001  z" fill="#FFFFFF"/>
-<path d="M11.907,6l7.974,17.301l4.352-5.701L30.032,29h-28L11.907,6z"/>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_mode_night.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<g>
-<path d="M3.323,16c0,7.995,6.563,14.5,14.631,14.5c4.082,0,7.612-1.537,10.213-4.443    c0.804-0.811,0.908-3.763-2.231-3.189C24.621,23.43,18,22.259,18,16c0-3.852,3.169-7.518,8.678-6.984    c1.66-0.042,2.609-1.939,1.543-3.271C26.066,3.127,22.132,1.5,17.955,1.5C9.886,1.5,3.323,8.005,3.323,16z" fill="#FFFFFF"/>
-</g>
-<rect fill="none" height="32" width="32"/>
-<path d="M26.677,24.725c-2.213,2.473-5.209,3.775-8.723,3.775c-6.906,0-12.631-5.6-12.631-12.5c0-6.901,5.725-12.5,12.631-12.5   c3.514,0,6.519,1.116,8.723,3.516C20.15,6.549,16,10.766,16,16C16,23.383,23.628,25.879,26.677,24.725z"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_mode_portrait.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<path d="M23,15h-2.109C22.189,13.729,23,11.958,23,10c0-3.86-3.141-7-7-7c-3.859,0-7,3.14-7,7   c0,1.958,0.811,3.729,2.111,5H9c-1.957,0-6,1.711-6,7v10h26V22C29,16.711,24.957,15,23,15z" fill="#FFFFFF"/>
-<path d="M23,30v-6h-1.023v6h-12v-6H9v6c-3.913,0-4,0-4,0v-8c0-4,3-5,4-5c0,0,12,0,14,0c1,0,4,1,4,5s0,8,0,8H23z"/>
-<circle cx="16" cy="10" r="5"/>
-<rect fill="none" height="32" width="32"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_mode_portrait_night.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="34px" version="1.1" viewBox="48.939 -0.286 34 34" width="34px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<path d="M50.372,1.146v31.133h31.133V1.146H50.372z" fill="#FFFFFF"/>
-<rect fill="none" height="34" width="34" x="48.939" y="-0.286"/>
-<g>
-<rect height="27.094" width="27.094" x="52.392" y="3.202"/>
-<path d="M60.371,11.846c-1.737,0-3.142-1.389-3.142-3.105c0-1.716,1.404-3.105,3.142-3.105   c0.232,0,0.457,0.029,0.675,0.08c-0.796-0.803-1.899-1.304-3.129-1.304c-2.422,0-4.382,1.94-4.382,4.331   c0,2.393,1.962,4.331,4.382,4.331c1.227,0,2.334-0.499,3.13-1.301C60.828,11.819,60.605,11.846,60.371,11.846z" fill="#FFFFFF"/>
-<ellipse cx="66.413" cy="9.565" fill="#FFFFFF" rx="4.473" ry="4.236"/>
-<path d="M74.092,28.766v-6.73l-1.507,0.029v6.694L60.775,28.73v-6.694l-1.686,0.029v6.659l-3.859-0.006l0.054-7.669   c-0.106-4.286,1.743-4.936,2.697-5.226c1.703-0.513,4.862-0.499,5.62-0.476l5.506-0.047c0,0,4.027-0.149,6.082,0.473   c0.954,0.287,2.805,0.939,2.698,5.221l0.054,7.78L74.092,28.766z" fill="#FFFFFF"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_mode_sport.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<path d="M31.541,16.922c-0.102-2.288-0.576-6.522-2.564-7.121c0.262-0.653,0.408-1.364,0.408-2.109   C29.384,4.66,26.725,2,23.691,2c-2.805,0-5.205,2.156-5.621,4.866c-7.458-0.827-8.812,0.143-9.318,0.563   c-1.533,1.204-2.699,5.122-3.406,8.207c0,0-0.881,2.576,0.999,3.42c1.176,0.588,2.16-0.006,2.876-0.725   c0.365-0.367-0.207,0.213-1.342,1.271c-4.131,3.858-6.916,6.578-6.894,8.854c0.168,2.534,2.139,2.521,2.139,2.521   c2.998,0.515,12.435-7.674,13.601-8.365c0.047,0.008,0.105,0.029,0.164,0.051c-1.428,1.506-2.637,3.215-2.637,4.744   c0,0.135,0.057,1.771,1.695,2.57c0,0,3.174,1.732,10.512-6.269c0.412-0.468,0.725-1.624,0.387-2.319   c1.713,0.978,2.783,0.422,3.191,0.166C31.512,20.634,31.669,18.527,31.541,16.922z" fill="#FFFFFF"/>
-<path d="M23.691,4c1.897,0,3.692,1.696,3.692,3.692c0,2.196-1.795,3.692-3.692,3.692C21.697,11.384,20,9.888,20,7.692   C20,5.696,21.697,4,23.691,4z"/>
-<path d="M28.152,19.775c-1.299-0.699-6.188-2.196-7.687-3.394c-0.696,0.697-0.998,1.196-0.998,1.196s4.689,3.691,5.49,4.391   c0.696,0.799-6.688,6.688-8.185,6.188c-2.194-0.998,3.193-5.688,3.193-5.688s-2.695-2.895-4.391-1.496   C13.88,22.27,4.101,30.154,3.103,28.855C1.806,26.66,13.181,18.277,12.882,17.08c-0.199-0.697,1.496-2.895,2.994-4.69   c0,0,0,0-4.49-0.997c-1.197,0.798-1.197,2.295-2.895,4.69c-1.997,2.692-1.197,0-1.197,0S8.691,9.996,9.99,8.997   c1.195-0.997,9.08,0,9.08,0S20,12,22,13s5.154,4.379,5.154,4.379s0-6.386,1.197-5.688c0.996,0.999,1.196,5.389,1.196,5.389   S29.848,20.771,28.152,19.775z"/>
-<rect fill="none" height="32" width="32"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_selftimer.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<rect fill="none" height="32" width="32"/>
-<g>
-<path d="M13.492,0c-1.105,0-2,0.895-2,2c0,0,0,0.445,0,0.838c-1.34,0.434-2.59,1.049-3.766,1.846    C6.965,3.922,6.168,3.125,6.168,3.125c-0.781-0.781-2.047-0.781-2.828,0L0.648,5.816c-1.07,1.201-0.43,2.404,0,2.828    c0,0,1.113,1.117,1.984,1.988c-0.945,1.994-1.57,4.121-1.57,6.328l0,0c0,4.942,3.219,14.524,14.969,14.974    C24.285,31.934,31,25.217,31,16.961c0-2.207-0.621-4.336-1.57-6.328c0.871-0.871,1.984-1.988,1.984-1.988    c0.391-0.391,1.096-1.594,0-2.828l-2.691-2.691c-0.781-0.781-2.047-0.781-2.828,0c0,0-0.797,0.797-1.559,1.559    c-1.176-0.797-2.426-1.412-3.762-1.846c0-0.393,0-0.838,0-0.838c0-1.105-0.895-2-2-2L13.492,0L13.492,0z" fill="#FFFFFF"/>
-</g>
-<path d="M30,7.23l-2.691-2.691L24.598,7.25c-1.684-1.484-3.742-2.547-6.022-3.002V2h-5.082v2.248   C11.211,4.703,9.148,5.766,7.465,7.25L4.754,4.539L2.063,7.23l2.941,2.941C3.781,12.15,3.063,14.47,3.063,16.96   c0,9.108,7.719,12.994,12.969,12.974C23.184,29.904,29,24.119,29,16.961c0-2.49-0.715-4.811-1.941-6.789L30,7.23z M16.031,25.941   c-4.957,0-8.977-4.021-8.977-8.978s4.02-8.98,8.977-8.98c4.961,0,8.981,4.023,8.981,8.98S20.992,25.941,16.031,25.941z"/>
-<path d="M16.031,14.949c-0.185,0-0.36,0.033-0.529,0.08l-3.893-3.891l-1.473,1.473l3.936,3.934   c-0.027,0.131-0.041,0.266-0.041,0.404c0,1.105,0.895,2,2,2c1.106,0,2-0.895,2-2C18.031,15.846,17.137,14.949,16.031,14.949z" fill="#040404"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_sequence_burst.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<polygon fill="#FFFFFF" points="27,11 27,7 23,7 23,3 1,3 1,20.998 5,20.998 5,25 9,25 9,29 31,29 31,11  "/>
-<rect fill="none" height="32" width="32"/>
-<path d="M3,5v14h18V5H3z M19,17H5V7h14V17z" fill="#010101"/>
-<polygon fill="#010101" points="23,9 23,21 7,21 7,23 25,23 25,9  "/>
-<polygon fill="#010101" points="27,13 27,25 11,25 11,27 29,27 29,13  "/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_sharpness.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<path d="M31.749,14.955L26.646,2.627C26.238,1.453,25.247,1,24.468,1c-1.625,0-2.18,1.627-2.18,1.627   S17.87,13.341,17.594,14c-0.396,0.946-0.55,1.772-0.602,2.38L11.775,1.719L1,32h21.55l-3.536-9.938   c1.461,1.514,3.502,2.357,5.454,2.357c3.595,0,7.5-2.746,7.5-7.5C31.968,16.92,32.124,16.111,31.749,14.955z" fill="#FFFFFF"/>
-<polyline points="3.834,30 11.775,7.684 19.715,30 3.834,30  "/>
-<path d="M20.995,11l-1.238,3h1.623c0.329-0.797,0.771-1.866,1.238-3H20.995z M29.826,16h-1.538c0.094,0.388,0.172,0.779,0.18,0.92   c0,0.891-0.303,1.705-0.796,2.37l1.078,1.077c0.762-0.943,1.218-2.141,1.218-3.447C29.968,16.732,29.907,16.378,29.826,16z    M20.645,16h-1.535c-0.08,0.378-0.142,0.732-0.142,0.92c0,1.25,0.423,2.396,1.123,3.32l1.07-1.07   c-0.438-0.639-0.693-1.406-0.693-2.232C20.477,16.785,20.557,16.379,20.645,16z M27.939,11h-1.621c0.472,1.143,0.914,2.212,1.238,3   h1.621L27.939,11z M24.468,20.92c-0.646,0-1.247-0.168-1.786-0.439l-1.109,1.108c0.842,0.522,1.832,0.831,2.896,0.831   c1.007,0,1.947-0.275,2.759-0.747l-1.115-1.114C25.607,20.785,25.055,20.92,24.468,20.92z M24.468,6.518   C24.766,7.235,25.122,8.1,25.493,9h1.62L24.8,3.389c-0.184-0.519-0.479-0.519-0.663,0L21.82,9h1.623   C23.814,8.098,24.173,7.233,24.468,6.518z"/>
-<rect fill="none" height="32" width="32"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_tb_capture.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" version="1.1" viewBox="0 0 22 22" width="22">
-<g>
-<rect fill="none" height="22" width="22"/>
-<path d="M2.482,18.417h16.854c0.959-0.004,1.732-0.777,1.736-1.735V5.445c-0.004-0.961-0.777-1.731-1.736-1.735   H2.482C1.523,3.714,0.75,4.484,0.746,5.445v11.236C0.75,17.64,1.521,18.413,2.482,18.417z" fill-opacity="0.4" stroke-opacity="0.4"/>
-<path d="M19.335,4.511H2.483c-0.514,0-0.936,0.421-0.936,0.936v11.234c0,0.515,0.422,0.937,0.936,0.937h16.853   c0.514,0,0.936-0.422,0.936-0.937V5.446C20.271,4.932,19.849,4.511,19.335,4.511z M10.909,15.447c-2.326,0-4.213-1.89-4.213-4.213   c0-2.327,1.887-4.213,4.213-4.213c2.327,0,4.214,1.886,4.214,4.213C15.123,13.558,13.236,15.447,10.909,15.447z M19.335,7.659   h-3.746V5.787h3.746V7.659z" fill="#FFFFFF"/>
-<path d="M7.632,11.234c0,1.807,1.47,3.276,3.276,3.276s3.276-1.47,3.276-3.276s-1.47-3.277-3.276-3.277   S7.632,9.428,7.632,11.234z" fill="#FFFFFF"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_tb_delete.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" version="1.1" viewBox="0 0 22 22" width="22">
-<g>
-<rect fill="none" height="22" width="22"/>
-<path d="M14.13,0.946H7.998c-1.901,0.181-1.75,1.839-1.75,1.839H3.112c-0.547,0-0.802,0.451-0.802,0.8v1.863   c0.083,0.851,0.802,0.757,0.88,0.788l1.461,14.098c0.042,0.406,0.387,0.718,0.796,0.718h11.104c0.411,0,0.756-0.315,0.796-0.728   l1.327-14.088c0,0,0.953,0.141,1.012-0.788V3.571c0-0.335-0.277-0.8-0.799-0.8h-3.006C15.882,2.771,15.894,1.002,14.13,0.946z" fill-opacity="0.4" stroke-opacity="0.4"/>
-<path d="M4.013,6.374l1.436,13.878h11.102l1.31-13.878H4.013z M6.891,18.598L6.002,8.396   c0-0.69,0.92-0.581,0.92-0.079l0.89,10.202C7.812,19.189,6.94,19.158,6.891,18.598z M11.389,18.558   c-0.042,0.616-0.886,0.616-0.924-0.001l0.002-10.241c0.113-0.704,0.91-0.532,0.924,0L11.389,18.558z M14.931,18.6   c-0.084,0.637-0.975,0.48-0.922-0.082l0.896-10.201c0.16-0.721,0.973-0.408,0.92,0.08L14.931,18.6z" fill="#FFFFFF"/>
-<path d="M18.886,5.449V3.572h-3.801l-0.002-0.925c-0.032-0.502-0.369-0.899-0.953-0.899H7.999   c-0.584,0-0.919,0.397-0.951,0.899L7.044,3.586H3.112v1.863H18.886z" fill="#FFFFFF"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_tb_extension.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" version="1.1" viewBox="0 0 22 22" width="22">
-<g>
-<rect fill="none" height="22" width="22"/>
-<path d="M19.616,2.681H2.196c-0.375,0-0.8,0.307-0.8,0.801v2.904c0,0.518,0.488,0.801,0.8,0.801h17.42   c0.518,0,0.8-0.449,0.8-0.801V3.481C20.416,3.091,20.091,2.681,19.616,2.681z" fill-opacity="0.4" stroke-opacity="0.4"/>
-<path d="M19.616,8.493H2.196c-0.375,0-0.8,0.307-0.8,0.801v2.904c0,0.518,0.488,0.801,0.8,0.801h17.42   c0.518,0,0.8-0.449,0.8-0.801V9.294C20.416,8.903,20.091,8.493,19.616,8.493z" fill-opacity="0.4" stroke-opacity="0.4"/>
-<path d="M19.616,14.306H2.196c-0.375,0-0.8,0.307-0.8,0.801v2.904c0,0.518,0.488,0.801,0.8,0.801h17.42   c0.518,0,0.8-0.449,0.8-0.801v-2.904C20.416,14.716,20.091,14.306,19.616,14.306z" fill-opacity="0.4" stroke-opacity="0.4"/>
-<g>
-<path d="M19.617,5.418c0,0.532-0.436,0.968-0.968,0.968H3.163c-0.532,0-0.968-0.436-0.968-0.968V4.45    c0-0.532,0.436-0.968,0.968-0.968h15.486c0.532,0,0.968,0.436,0.968,0.968V5.418z" fill="#FFFFFF"/>
-</g>
-<g>
-<path d="M19.617,11.226c0,0.532-0.436,0.968-0.968,0.968H3.163c-0.532,0-0.968-0.436-0.968-0.968v-0.969    c0-0.532,0.436-0.968,0.968-0.968h15.486c0.532,0,0.968,0.436,0.968,0.968V11.226z" fill="#FFFFFF"/>
-</g>
-<g>
-<path d="M19.617,17.032c0,0.532-0.436,0.968-0.968,0.968H3.163c-0.532,0-0.968-0.436-0.968-0.968v-0.969    c0-0.532,0.436-0.968,0.968-0.968h15.486c0.532,0,0.968,0.436,0.968,0.968V17.032z" fill="#FFFFFF"/>
-</g>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_tb_flash.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" version="1.1" viewBox="0 0 22 22" width="22">
-<g>
-<rect fill="none" height="22" width="22"/>
-<path d="M2.037,20.8h1.621c0.374,0,0.699-0.261,0.78-0.626l0.264-1.186h0.868l0.254,1.181   C5.902,20.536,6.227,20.8,6.605,20.8H8.51c0.556-0.001,0.916-0.595,0.777-0.984l-2.078-8.742c-0.086-0.357-0.408-0.615-0.778-0.615   H4.257c-0.365,0-0.686,0.251-0.775,0.604l-2.22,8.741C1.097,20.205,1.472,20.8,2.037,20.8z" fill-opacity="0.4" stroke-opacity="0.4"/>
-<path d="M20.063,7.704l-5.657-0.021l2.317-5.368c0.28-0.595-0.267-1.126-0.735-1.115h-3.803   c-0.32,0-0.611,0.191-0.738,0.486l-3.533,8.339c-0.254,0.648,0.324,1.133,0.737,1.113l5.67,0.011l-1.356,3.171h-2.396   c-0.737-0.037-1.018,0.854-0.615,1.312l4.061,4.879c0.286,0.335,0.739,0.444,1.151,0.081l5.451-4.912   c0.48-0.35,0.355-1.365-0.545-1.396l-1.627,0.021l2.351-5.487C21.019,8.377,20.675,7.674,20.063,7.704z" fill-opacity="0.4" stroke-opacity="0.4"/>
-<path d="M8.509,20.002H6.605l-0.391-1.812H4.06l-0.402,1.812H2.037l2.221-8.741h2.175L8.509,20.002z M5.996,17.037   L5.149,12.93l-0.871,4.107H5.996z" fill="#FFFFFF"/>
-<g>
-<g>
-<polygon fill="#FFFFFF" points="20.06,8.504 13.193,8.482 15.988,2 12.185,2 8.652,10.338 15.533,10.354 13.494,15.121      10.568,15.121 14.63,20 20.082,15.086 17.224,15.123    "/>
-</g>
-</g>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_tb_play.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" version="1.1" viewBox="0 0 22 22" width="22">
-<g>
-<rect fill="none" height="22" width="22"/>
-<path d="M3.054,19.125c-0.057,0.424,0.537,1.018,1.19,0.694l14.544-8.169c0.428-0.164,0.615-1.008,0.005-1.393   L4.251,1.929C3.56,1.549,3.029,2.205,3.054,2.623V19.125z" fill-opacity="0.4" stroke-opacity="0.4"/>
-<polygon fill="#FFFFFF" points="3.854,2.624 3.854,19.124 18.396,10.953  "/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_tb_record.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22" version="1.1" viewBox="0 0 22 22" width="22">
-<g>
-<rect fill="none" height="22" width="22"/>
-<path d="M20,11c0,4.971-4.029,9-9,9c-4.971,0-9-4.029-9-9s4.029-9,9-9C15.97,2,20,6.029,20,11" fill-opacity="0.4" stroke-opacity="0.4"/>
-<path d="M19,11c0,4.42-3.582,8-8,8c-4.42,0-8-3.58-8-8c0-4.418,3.58-8,8-8C15.417,3,19,6.582,19,11" fill="#FA000F"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_tb_switch_still.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="21.998px" version="1.1" viewBox="0 0 21.998 21.998" width="21.998px" x="0px" y="0px">
-<rect fill="none" height="21.998" width="21.998"/>
-<path d="M21,5.649h-1.201c-0.362,0-0.665,0.257-0.733,0.6h-0.316V5.798c0-0.744-0.605-1.349-1.35-1.349h-2.682  l-2.723-2.716c0.107-0.271,0.052-0.589-0.166-0.807L11.293,0.39c-0.294-0.292-0.767-0.293-1.06,0L8.397,2.228  c-0.292,0.292-0.292,0.768,0,1.06l0.534,0.534c0.324,0.324,0.713,0.204,0.801,0.17l0.457,0.457C9.449,4.455,8.85,5.058,8.85,5.798  v3.25H1.8c-0.854,0-1.551,0.694-1.551,1.549v9.599c0,0.855,0.696,1.551,1.551,1.551h14.398c0.855,0,1.551-0.695,1.551-1.551v-8.373  c0.398,0,1-0.473,1-1.224v-0.451h0.316c0.068,0.342,0.371,0.599,0.733,0.599H21c0.413,0,0.749-0.336,0.749-0.75V6.399  C21.749,5.986,21.413,5.649,21,5.649z" fill-opacity="0.4" stroke-opacity="0.4"/>
-<path d="M16.198,9.798H1.799c-0.44,0-0.8,0.36-0.8,0.8v9.601c0,0.439,0.36,0.8,0.8,0.8h14.399  c0.44,0,0.801-0.36,0.801-0.8v-9.601C16.999,10.158,16.639,9.798,16.198,9.798z M8.999,19.144c-1.988,0-3.6-1.615-3.6-3.601  c0-1.988,1.612-3.601,3.6-3.601c1.989,0,3.6,1.612,3.6,3.601C12.599,17.528,10.988,19.144,8.999,19.144z M16.198,12.489h-3.199  v-1.601h3.199V12.489z" fill="#FFFFFF"/>
-<path d="M17.399,5.198h-7.2c-0.332,0-0.6,0.269-0.6,0.6v3.25h6.599c0.854,0,1.551,0.696,1.551,1.55v0.475  c0.147-0.109,0.25-0.277,0.25-0.475v-4.8C17.999,5.467,17.73,5.198,17.399,5.198z" fill="#FFFFFF"/>
-<circle cx="8.999" cy="15.543" fill="#FFFFFF" r="2.8"/>
-<polygon fill="#FFFFFF" points="13.656,4.448 10.978,1.776 11.298,1.456 10.764,0.92 8.928,2.757 9.462,3.292 9.777,2.977   11.249,4.448 "/>
-<polygon fill="#FFFFFF" points="19.799,6.398 19.799,6.998 18.749,6.998 18.749,9.398 19.799,9.398 19.799,9.998 20.999,9.998   20.999,6.398 "/>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_tb_switch_video.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22px" version="1.1" viewBox="0 0 22 22" width="22px" x="0px" y="0px">
-<rect fill="none" height="22" width="22"/>
-<path d="M21.75,9.001V2.999c0-0.538-0.43-1.248-1.25-1.248h-9c-0.688,0-1.249,0.56-1.249,1.25v5.75h-0.205  L5.536,4.226C5.47,4.16,5.395,4.111,5.316,4.075c0.206-0.292,0.178-0.7-0.083-0.961l-0.89-0.892c-0.294-0.293-0.769-0.292-1.06,0  L0.47,5.035c-0.293,0.293-0.293,0.768,0,1.061l0.892,0.892C1.695,7.32,2.122,7.211,2.323,7.07c0.038,0.079,0.087,0.152,0.15,0.215  l1.466,1.466H3c-0.965,0-1.749,0.786-1.749,1.751V18.5c0,0.966,0.783,1.751,1.749,1.751h12c0.966,0,1.751-0.785,1.751-1.751v-1.25  h1.501v0.251c0,0.414,0.337,0.75,0.75,0.75h2c0.413,0,0.749-0.336,0.749-0.75v-6c0-0.413-0.336-0.75-0.749-0.75h-2  c-0.413,0-0.75,0.336-0.75,0.75v0.249H16.75l-0.018-1.499H20.5C21.337,10.251,21.75,9.53,21.75,9.001z" fill-opacity="0.4" stroke-opacity="0.4"/>
-<path d="M14.999,8.751c0.593,0,1.114,0.297,1.432,0.749h4.07C20.84,9.5,21,9.202,21,9.001V3  c0-0.328-0.295-0.5-0.499-0.5H11.5C11.227,2.5,11,2.726,11,3v5.751H14.999z M18.5,3.182h2.001v1H18.5V3.182z M16,4.091  c1.105,0,2,0.896,2,2c0,1.104-0.895,2-2,2c-1.104,0-2-0.897-2-2C14,4.987,14.896,4.091,16,4.091z" fill="#FFFFFF"/>
-<path d="M16,10.501C16,9.948,15.553,9.5,15,9.5H3c-0.553,0-0.999,0.447-0.999,1.001v7.998  c0,0.555,0.446,1.002,0.999,1.002h12c0.553,0,1-0.447,1-1.002V10.501z" fill="#FFFFFF"/>
-<polygon fill="#FFFFFF" points="5.005,4.757 3.004,6.756 5,8.751 9.013,8.751 "/>
-<rect fill="#FFFFFF" height="1.26" transform="matrix(0.707 -0.7072 0.7072 0.707 -2.4209 3.3659)" width="3.977" x="0.863" y="3.974"/>
-<rect fill="#FFFFFF" height="6" width="2" x="19" y="11.501"/>
-<rect fill="#FFFFFF" height="4" width="0.998" x="17.002" y="12.501"/>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_tb_upload.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22px" version="1.1" viewBox="0 0 22 22" width="22px" x="0px" y="0px">
-<path d="M21.53,14.888c0,0-1.171-1.171-2.339-2.339c0.084-0.084,0.214-0.117,0.251-0.233  c0.292-0.907,0.44-1.833,0.44-2.749c0-4.987-4.058-9.044-9.045-9.044S1.793,4.579,1.793,9.566s4.058,9.045,9.045,9.045  c0.932,0,1.846-0.158,2.731-0.438c0,1.413,0,2.826,0,2.826c0,0.414,0.336,0.75,0.75,0.75h3.725c0.414,0,0.75-0.336,0.75-0.75  c0,0,0-3.708,0-4.832c0.835,0,2.206,0,2.206,0c0.303,0,0.576-0.183,0.693-0.463c0.038-0.093,0.057-0.19,0.057-0.287  C21.75,15.223,21.674,15.031,21.53,14.888z M12.621,9.511c0,0,0,1.044,0,1.468c-0.207,0.206-0.787,0.786-1.535,1.533  c-0.018-0.863-0.891-1.733-1.754-1.733c0,0-0.401,0-0.699,0c-0.141-0.141-0.286-0.286-0.286-0.286  c-0.292-0.292-0.659-0.436-1.026-0.438c0.125-0.156,0.237-0.329,0.237-0.544c0,0,0-0.51,0-0.782C7.702,8.512,7.992,8.077,8.22,7.736  c0.033,0,0.103,0,0.103,0c0.921,0,1.76-0.838,1.76-1.759c0-0.037-0.021-0.07-0.023-0.107c0.3-0.044,0.592-0.15,0.812-0.369  c0.001-0.001,0.003-0.003,0.004-0.004c0.199-0.2,0.299-0.466,0.351-0.742c0.037,0.081,0.036,0.179,0.101,0.242  c0,0,0.244,0.243,0.34,0.338c-0.053,0.126-0.158,0.235-0.158,0.372c0,0.1,0.014,0.201,0.041,0.302  c0.046,0.163,0.208,0.518,0.567,0.653c0,0.003,0,0.007,0,0.009c-0.104-0.037-0.206-0.082-0.285-0.161c0,0,0.146,0.146,0.285,0.285  c0,0.297,0,0.696,0,0.696c0,0.603,0.354,0.996,0.784,1.163C12.74,8.916,12.621,9.201,12.621,9.511z" fill-opacity="0.4" stroke-opacity="0.4"/>
-<path d="M11.361,16.168c-0.303,0-0.577-0.183-0.693-0.463s-0.052-0.604,0.163-0.817l4.821-4.818  c0.293-0.293,0.768-0.293,1.061,0l2.016,2.017c0.26-0.809,0.404-1.656,0.404-2.52c0-4.572-3.722-8.294-8.295-8.294  S2.543,4.994,2.543,9.566s3.722,8.295,8.295,8.295c0.975,0,1.888-0.167,2.731-0.459v-1.234h-0.107  C12.621,16.168,11.361,16.168,11.361,16.168z M6.808,15.669c-1.927-1.277-3.212-3.441-3.278-5.904  c0.725,0.725,2.27,2.269,2.27,2.269s-0.505,0.505,0,1.01c0.47,0.469,1.009,1.009,1.009,1.009V15.669z M9.332,11.528  c-0.475,0-1.01,0-1.01,0s-0.195-0.197-0.504-0.504c-0.308-0.308-0.717-0.293-1.011,0c-0.291,0.294-0.504,0.504-0.504,0.504  l-1.01-1.01c0.25-0.248,0.27-0.729,0-0.998c-0.269-0.27-0.505-0.516-0.505-0.516c-0.259-0.261-0.259-0.748,0-1.009  c0.261-0.26,0.75-0.26,1.01,0l0.505,0.505v1.01c0,0.252,0.504,0.252,0.504,0v-1.01l1.011-1.515c0,0,0,0,0.504,0  c0.505,0,1.01-0.505,1.01-1.009c0-0.506-0.505-1.009-1.01-1.009c-0.47,0-0.251,0-0.504,0s-0.253-0.505,0-0.505s1.009,0,1.009,0  s0-0.002,0.505,0.505c0.254,0.252,0.757,0.252,1.011,0c0.251-0.253,0.251-0.759,0-1.011c-0.026-0.024-0.856-0.854-1.443-1.441  c0.618-0.171,1.267-0.27,1.938-0.27c0.532,0,1.051,0.061,1.553,0.17L11.855,2.95v1.516l0.408,0.406c0.131,0.13,0.376,0.13,0.505,0  c0.131-0.129,0.131-0.374,0-0.504L12.62,4.219c-0.266-0.265,0-0.512,0-0.512s0.246-0.253,0.498,0  c0.253,0.255,0.504,0.508,0.504,0.508s-1.027,1.027-1.261,1.26c-0.232,0.234,0,0.505,0,0.505l0.505,0.505c0,0,0,0.502,0,1.007  s0.505,0.505,0.505,0.505s0.505,0,1.01,0s0.505-0.505,0.505-0.505V6.484c0,0,0.003-0.507,0.507-0.507h1.512c0,0,0,0.504,0.506,0.504  c0,0,0.109,0.152,0.142,0.227l-1.793,1.793h-1.378c-0.505,0-1.01,0.504-1.01,1.01v1.778l-3.028,3.026v-1.777  C10.343,12.092,9.808,11.528,9.332,11.528z M16.183,10.6l-4.821,4.818h2.958V21h3.725v-5.582H21L16.183,10.6z" fill="#FFFFFF"/>
-<rect fill="none" height="22" width="22"/>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_wb.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32 32" width="32">
-<g>
-<rect fill="none" height="32" width="32"/>
-<path d="M22.915,14.004C23.344,13.33,24,11.459,24,9.999C24,5.588,20.411,2,16,2S8,5.588,8,9.999   c0,1.46,0.563,3.112,1.085,4.005C4.625,13.924,1,17.588,1,21.999S4.589,30,9,30c3.01,0,5.635-1.674,7-4.137   C17.365,28.326,19.99,30,23,30c4.411,0,8-3.59,8-8.001C31,17.799,27.75,14.004,22.915,14.004z" fill="#FFFFFF"/>
-<path d="M16,4c-3.313,0-6,2.686-6,5.999S12.687,16,16,16c3.313,0,6-2.688,6-6.001S19.313,4,16,4z M16,14   c-2.21,0-4-1.791-4-4s1.79-4,4-4s4,1.791,4,4S18.21,14,16,14z" fill="#040404"/>
-<circle cx="23" cy="21.999" fill="#040404" r="6"/>
-<circle cx="9" cy="21.999" fill="#040404" r="6"/>
-<circle cx="9" cy="22" fill="#B2B2B2" r="4"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_wb_auto.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32px" version="1.1" viewBox="0 0 32 32" width="32px" x="0px" y="0px">
-<rect fill="#FFFFFF" height="28" width="28" x="2" y="2"/>
-<rect fill="none" height="32" width="32"/>
-<path d="M4,4v24h24V4H4z M26,26H16v-3.798h-0.63l-0.357,1.454c-0.218,0.895-1.02,1.525-1.941,1.525h-2.939  c-0.626,0-2.304-0.536-1.926-2.54L12.233,8.28c0.241-0.863,1.029-1.462,1.926-1.462H16V6h10V26z"/>
-<path d="M21.867,23.18h-3.451l-0.709-2.979h-3.904l-0.73,2.979h-2.939L14.158,8.82h3.942L21.867,23.18z M17.312,18.308l-1.538-6.743  l-1.578,6.743H17.312z"/>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_wb_cloudy.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32" version="1.1" viewBox="0 0 32.021 32" width="32.021">
-<g>
-<rect fill="none" height="32" width="31.936" x="0.064"/>
-<path d="M9.572,3.24H9.57c-2.674,1.385-4.414,3.64-3.924,7.312C3.807,11.242,0,13.174,0,17.744   c0,3.908,3.662,8.281,3.662,8.281h24.666c0,0,3.672-2.887,3.672-6.955c0,0,0.475-2.443-3.15-5.809   c0.023-0.305,0.521-3.147-1.846-5.918c-1.357-1.391-3.283-1.957-5.68-1.771C19.361,3.75,14.794,0.535,9.572,3.24z" fill="#FFFFFF"/>
-<path d="M29.982,18.609c-0.168-1.733-1.313-3.26-3.184-4.609c0.053-0.354,0.562-3.23-1.223-5.258   c-1.037-1.18-2.793-1.463-4.974-1.105c-1.092-1.152-5.383-5.07-10.117-2.621C8.107,6.25,6.948,8.234,7.814,11.98   c-1.526,0.354-4.188,1.193-5.405,3.746c-1.624,3.741,2.269,8.299,2.269,8.299h22.871C29.152,22.396,30.201,20.867,29.982,18.609z    M26.73,22.025H5.75c-2.518-3.869-1.677-5.119-1.514-5.496c0.707-1.615,2.828-2.322,4.029-2.602l1.732-0.521L9.531,9.604   c0-1.104,0.281-2.084,1.873-2.811c4.549-2.187,8.48,2.99,8.48,2.99s3.22-0.791,4.266,0.357c1.33,1.591,0.5,3.514,0.574,4.828   c2.723,1.877,3.176,2.783,3.271,3.828C27.994,18.797,28.278,20.08,26.73,22.025z" fill="#010101"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_wb_fluorecent.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32px" version="1.1" viewBox="0 0 32 32" width="32px" x="0px" y="0px">
-<g>
-<path d="M31,10.932H1v9.939h3.662l-2.297,5.043c-0.4,0.886-0.124,2.146,1.023,2.643l1.822,0.789   c1.003,0.434,2.169-0.012,2.621-1.004c0,0,0.406-0.893,0.498-1.096c0.081,0.29,0.238,0.935,1.105,1.311l1.822,0.789   c1.003,0.434,2.169-0.012,2.621-1.004c0,0,1.066-2.342,2.121-4.658c1.054,2.316,2.121,4.658,2.121,4.658   c0.451,0.99,1.619,1.438,2.621,1.004l1.822-0.789c0.814-0.353,1.01-0.969,1.105-1.311c0.092,0.203,0.498,1.096,0.498,1.096   c0.451,0.99,1.619,1.438,2.621,1.004l1.822-0.789c1.193-0.518,1.399-1.811,1.023-2.643l-2.297-5.043H31V10.932z" fill="#FFFFFF"/>
-<polygon points="6.857,20.871 4.188,26.734 6.01,27.523 9.038,20.871  "/>
-<polygon points="10.234,26.734 12.057,27.523 15.084,20.871 12.904,20.871  "/>
-<polygon points="19.095,20.871 16.916,20.871 19.943,27.523 21.765,26.734  "/>
-<rect fill="none" height="32" width="32"/>
-<g>
-<polygon points="22.962,20.871 25.99,27.523 27.812,26.734 25.142,20.871   "/>
-<rect height="5.963" width="26" x="3" y="12.92"/>
-<rect fill="#FFFFFF" height="1.988" width="22" x="5" y="14.906"/>
-</g>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_wb_sunny.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32px" version="1.1" viewBox="0 0 32 32" width="32px" x="0px" y="0px">
-<g>
-<rect fill="none" height="32" width="31.998"/>
-<path d="M23.941,19C27.247,19,32,19,32,19l-0.002-6c0,0-4.751,0-8.057,0c-0.062-0.168-0.13-0.334-0.203-0.496   c2.338-2.337,5.697-5.697,5.697-5.697l-4.246-4.24c0,0-3.355,3.357-5.693,5.695C19.333,8.188,19.167,8.121,19,8.057   C19,4.751,19,0,19,0h-6c0,0,0,4.751,0,8.057c-0.168,0.064-0.334,0.131-0.497,0.204c-2.338-2.338-5.694-5.694-5.694-5.694   L2.566,6.809c0,0,3.358,3.358,5.694,5.695C8.187,12.666,8.121,12.832,8.057,13C4.751,13,0,13,0,13v6c0,0,4.751,0,8.057,0   c0.064,0.168,0.13,0.334,0.204,0.496c-2.336,2.339-5.694,5.697-5.694,5.697l4.238,4.244c0,0,3.359-3.359,5.698-5.698   c0.163,0.073,0.329,0.14,0.497,0.204c0,3.306,0,8.057,0,8.057h6c0,0,0-4.751,0-8.057c0.168-0.064,0.334-0.131,0.496-0.204   c2.338,2.339,5.693,5.698,5.693,5.698l4.242-4.246c0,0-3.356-3.356-5.693-5.695C23.811,19.334,23.878,19.168,23.941,19z" fill="#FFFFFF"/>
-<path d="M14.999,7.564c0.329-0.039,0.661-0.064,1-0.064c0.338,0,0.671,0.025,1,0.064V2h-2V7.564z"/>
-<path d="M7.5,16c0-0.339,0.025-0.672,0.064-1H2v2h5.564C7.525,16.672,7.5,16.339,7.5,16z"/>
-<path d="M22.667,10.746l3.938-3.938l-1.416-1.414l-3.936,3.937C21.779,9.746,22.253,10.221,22.667,10.746z"/>
-<path d="M5.395,6.809l3.937,3.937c0.415-0.524,0.889-0.999,1.414-1.414L6.809,5.395L5.395,6.809z"/>
-<path d="M24.434,15c0.038,0.328,0.063,0.661,0.063,1s-0.025,0.672-0.063,1h5.563v-2H24.434z"/>
-<path d="M21.252,22.669l3.937,3.938l1.414-1.416l-3.936-3.937C22.252,21.78,21.778,22.254,21.252,22.669z"/>
-<path d="M9.332,21.255l-3.937,3.938l1.412,1.414l3.938-3.938C10.22,22.254,9.746,21.78,9.332,21.255z"/>
-<path d="M14.999,24.436V30h2v-5.564c-0.329,0.039-0.662,0.064-1,0.064C15.66,24.5,15.328,24.475,14.999,24.436z"/>
-<path d="M9.499,16c0,3.584,2.916,6.5,6.5,6.5c3.584,0,6.5-2.916,6.5-6.5s-2.916-6.5-6.5-6.5C12.415,9.5,9.499,12.416,9.499,16z"/>
-<circle cx="15.999" cy="16" fill="#FFFFFF" r="4.5"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cam4_wb_tungsten.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="32px" version="1.1" viewBox="0 0 32.001 32" width="32.001px" x="0px" y="0px">
-<g>
-<path d="M23.739,19.496c0.073-0.162,0.141-0.328,0.204-0.496c3.307,0,8.059,0,8.059,0L32,13c0,0-4.75,0-8.057,0   c-0.432-1.14-1.094-2.167-1.941-3.013V2h-12v7.983C9.153,10.83,8.489,11.858,8.057,13C4.751,13,0,13,0,13v6c0,0,4.751,0,8.057,0   c0.063,0.168,0.13,0.334,0.204,0.496c-2.337,2.337-5.695,5.695-5.695,5.695l4.238,4.244c0,0,3.36-3.359,5.699-5.697   c0.163,0.074,0.329,0.141,0.497,0.205C13,27.249,13,32,13,32h6c0,0,0-4.751,0-8.057c0.168-0.064,0.334-0.131,0.497-0.205   c2.339,2.339,5.694,5.697,5.694,5.697l4.242-4.244C29.433,25.191,26.078,21.833,23.739,19.496z" fill="#FFFFFF"/>
-<path d="M20.001,10.888V4h-8v6.885C10.482,12.076,9.5,13.923,9.5,16c0,3.582,2.916,6.5,6.5,6.5c3.583,0,6.5-2.918,6.5-6.5   C22.5,13.925,21.519,12.079,20.001,10.888z"/>
-<circle cx="16" cy="16" fill="#FFFFFF" r="4.5"/>
-<path d="M9.332,21.254l-3.937,3.938l1.412,1.414l3.938-3.938C10.22,22.253,9.747,21.779,9.332,21.254z M7.5,16   c0-0.339,0.025-0.672,0.064-1H2v2h5.564C7.525,16.672,7.5,16.339,7.5,16z M15,24.436V30h2v-5.564c-0.328,0.039-0.66,0.064-1,0.064   C15.661,24.5,15.329,24.475,15,24.436z M21.254,22.668l3.937,3.938l1.414-1.414l-3.937-3.938   C22.253,21.779,21.779,22.254,21.254,22.668z M24.436,15c0.038,0.328,0.063,0.661,0.063,1s-0.025,0.672-0.063,1H30v-2H24.436z"/>
-<rect fill="none" height="32" width="32"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cams_tb_rec_pause.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22px" version="1.1" viewBox="0 0 22 22" width="22px" x="0px" y="0px">
-<g>
-<rect height="16" width="5" x="13" y="3"/>
-<rect height="16" width="5" x="4" y="3"/>
-<rect fill="none" height="22" width="22"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_cams_tb_rec_stop.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22px" version="1.1" viewBox="0 0 22 22" width="22px" x="0px" y="0px">
-<g>
-<rect height="16" width="16" x="3" y="3"/>
-<rect fill="none" height="22" width="22"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_tb_zoom.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="22px" version="1.1" viewBox="0 0 22 22" width="22px" x="0px" y="0px">
-<g>
-<rect fill="none" height="22" width="22"/>
-<path d="M10.999,1.2c-5.406,0-9.798,4.396-9.8,9.8c0.002,5.404,4.394,9.798,9.8,9.8   c5.407-0.002,9.798-4.396,9.801-9.8C20.797,5.596,16.406,1.2,10.999,1.2z" fill-opacity="0.4" stroke-opacity="0.4"/>
-<path d="M11,2c-4.963,0-9,4.039-9,9s4.037,9,9,9s9-4.039,9-9S15.963,2,11,2z M15,16.5H7V15h8V16.5z M15,9.75h-3.25   V13h-1.5V9.75H7v-1.5h3.25V5h1.5v3.25H15V9.75z" fill="#FFFFFF"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_indi_vid4_video.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32.071" height="32" viewBox="0 0 32.071 32">
-<g>
-<g>
-<path fill="#FFFFFF" d="M0,9.273c0,0,2.615,2.615,2.744,2.744c-0.354,0.595-0.612,1.251-0.612,1.991v11.947    c0,2.196,1.787,3.982,3.982,3.982h14.934c2.196,0,3.982-1.786,3.982-3.982l0-0.995H32V12.018h-6.969l0,1.991    c0-2.196-1.787-3.982-3.982-3.982c0,0-6.28,0-7.623,0C12.82,9.421,11.74,8.341,10.56,7.161c0.352-0.352,0.704-0.703,0.704-0.703    L7.04,2.232L0,9.273z"/>
-</g>
-<path d="M27.071,14v2h-4v-2c0-1.104-0.896-2-2-2h-8.485L7.707,7.122l0.707-0.707L7,5L2.757,9.243l1.414,1.414L4.878,9.95L6.928,12   H6.07c-1.104,0-2,0.896-2,2v12c0,1.104,0.896,2,2,2h15c1.104,0,2-0.896,2-2v-5h4v2h3v-9H27.071z M21.071,26h-15V14h15V26z"/>
-<rect x="0.071" fill="none" width="32" height="32"/>
-</g>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qgn_prop_vc_media_play.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" height="36px" version="1.1" viewBox="0 0 42 36" width="42px" x="0px" y="0px">
-<path d="M31.999,3h-22C7.794,3,6.001,4.793,6.001,6.998v23.001C6.001,32.205,7.794,34,9.999,34h22  C34.205,34,36,32.205,36,29.999V6.998C36,4.793,34.205,3,31.999,3z" fill-opacity="0.2" stroke-opacity="0.2"/>
-<path d="M35,29H7v1c0,1.65,1.351,3,3,3h22c1.649,0,3-1.35,3-3V29z" fill-opacity="0.5" stroke-opacity="0.5"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="21" x2="21" y1="4" y2="59.0014">
-<stop offset="0" style="stop-color:#FFFFFF"/>
-<stop offset="1" style="stop-color:#B2B2C9"/>
-</linearGradient>
-<path d="M35,7c0-1.65-1.351-3-3-3H10C8.351,4,7,5.35,7,7v22c0,1.65,1.351,3,3,3h22c1.649,0,3-1.35,3-3V7z" fill="url(#SVGID_1_)"/>
-<path d="M34.113,4.877l-0.706,0.707C33.771,5.947,33.999,6.448,33.999,7v22c0,1.1-0.899,2-2,2H10.001  c-0.552,0-1.054-0.228-1.417-0.593l-0.707,0.707C8.422,31.66,9.173,32,10,32h22c1.65,0,3-1.35,3-3V7  C35,6.173,34.66,5.422,34.113,4.877z" fill-opacity="0.25" stroke-opacity="0.25"/>
-<path d="M7.887,31.123l0.706-0.707C8.229,30.053,8.001,29.552,8.001,29V7c0-1.1,0.899-2,2-2h21.998  c0.552,0,1.054,0.228,1.417,0.593l0.707-0.707C33.578,4.34,32.827,4,32,4H10C8.35,4,7,5.35,7,7v22  C7,29.827,7.34,30.578,7.887,31.123z" fill="#FFFFFF" fill-opacity="0.25" stroke-opacity="0.25"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2_" x1="21.8086" x2="21.8086" y1="17.5742" y2="54.3669">
-<stop offset="0" style="stop-color:#79CD19"/>
-<stop offset="1" style="stop-color:#1B6332"/>
-</linearGradient>
-<polygon fill="url(#SVGID_2_)" points="16.301,24.414 16.301,11.914 27.316,18.224 16.301,24.414 "/>
-<polygon fill="#FFFFFF" fill-opacity="0.25" points="27.316,18.224 16.301,24.414 15.05,26.407 29.594,18.235 " stroke-opacity="0.25"/>
-<polygon fill-opacity="0.2" points="16.301,11.914 27.316,18.224 29.594,18.235 15.05,9.907 15.05,26.407 16.301,24.414 " stroke-opacity="0.2"/>
-<rect fill="none" height="36" width="42"/>
-</svg>
--- a/camerauis/cameraxui/cxui/icons/qtg_mono_tick.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="40px" version="1.1" viewBox="0 0 40 40" width="40px" x="0px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="0px">
-<rect fill="none" fill-opacity="0.5" height="40" stroke-opacity="0.5" width="40"/>
-<polygon points="37,9.852 33.465,6.316 14.886,24.896 6.535,16.543 3,20.079 14.92,32 "/>
-</svg>
Binary file camerauis/cameraxui/cxui/icons/scene_automatic.png has changed
Binary file camerauis/cameraxui/cxui/icons/scene_close-up.png has changed
Binary file camerauis/cameraxui/cxui/icons/scene_landscape.png has changed
Binary file camerauis/cameraxui/cxui/icons/scene_lowlight.png has changed
Binary file camerauis/cameraxui/cxui/icons/scene_macro.png has changed
Binary file camerauis/cameraxui/cxui/icons/scene_night.png has changed
Binary file camerauis/cameraxui/cxui/icons/scene_nightportrait.png has changed
Binary file camerauis/cameraxui/cxui/icons/scene_portrait.png has changed
Binary file camerauis/cameraxui/cxui/icons/scene_sport.png has changed
Binary file camerauis/cameraxui/cxui/icons/whitebg.PNG has changed
Binary file camerauis/cameraxui/cxui/icons/zoomin.png has changed
--- a/camerauis/cameraxui/cxui/icons/zoomin.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   id="svg2709"
-   sodipodi:version="0.32"
-   inkscape:version="0.46"
-   width="32"
-   height="32"
-   version="1.0"
-   sodipodi:docname="zoomin.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <metadata
-     id="metadata2714">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <defs
-     id="defs2712">
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       id="perspective2716" />
-  </defs>
-  <sodipodi:namedview
-     inkscape:window-height="1106"
-     inkscape:window-width="1920"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0.0"
-     guidetolerance="10.0"
-     gridtolerance="10.0"
-     objecttolerance="10.0"
-     borderopacity="1.0"
-     bordercolor="#666666"
-     pagecolor="#ffffff"
-     id="base"
-     showgrid="false"
-     inkscape:zoom="14.4375"
-     inkscape:cx="16"
-     inkscape:cy="16"
-     inkscape:window-x="-4"
-     inkscape:window-y="-4"
-     inkscape:current-layer="svg2709" />
-  <path
-     style="fill:#000000"
-     d="M 14.069264,27.253247 C 14.069264,25.070938 13.631996,24.753247 10.628281,24.753247 C 5.9722725,24.753247 5.5826425,23.593643 9.1048215,20.219181 C 12.406282,17.056181 12.944462,14.753247 10.382173,14.753247 C 9.0654895,14.753247 9.3399315,14.065692 11.632173,11.621645 C 13.703368,9.4132835 14.179187,8.3496795 13.246137,8.0139355 C 12.272283,7.6635095 12.517669,6.9048443 14.175718,5.1399313 L 16.428426,2.7420338 L 18.759547,4.9320088 C 20.474491,6.543115 20.762074,7.3250663 19.847531,7.8902855 C 18.944666,8.4482865 19.403529,9.4927055 21.523919,11.705917 C 23.796368,14.077842 24.069523,14.753247 22.756355,14.753247 C 20.194066,14.753247 20.732246,17.056181 24.033706,20.219181 C 27.555886,23.593643 27.166255,24.753247 22.510247,24.753247 C 19.506532,24.753247 19.069264,25.070938 19.069264,27.253247 C 19.069264,29.253247 18.569264,29.753247 16.569264,29.753247 C 14.569264,29.753247 14.069264,29.253247 14.069264,27.253247 z"
-     id="path2742" />
-</svg>
Binary file camerauis/cameraxui/cxui/icons/zoomout.png has changed
--- a/camerauis/cameraxui/cxui/icons/zoomout.svg	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   version="1.0"
-   width="32"
-   height="32"
-   id="svg2556">
-  <defs
-     id="defs2559" />
-  <path
-     d="M 5.861472,29.084415 C 5.861472,28.251082 4.972583,27.584415 3.861472,27.584415 C 1.4548497,27.584415 1.3569057,26.749797 3.418176,23.806921 C 4.504332,22.256216 4.60862,21.584415 3.763188,21.584415 C 3.033839,21.584415 3.309821,20.746476 4.456484,19.479427 C 5.504227,18.321684 6.248972,17.196684 6.111472,16.979427 C 5.521877,16.047839 5.935397,14.584415 6.78823,14.584415 C 8.065082,14.584415 10.96517,20.607611 10.24746,21.768891 C 9.927409,22.286744 10.471859,23.601404 11.457349,24.690358 C 13.187772,26.602455 13.17637,26.689306 11.124485,27.225886 C 9.95592,27.531473 8.757816,28.412155 8.462031,29.182957 C 7.745766,31.049515 5.861472,30.978115 5.861472,29.084415 z M 23.861471,29.084415 C 23.861471,28.251082 22.972582,27.584415 21.861471,27.584415 C 19.454849,27.584415 19.356905,26.749797 21.418175,23.806921 C 22.504331,22.256216 22.608619,21.584415 21.763187,21.584415 C 21.033838,21.584415 21.30982,20.746476 22.456483,19.479427 C 23.504227,18.321684 24.248971,17.196684 24.111471,16.979427 C 23.521876,16.047839 23.935396,14.584415 24.788229,14.584415 C 26.065081,14.584415 28.965169,20.607611 28.247459,21.768891 C 27.927408,22.286744 28.471858,23.601404 29.457348,24.690358 C 31.187772,26.602455 31.17637,26.689306 29.124484,27.225886 C 27.955919,27.531473 26.757815,28.412155 26.462031,29.182957 C 25.745765,31.049515 23.861471,30.978115 23.861471,29.084415 z M 14.861471,16.084415 C 14.861471,15.251082 13.972582,14.584415 12.861471,14.584415 C 10.45485,14.584415 10.356906,13.749797 12.418175,10.806921 C 13.504331,9.256216 13.608619,8.584416 12.763187,8.584416 C 12.033838,8.584416 12.30982,7.7464763 13.456483,6.4794279 C 14.504227,5.3216848 15.248971,4.1966848 15.111471,3.9794279 C 14.521876,3.0478394 14.935396,1.5844156 15.788229,1.5844156 C 17.065081,1.5844156 19.965169,7.6076113 19.247459,8.768892 C 18.927408,9.286744 19.471858,10.601404 20.457348,11.690358 C 22.187772,13.602455 22.17637,13.689306 20.124484,14.225886 C 18.955919,14.531473 17.757815,15.412155 17.462031,16.182957 C 16.745765,18.049515 14.861471,17.978115 14.861471,16.084415 z"
-     id="path2774"
-     style="fill:#000000" />
-</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/inc/cxuiapplication.h	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* 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 CXUIAPPLICATION_H
+#define CXUIAPPLICATION_H
+
+#include <QObject>
+#include <HbApplication>
+
+class CxuiApplication : public HbApplication
+{
+    Q_OBJECT
+
+public:
+    CxuiApplication(int &argc, char *argv[]);
+    ~CxuiApplication();
+
+public: // from HbApplication
+#if defined(Q_WS_S60)
+    bool symbianEventFilter(const QSymbianEvent *e);
+#endif // Q_WS_S60
+
+signals:
+#if defined(Q_WS_S60)
+    void symbianEvent(const QSymbianEvent *e);
+#endif // Q_WS_S60
+};
+
+#endif // CXUIAPPLICATION_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/inc/cxuiapplicationframeworkmonitor.h	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,71 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef CXUIAPPLICATIONFRAMEWORKMONITOR_H
+#define CXUIAPPLICATIONFRAMEWORKMONITOR_H
+
+#include <QObject>
+
+class CxeSettings;
+class CxuiApplication;
+class CxuiApplicationFrameworkMonitorPrivate;
+
+/*!
+* Application Framework Monitor.
+*/
+class CxuiApplicationFrameworkMonitor : public QObject
+{
+    Q_OBJECT
+    Q_ENUMS(ForegroundState)
+
+public:
+    /*!
+    * Foreground state enumeration.
+    */
+    enum ForegroundState
+    {
+        /*! Note or dialog partially owns foreground */
+        ForegroundPartiallyLost,
+        /*! Other application owns foreground */
+        ForegroundFullyLost,
+        /*! This application owns foreground */
+        ForegroundOwned
+    };
+
+public:
+    CxuiApplicationFrameworkMonitor(CxuiApplication &application, CxeSettings& settings);
+    virtual ~CxuiApplicationFrameworkMonitor();
+
+public:
+    ForegroundState foregroundState() const;
+
+signals:
+    /*!
+    * Signal that foreground state has changed.
+    * @param t New foreground state.
+    */
+    void foregroundStateChanged(CxuiApplicationFrameworkMonitor::ForegroundState t);
+
+    /*!
+    * Signal battery being empty. Device is ecpected to power down at any moment.
+    */
+    void batteryEmpty();
+
+private:
+    CxuiApplicationFrameworkMonitorPrivate* p;
+};
+
+#endif // CXUIAPPLICATIONFRAMEWORKMONITOR_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/inc/cxuiapplicationframeworkmonitorprivate.h	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,77 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef CXUIAPPLICATIONFRAMEWORKMONITORPRIVATE_H
+#define CXUIAPPLICATIONFRAMEWORKMONITORPRIVATE_H
+
+#include <QObject>
+#include <QVariant>
+#include "cxuiapplicationframeworkmonitor.h"
+
+class CxeSettings;
+class CxuiApplication;
+#ifdef Q_OS_SYMBIAN
+class RWsSession;
+class RWindowGroup;
+class QString;
+class QSymbianEvent;
+#endif // Q_OS_SYMBIAN
+
+
+class CxuiApplicationFrameworkMonitorPrivate : public QObject
+{
+    Q_OBJECT
+
+public:
+    CxuiApplicationFrameworkMonitorPrivate(CxuiApplication &application, CxeSettings& settings);
+    virtual ~CxuiApplicationFrameworkMonitorPrivate();
+
+public:
+    CxuiApplicationFrameworkMonitor::ForegroundState foregroundState() const;
+
+signals:
+    void foregroundStateChanged(CxuiApplicationFrameworkMonitor::ForegroundState t);
+    void batteryEmpty();
+
+#ifdef Q_OS_SYMBIAN
+private slots:
+    void handleEvent(const QSymbianEvent *event);
+    void handlePropertyEvent(long int uid, unsigned long int key, QVariant value);
+
+private:
+    void init();
+    bool handleWindowServerEvent(const QSymbianEvent *event);
+    void setState(CxuiApplicationFrameworkMonitor::ForegroundState state);
+    CxuiApplicationFrameworkMonitor::ForegroundState getCurrentState();
+    unsigned int focusedApplicationUid();
+#endif // Q_OS_SYMBIAN
+
+
+private:
+    CxuiApplication &mApplication;
+    CxeSettings& mSettings;
+#ifdef Q_OS_SYMBIAN
+    RWsSession &mWsSession;
+    RWindowGroup &mWindowGroup;
+    int mWindowGroupId;
+    QString mWindowGroupName;
+    int mKeyLockState;
+    int mBatteryStatus;
+#endif // Q_OS_SYMBIAN
+    CxuiApplicationFrameworkMonitor::ForegroundState mState;
+};
+
+#endif // CXUIAPPLICATIONFRAMEWORKMONITORPRIVATE_H
--- a/camerauis/cameraxui/cxui/inc/cxuicapturekeyhandler.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/inc/cxuicapturekeyhandler.h	Thu May 13 21:30:19 2010 +0300
@@ -33,6 +33,8 @@
     virtual ~CxuiCaptureKeyHandler();
 
 public:
+    void listenKeys(bool listen);
+
     bool isAutofocusKeyPressed();
     bool isCaptureKeyPressed();
 
@@ -47,6 +49,9 @@
     void captureKeyReleased();
 
 private:
+    void listenKey(int key);
+
+private:
     bool mAutofocusKeyPressed;
     bool mCaptureKeyPressed;
 
--- a/camerauis/cameraxui/cxui/inc/cxuienums.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/inc/cxuienums.h	Thu May 13 21:30:19 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -35,24 +35,6 @@
         //! Preview for captured image
         VideoPostCaptureView = 3
     };
-
-    enum StillSceneModes
-    {
-        //! Automatic
-        StillSceneAuto   = 0,
-        //! Portrait
-        StillScenePortrait   = 1,
-        //! Landscape
-        StillSceneLandscape   = 2,
-        //! Macro
-        StillSceneMacro   = 3,
-        //! Sports
-        StillSceneSports   = 4,
-        //! Night
-        StillSceneNight   = 5,
-        //! Night portrait
-        StillSceneNightPortrait   = 6
-    };
 }
 
 // Application layout strings
@@ -61,13 +43,10 @@
 
     // Application layout xml files
     static const char *VIDEO_1ST_XML = ":/xml/view_video_precapture.docml";
-    static const char *VIDEO_2ND_XML = ":/xml/view_video_precapture_secondary.docml";
     static const char *STILL_1ST_XML = ":/xml/view_still_precapture.docml";
-    static const char *STILL_2ND_XML = ":/xml/view_still_precapture_secondary.docml";
     static const char *POSTCAPTURE_XML = ":/xml/view_postcapture.docml";
 
-    static const char *SCENEMODE_SETTING_XML = ":/xml/setting_still_scenemode.docml";
-    static const char *SCENEMODE_VIDEO_SETTING_XML = ":/xml/setting_video_scenemode.docml";
+    static const char *SCENEMODE_SETTING_XML = ":/xml/setting_scenemode.docml";
 
     static const char *STANDBY_POPUP_XML = ":/xml/standbymode_popup.docml";
     static const char *ERROR_POPUP_XML = ":/xml/errornote_popup.docml";
@@ -85,18 +64,22 @@
     static const char *VIDEO_PRE_CAPTURE_EMBEDDED_SECTION = "video_embedded_mode";
     static const char *VIDEO_PRE_CAPTURE_STANDALONE_SECTION = "video_standalone_mode";
 
+    static const char *VIDEO_PRE_CAPTURE_IDLE       = "video_idle";
+    static const char *VIDEO_PRE_CAPTURE_RECORDING  = "video_recording";
+    static const char *VIDEO_PRE_CAPTURE_PAUSED     = "video_paused";
+
     // Widgets
     // In order to be able to refer to a widget, we need to know its object name.
     static const char *STILL_PRE_CAPTURE_VIEW = "still_capture_view";
-    static const char *STILL_PRE_CAPTURE_VIEW2 = "still_capture_view_2";
+    static const char *STILL_SCENES_VIEW = "settings_scenes_view";
     static const char *STILL_PRE_CAPTURE_TOOLBAR = "toolbar";
     static const char *STILL_PRE_CAPTURE_FLASH_ACTION = "cxui_action_flash";
+    static const char *STILL_PRE_CAPTURE_SCENE_MODE_ACTION = "cxui_action_scenemodes";
     static const char *STILL_PRE_CAPTURE_ROOT_WIDGET = "viewfinder_widget";
     static const char *STILL_PRE_CAPTURE_VIEWFINDER = "transparent";
     static const char *STILL_PRE_CAPTURE_ZOOM_SLIDER = "zoom";
     static const char *STILL_PRE_CAPTURE_IMAGE_QUALITY_ACTION = "cxui_action_image_quality";
     static const char *STILL_PRE_CAPTURE_GOTO_VIDEO_ACTION = "cxui_action_goto_video";
-    static const char *STILL_PRE_CAPTURE_GOTO_2ND_CAMERA_ACTION = "cxui_action_goto_2_camera";
     static const char *STILL_PRE_CAPTURE_IMAGES_LEFT_LABEL = "images_remaining";
     static const char *STILL_PRE_CAPTURE_QUALITY_ICON = "quality_indicator";
     static const char *STILL_PRE_CAPTURE_POST_CAPTURE_ACTION = "cxui_action_stillpostcapture";
@@ -104,14 +87,14 @@
     static const char *STILL_PRE_CAPTURE_IMAGES_LEFT_CONTAINER = "images_left_container";
 
     static const char *STILL_PRE_CAPTURE_SELFTIMER_CONTAINER = "still_precapture_selftimer_container";
-    static const char *STILL_PRE_CAPTURE_SELFTIMER_BUTTON_CONTAINER = "selftimer_button_container";
     static const char *STILL_PRE_CAPTURE_SELFTIMER_COUNTER = "still_selftimer_counter";
     static const char *STILL_PRE_CAPTURE_SELFTIMER_START_BUTTON = "still_selftimer_start_button";
     static const char *STILL_PRE_CAPTURE_SELFTIMER_CANCEL_BUTTON = "still_selftimer_cancel_button";
 
-    static const char *VIDEO_PRE_CAPTURE_VIEW  = "video_capture_view";
-    static const char *VIDEO_PRE_CAPTURE_VIEW2 = "video_capture_view_2";
-
+    static const char *VIDEO_PRE_CAPTURE_VIEW = "video_capture_view";
+    
+    static const char *SETTINGS_DIALOG_OK_ACTION = "action_ok";
+    
     // video
     // In order to be able to refer to a widget, we need to know its object name.
     static const char *VIDEO_PRE_CAPTURE_TOOLBAR = "video_toolbar";
@@ -123,11 +106,9 @@
     static const char *VIDEO_PRE_CAPTURE_RECORDING_ICON = "video_recording_icon";
     static const char *VIDEO_PRE_CAPTURE_ELAPSED_TIME_LABEL = "video_elapsed_time";
     static const char *VIDEO_PRE_CAPTURE_REMAINING_TIME_LABEL = "video_remaining_time";
-    static const char *VIDEO_PRE_CAPTURE_TOGGLE_LIGHT_ACTION = "cxui_video_action_toggle_light";
     static const char *VIDEO_PRE_CAPTURE_DEFAULT_MENU = "video_view_menu";
     static const char *VIDEO_PRE_CAPTURE_VIDEO_QUALITY_ACTION = "cxui_video_action_quality";
     static const char *VIDEO_PRE_CAPTURE_GOTO_STILL_ACTION = "cxui_video_action_gotostill";
-    static const char *VIDEO_PRE_CAPTURE_GOTO_2ND_CAMERA_ACTION = "cxui_video_action_goto_2_camera";
     static const char *VIDEO_PRE_CAPTURE_POST_CAPTURE_ACTION  = "cxui_video_action_showcapturedvideo";
     static const char *VIDEO_PRE_CAPTURE_INDICATOR_CONTAINER_TOP = "video_indicator_container_top";
     static const char *VIDEO_PRE_CAPTURE_INDICATOR_CONTAINER_BOTTOM = "video_indicator_container_bottom";
@@ -162,8 +143,12 @@
     static const char *SETTINGS_SLIDER_DIALOG_CONTENT_WIDGET = "settings_dialog_slider";
 
     // scene setting
-    static const char *STILL_SCENE_DIALOG  = "still_scenemode_popup";
-    static const char *VIDEO_SCENE_DIALOG  = "video_scenemode_popup";
+    static const char *SCENE_VIEW_CONTAINER  = "scene_view_container";
+    static const char *SCENE_VIEW_BG_IMAGE  = "scene_view_bg_icon";
+    static const char *SCENE_VIEW_BG_IMAGE2  = "scene_view_bg_icon2";
+    static const char *SCENE_VIEW_RADIOBUTTONS  = "scene_view_radioButtonList";
+    static const char *SCENE_VIEW_OK_BUTTON  = "scene_ok_button";
+    static const char *SCENE_VIEW_CANCEL_BUTTON  = "scene_cancel_button";
 }
 
 namespace CxUiInternal
--- a/camerauis/cameraxui/cxui/inc/cxuierrormanager.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/inc/cxuierrormanager.h	Thu May 13 21:30:19 2010 +0300
@@ -26,7 +26,7 @@
 
 
 /*
-* class which handles errors and reports 
+* class which handles errors and reports
 */
 class CxuiErrorManager : public QObject
 {
@@ -38,26 +38,14 @@
     ~CxuiErrorManager();
 
 signals:
-    
+
     void aboutToRecoverError();
     void errorRecovered();
-    
+
 private slots:
 
-    /*
-	* slot which handles reporting of errors to the client
-	*/
     void analyze(CxeError::Id error);
-
-    /*
-     * slot which handles cases to be considered when we are about to close
-     * the pop-up
-     */
     void aboutToClosePopup();
-    
-    /*
-     * slot to close camera app
-     */
     void closeApp();
 
 private:
@@ -65,23 +53,19 @@
     // error severity
     enum ErrorSeverity
     {
-        Severe     = 0x01, // when error cannot be recovered
-        Critical   = 0x02, // when error can be recovered, but needs actions e.g. camera in use
-        None       = 0x08, // we can ignore the error
+        None = 0,
+        Warning, // Low severity, just warning user needed
+        Severe, // when error cannot be recovered
+        Critical // when error can be recovered, but needs actions e.g. camera in use
     };
 
-    /*
-     * Activates popup which displays the error messages based on the
-     * error severity
-     */
     void launchPopup(QString& errorMsgTxt);
-    
-    /*
-     *  check the error severity and get the error msg
-     */
+    void showHighSeverityNote(QString& errorMsgTxt);
+    void showLowSeverityNote(QString& errorMsgTxt);
     QString getErrorDetails(CxeError::Id error);
 
 private:
+
     //data
     CxuiCaptureKeyHandler &mKeyHandler;
     CxuiDocumentLoader *mDocumentLoader; // not own
--- a/camerauis/cameraxui/cxui/inc/cxuipostcaptureview.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/inc/cxuipostcaptureview.h	Thu May 13 21:30:19 2010 +0300
@@ -21,6 +21,7 @@
 #include <QList>
 #include <QTimer>
 #include <hbview.h>
+#include <xqappmgr.h>
 
 class QGraphicsRectItem;
 class HbMainWindow;
@@ -43,6 +44,8 @@
     virtual ~CxuiPostcaptureView();
     void construct(HbMainWindow *mainwindow, CxeEngine *engine, CxuiDocumentLoader *documentLoader);
 
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
+
 signals:
     void changeToPrecaptureView();
 
@@ -52,7 +55,6 @@
 
 protected:
     bool eventFilter(QObject *object, QEvent *event);
-    bool event(QEvent *event);
     void mousePressEvent(QGraphicsSceneMouseEvent *event);
     void showEvent(QShowEvent *event);
     void hideEvent(QHideEvent *event);
@@ -79,6 +81,8 @@
     void showDeleteNote();
     void launchVideosApp();
 
+    void handleDeleteDialogClosed(HbAction *action);
+
 private:
     void launchNotSupportedNotification();
     QString getCurrentFilename();
@@ -124,6 +128,8 @@
     bool mControlsVisible;
 
     bool mTimersStarted;
+    
+    XQApplicationManager mAppManager;
 
 };
 
--- a/camerauis/cameraxui/cxui/inc/cxuiprecaptureview.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/inc/cxuiprecaptureview.h	Thu May 13 21:30:19 2010 +0300
@@ -44,6 +44,8 @@
 class CxuiSettingRadioButtonList;
 class CxuiSettingSlider;
 class HbToolBarExtension;
+class HbWidget;
+class CxuiZoomSlider;
 
 /**
  * Pre-capture view
@@ -103,7 +105,7 @@
     void zoomTo(int value);
 
     // Control visibility of all UI items at the same time: toolbar, zoom and titlepane items
-    void hideControls();
+    virtual void hideControls();
     virtual void showControls();
     void toggleControls();
 
@@ -117,19 +119,21 @@
 
     // Settings related
     void launchNotSupportedNotification();
+    void launchDiskFullNotification();
     void showSettingsGrid();
     void hideSettingsGrid();
     void launchSliderSetting();
     void prepareToShowDialog(HbAction *action);
     void prepareToCloseDialog(HbAction *action);
 
-
 protected:
 
    virtual void initializeSettingsGrid() = 0;
 
     void hideZoom();
     void showZoom();
+    void hideIndicators();
+    void showIndicators();
     void showEvent(QShowEvent *event);
     void hideEvent(QHideEvent *event);
     void mousePressEvent(QGraphicsSceneMouseEvent *event);
@@ -137,7 +141,7 @@
     bool eventFilter(QObject *object, QEvent *event);
     void launchSettingsDialog(QObject *action);
     bool isPostcaptureOn() const;
-    void addIncreaseDecreaseButtons(HbSlider *slider);
+    void addIncreaseDecreaseButtons(CxuiZoomSlider *slider);
     QString getSettingItemIcon(const QString &key, QVariant value);
     void updateQualityIcon();
     void createWidgetBackgroundGraphic(HbWidget *widget,
@@ -160,6 +164,7 @@
 
     // signal to report error to ErrorManager for further actions.
     void reportError(CxeError::Id errorId);
+    void showScenesView();
 
 protected:
     CxeEngine *mEngine; // not own
@@ -169,7 +174,7 @@
     CxuiDisplayPropertyHandler *mDisplayHandler;
     bool   mControlsVisible;
     QTimer mHideControlsTimeout;
-    HbSlider *mSlider; // zoom slider, not own, owned by the graphics scene
+    CxuiZoomSlider *mSlider; // zoom slider, not own, owned by the graphics scene
     HbToolBar *mToolBar; // not own, owned by the graphics scene
     HbToolBarExtension *mSettingsGrid;
     bool mZoomVisible;
@@ -178,6 +183,7 @@
     CxuiSettingRadioButtonList *mSettingsDialogList;
     CxuiCaptureKeyHandler *mKeyHandler;
     HbLabel *mQualityIcon;
+    HbWidget *mIndicators;
 
 private:
     CxuiSettingDialog* createSettingsDialog();
@@ -191,7 +197,9 @@
     CxuiSettingSlider *mSettingsSlider;
 
     CxuiSettingsInfo *mSettingsInfo;
-
+    
+    HbAction *mSettingsDialogOkAction;
+    HbAction *mSliderSettingsDialogOkAction;
 };
 
 #endif // CXUIPRECAPTUREVIEW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/inc/cxuiscenemodeview.h	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,116 @@
+/*
+* 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 CXUISCENEMODEVIEW_H
+#define CXUISCENEMODEVIEW_H
+
+#include <QMetaType>
+#include <QPropertyAnimation>
+#include <QTimer>
+#include <hbframedrawer.h>
+#include <hbview.h>
+#include <hbmainwindow.h>
+#include <hblabel.h>
+#include <hbpushbutton.h>
+
+#include "cxeerror.h"
+#include "cxenamespace.h"
+#include "cxuisettingsinfo.h"
+#include "cxuienums.h"
+#include "cxeengine.h"
+
+class CxuiCaptureKeyHandler;
+class CxuiDocumentLoader;
+class HbPushButton;
+class HbLabel;
+class HbView;
+class CxuiSettingsInfo;
+
+
+/**
+ * Scene mode view class for both video and still sides
+ */
+
+
+class CxuiSceneModeView : public HbView
+{
+    Q_OBJECT
+
+public:
+    CxuiSceneModeView(QGraphicsItem *parent = 0);
+
+    virtual ~CxuiSceneModeView();
+
+public:
+
+    void construct(HbMainWindow *mainwindow,
+                   CxeEngine *engine,
+                   CxuiDocumentLoader *documentLoader,
+                   CxuiCaptureKeyHandler *keyHandler = NULL);
+
+    void loadDefaultWidgets();
+    void loadBackgroundImages();
+
+signals:
+    void viewCloseEvent();
+
+public slots:
+    void handleCaptureKeyPressed();
+    void handleAutofocusKeyPressed();
+
+private slots:
+    void handleSceneRadiobuttonPress(int index);
+    void finishScenesTransition();
+    void handleOkButtonPress();
+    void handleCancelButtonPress();
+    void releaseCameraHw();
+
+protected:
+    void showEvent(QShowEvent *event);
+
+private:
+    QString backgroundForScene(const QString& sceneId);
+    void startBackgroundTransition();
+    void createWidgetBackgroundGraphic(HbWidget *widget,
+                           const QString &graphicName,
+                           HbFrameDrawer::FrameType frameType =
+                           HbFrameDrawer::NinePieces);
+
+    void connectSignals();
+    void closeView();
+
+private:
+    HbMainWindow *mMainWindow; //not own
+    CxuiSettingsInfo *mSettingsInfo;
+    CxeEngine *mEngine; //not own
+    CxuiDocumentLoader *mDocumentLoader; //not own
+    CxuiCaptureKeyHandler *mCaptureKeyHandler;
+
+    HbLabel* mScenesBackground;
+    HbLabel* mScenesBackground2;
+    CxuiSettingRadioButtonList* mScenesList;
+    QList<CxUiSettings::SettingItem> mSettingPairList;
+    HbPushButton* mScenesOkButton;
+    HbPushButton* mScenesCancelButton;
+    HbWidget* mScenesContainer;
+
+    QTimer mCameraReleaseTimer;
+
+    QPropertyAnimation* mTransitionAnimation; //for mScenesBackground
+
+};
+
+#endif // CXUISCENEMODEVIEW_H
--- a/camerauis/cameraxui/cxui/inc/cxuiselftimer.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/inc/cxuiselftimer.h	Thu May 13 21:30:19 2010 +0300
@@ -66,8 +66,7 @@
     int mOldPostCaptureTimeOut;
 
     // UI widgets, not own
-    HbWidget *mIndicatorContainer;
-    HbWidget *mButtonContainer;
+    HbWidget *mWidgetContainer;
     HbLabel *mTimerLabel;
     HbPushButton *mCancelButton;
     HbPushButton *mStartButton;
--- a/camerauis/cameraxui/cxui/inc/cxuisettingbutton.h	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +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 CXUISETTINGBUTTON_H
-#define CXUISETTINGBUTTON_H
-
-
-#include <hbpushbutton.h>
-
-class CxeEngine;
-
-class CxuiSettingButton : public HbPushButton
-{
-    Q_OBJECT
-    Q_PROPERTY(QString settingId READ settingId WRITE setSettingId)
-    Q_PROPERTY(int settingValue READ settingValue WRITE setSettingValue)
-    Q_PROPERTY(QString settingPopupXml READ settingPopupXml WRITE setSettingPopupXml)
-    Q_PROPERTY(QString iconList READ iconList WRITE setIconList)
-    Q_PROPERTY(QString scenemodeId READ scenemodeId WRITE setScenemodeId)
-public:
-    explicit CxuiSettingButton(QGraphicsItem *parent, CxeEngine *engine);
-    virtual ~CxuiSettingButton();
-
-    QString settingId() const;
-    void setSettingId(const QString &id);
-    int settingValue() const;
-    QString iconList() const;
-    void setIconList(const QString &iconList);
-    void setSettingValue(int value);
-    QString settingPopupXml() const;
-    void setSettingPopupXml(const QString &popupXml);
-    QString scenemodeId() const;
-    void setScenemodeId(const QString &scenemode);
-    void setSetting();
-
-
-signals:
-    void clickHandled();
-
-public slots:
-    void handleClicked();
-
-    void updateIcon(const QString& key, QVariant newValue);
-private:
-    Q_DISABLE_COPY(CxuiSettingButton)
-
-    QString mSettingId;
-    int mSettingValue;
-    QString mSettingPopupXml;
-    CxeEngine *mEngine;
-    QString mIconList;
-    QStringList mIcons;
-    QString mScenemode;
-};
-
-#endif // CXUISETTINGBUTTON_H
--- a/camerauis/cameraxui/cxui/inc/cxuisettingbuttoncontainer.h	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +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 CXUISETTINGBUTTONCONTAINER_H_
-#define CXUISETTINGBUTTONCONTAINER_H_
-#include <hbwidget.h>
-#include <QList>
-#include "cxuisettingbutton.h"
-
-class CxuiSettingButtonContainer : public HbWidget
-{
-    Q_OBJECT
-
-public:
-    explicit CxuiSettingButtonContainer(QGraphicsItem *parent);
-
-
-signals:
-    void buttonReleased();
-
-public slots:
-
-    void handleButtonPress();
-
-
-protected:
-    void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
-    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
-private:
-    Q_DISABLE_COPY(CxuiSettingButtonContainer)
-
-    QList<CxuiSettingButton *>mButtons;
-    bool mListCreated;
-    CxuiSettingButton *mPressedDownButton;
-    CxuiSettingButton *mPreviouslyPressedDownButton;
-
-};
-
-
-
-
-#endif /* CXUISETTINGBUTTONCONTAINER_H_ */
--- a/camerauis/cameraxui/cxui/inc/cxuisettingsinfo.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/inc/cxuisettingsinfo.h	Thu May 13 21:30:19 2010 +0300
@@ -76,7 +76,8 @@
         QString mHeadingIcon;
         QStringList mSettingStrings;
         QPair<int, int> mRange;
-        qreal mStep;
+        qreal mMinorStep;
+        qreal mMajorStep;
     };
 }
 
--- a/camerauis/cameraxui/cxui/inc/cxuistillprecaptureview2.h	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +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 CXUISTILLPRECAPTUREVIEW2_H
-#define CXUISTILLPRECAPTUREVIEW2_H
-
-#include <QMetaType>
-#include "cxuistillprecaptureview.h"
-
-/**
- * CxuiPrecaptureView2
- * 
- */
-class CxuiStillPrecaptureView2 : public CxuiStillPrecaptureView
-{
-    Q_OBJECT
-
-public:
-    CxuiStillPrecaptureView2(QGraphicsItem *parent = 0);
-
-    virtual ~CxuiStillPrecaptureView2();
-
-public:
-
-    /**
-     * Loads default widgets in layouts xml.
-     */
-    virtual void loadDefaultWidgets();
-
-    /**
-     * Loads widgets that are not part of the default section in layouts xml.
-     * Widgets are created at the time they are first loaded.
-     */
-    virtual void loadWidgets();
-
-};
-
-#endif /* CXUISTILLPRECAPTUREVIEW2_H */
--- a/camerauis/cameraxui/cxui/inc/cxuivideoprecaptureview.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/inc/cxuivideoprecaptureview.h	Thu May 13 21:30:19 2010 +0300
@@ -106,6 +106,9 @@
 
     void updateTimeLabels();
 
+    // from CxuiPrecaptureView
+    void hideControls();
+
 protected:
 
     void setVideoTime(HbLabel* label, int time);
@@ -118,6 +121,8 @@
     void initializeSettingsGrid();
     void setRecordingItemsVisibility(bool visible);
 
+    // from QObject
+    bool eventFilter(QObject *object, QEvent *event);
 protected:
     QTimer mElapsedTimer;
     int mTimeElapsed;
@@ -130,13 +135,13 @@
     HbToolBar *mToolBarIdle; // not own
     HbToolBar *mToolBarRec; // not own
     HbToolBar *mToolBarPaused; // not own
-    HbAction *mToggleLightAction; // not own
     HbDialog *mVideoScenePopup;
     CxeVideoCaptureControl *mVideoCaptureControl;
     HbMenu *mMenu;    // own
     QPropertyAnimation* mRecordingAnimation; //For recording indicator
 
     bool mCapturePending;
+    QTimer mPauseTimer;
     };
 
 #endif // CXUIVIDEOPRECAPTUREVIEW_H
--- a/camerauis/cameraxui/cxui/inc/cxuivideoprecaptureview2.h	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +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 CXUIVIDEOPRECAPTUREVIEW2_H
-#define CXUIVIDEOPRECAPTUREVIEW2_H
-
-#include <QObject>
-#include "cxuivideoprecaptureview.h"
-
-/**
- * CxuiVideoPrecaptureView2
- * 
- */
-class CxuiVideoPrecaptureView2 : public CxuiVideoPrecaptureView
-{
-    Q_OBJECT
-
-public:
-    CxuiVideoPrecaptureView2(QGraphicsItem *parent = 0);
-
-    virtual ~CxuiVideoPrecaptureView2();
-
-public:
-
-    /**
-     * Loads default widgets in layouts xml.
-     */
-    virtual void loadDefaultWidgets();
-
-    /**
-     * Loads widgets that are not part of the default section in layouts xml.
-     * Widgets are created at the time they are first loaded.
-     */
-    virtual void loadWidgets();
-
-};
-#endif /* CXUIVIDEOPRECAPTUREVIEW2_H */
--- a/camerauis/cameraxui/cxui/inc/cxuiviewmanager.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/inc/cxuiviewmanager.h	Thu May 13 21:30:19 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -24,30 +24,29 @@
 #include "cxeviewfindercontrol.h"
 #include "cxenamespace.h"
 #include "cxeerror.h"
+#include "cxuiapplicationframeworkmonitor.h"
+
 
 class QGraphicsSceneMouseEvent;
+class HbMainWindow;
+class CxuiApplication;
 class CxuiCaptureKeyHandler;
-class XQSettingsManager;
-class XQSettingsKey;
-class HbMainWindow;
-
 class CxuiPrecaptureView;
 class CxuiStillPrecaptureView;
-class CxuiStillPrecaptureView2;
 class CxuiVideoPrecaptureView;
-class CxuiVideoPrecaptureView2;
 class CxuiPostcaptureView;
 class CxeEngine;
 class CxuiDocumentLoader;
 class CxuiErrorManager; // class that handles all errors in ui.
 class CxuiStandby;
+class CxuiSceneModeView;
 
 class CxuiViewManager : public QObject
 {
     Q_OBJECT
 
 public:
-    CxuiViewManager(HbMainWindow &mainWindow, CxeEngine &engine, CxuiCaptureKeyHandler &keyHandler);
+    CxuiViewManager(CxuiApplication &application, HbMainWindow &mainWindow, CxeEngine &engine);
     ~CxuiViewManager();
 
     void prepareWindow();
@@ -60,20 +59,14 @@
 public slots:
     void changeToPostcaptureView();
     void changeToPrecaptureView();
-
-    /**
-     * Switch camera from primary to secondary or vise versa.
-     */
     void switchCamera();
-
-    /**
-     * Event monitor can be used to monitor changes in cenrep and PS values.
-     */
-    void eventMonitor(const XQSettingsKey& key, const QVariant& value);
-
     void createPostcaptureView();
+    void showScenesView();
 
 private slots:
+    void toForeground();
+    void handleForegroundStateChanged(CxuiApplicationFrameworkMonitor::ForegroundState state);
+    void handleBatteryEmpty();
     void aboutToLooseFocus();
     void aboutToGainFocus();
 
@@ -81,18 +74,19 @@
     void focusGained();
     void focusLost();
     void batteryEmpty();
+    void disableStandbyTimer();
+    void startStandbyTimer();
 
 protected:
     bool eventFilter(QObject *object, QEvent *event);
 
 private:
-    void startEventMonitors();
     void createStillPrecaptureView();
-    void createStillPrecaptureView2();
     void createVideoPrecaptureView();
-    void createVideoPrecaptureView2();
     CxuiPrecaptureView* getPrecaptureView(Cxe::CameraMode mode, Cxe::CameraIndex camera);
 
+    void createSceneModesView();
+
     /*
     * connects all necessary signals for precapture view
     */
@@ -117,25 +111,21 @@
 private:
 
     //data
+    CxuiApplication &mApplication;
     HbMainWindow &mMainWindow;
     CxuiStillPrecaptureView *mStillPrecaptureView;
     CxuiVideoPrecaptureView *mVideoPrecaptureView;
     CxuiPostcaptureView *mPostcaptureView;
 
-    CxuiStillPrecaptureView2 *mStillPrecaptureView2;
-    CxuiVideoPrecaptureView2 *mVideoPrecaptureView2;
-
     CxeEngine &mEngine;
-    CxuiCaptureKeyHandler &mKeyHandler;
+    CxuiCaptureKeyHandler *mKeyHandler;
+    CxuiApplicationFrameworkMonitor *mApplicationMonitor;
 
 private:
-    XQSettingsManager *mSettingsManager;
-    int mKeyLockState; //! @todo: Needed due to Settings manager error: valueChanged is emmitted with same value repeatedly
-    int mBatteryStatus;
-    bool mFocused;
     CxuiDocumentLoader *mCameraDocumentLoader;
     CxuiStandby *mStandbyHandler;
     CxuiErrorManager *mErrorManager;
+    CxuiSceneModeView *mSceneModeView;
 };
 
 #endif // CXUIVIEWMANAGER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/inc/cxuizoomslider.h	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,38 @@
+/*
+* 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 CXUIZOOMSLIDER_H
+#define CXUIZOOMSLIDER_H
+
+#include <QGraphicsItem>
+#include <hbslider.h>
+
+class QGraphicsSceneMouseEvent;
+
+class CxuiZoomSlider : public HbSlider
+{
+    Q_OBJECT
+
+public:
+    explicit CxuiZoomSlider(QGraphicsItem *parentItem = NULL);
+    ~CxuiZoomSlider();
+
+protected:
+    void mousePressEvent(QGraphicsSceneMouseEvent *event);
+
+};
+
+#endif // CXUIZOOMSLIDER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/layouts/errornote_popup.docml	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument version="1.0">
+    <widget name="errornote_popup" type="HbDialog">
+        <widget name="errornote_content_widget" role="HbDialog:contentWidget" type="HbWidget">
+            <widget name="errornote_text" type="HbLabel">
+                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                <real name="z" value="0.3"/>
+                <sizehint height="360" type="PREFERRED" width="640"/>
+                <string locid="txt_cam_info_error" name="plainText" value="Unexpected error occurred. Power off the device and restart"/>
+            </widget>
+            <widget name="errornote_exit_button_widget" type="HbWidget">
+                <widget name="errornote_button_exit" type="HbPushButton">
+                    <real name="z" value="0.4"/>
+                    <real name="opacity" value="0.7"/>
+                    <sizehint height="7.46269un" type="PREFERRED" width="22.38806un"/>
+                    <string locid="txt_common_button_close" name="text" value="Close"/>
+                </widget>
+                <real name="z" value="0.3"/>
+                <sizehint height="11.9403un" type="PREFERRED" width="23.8806un"/>
+                <layout orientation="Horizontal" type="linear">
+                    <linearitem itemname="errornote_button_exit"/>
+                </layout>
+            </widget>
+            <real name="z" value="0.1"/>
+            <layout type="anchor">
+                <anchoritem dst="errornote_exit_button_widget" dstEdge="BOTTOM" spacing="0" src="" srcEdge="BOTTOM"/>
+                <anchoritem dst="errornote_exit_button_widget" dstEdge="LEFT" spacing="400" src="" srcEdge="LEFT"/>
+            </layout>
+        </widget>
+        <size height="360" name="size" width="640"/>
+        <rect height="360" name="geometry" width="640" x="0" y="0"/>
+    </widget>
+    <connect receiver="errornote_popup" sender="errornote_button_exit" signal="released()" slot="close()"/>
+    <metadata activeUIState="Common ui state" display="NHD landscape" unit="un">
+        <uistate name="Common ui state" sections="#common"/>
+    </metadata>
+</hbdocument>
--- a/camerauis/cameraxui/cxui/layouts/image_setting.xml	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/layouts/image_setting.xml	Thu May 13 21:30:19 2010 +0300
@@ -88,19 +88,33 @@
 
         <!-- Exposure compensation (setting slider) -->
         <setting_slider id="ev_compensation_value" heading="txt_cam_title_exposure_compensation" setting_icon="">
-            <setup min="txt_cam_slidervalue_l1_minus" max="txt_cam_slidervalue_l1_plus" lnValue="2" step="0.5" />
+            <setup min="txt_cam_slidervalue_l1_minus" max="txt_cam_slidervalue_l1_plus" lnValue="2" minorStep="0.5" majorStep="1"/>
         </setting_slider>
 
         <!-- Contrast (setting slider) -->
-        <!-- min and max are left empty as we don't want to create slider labels for contrast setting -->
         <setting_slider id="contrast" heading="txt_cam_title_contrast" setting_icon="">
-            <setup min="" max="" lnValue="10" step="1" />
+            <setup min="txt_cam_slidervalue_l1_minus" max="txt_cam_slidervalue_l1_plus" lnValue="2" minorStep="0.5" majorStep="1"/>
         </setting_slider>
 
         <!-- Sharpness (setting slider) -->
         <setting_slider id="sharpness" heading="txt_cam_title_sharpness" setting_icon="">
-            <setup min="" max="" lnValue="10" step="1" />
+            <setup min="txt_cam_slidervalue_l1_minus" max="txt_cam_slidervalue_l1_plus" lnValue="2" minorStep="0.5" majorStep="1"/>
         </setting_slider>
 
+        <!-- Still scene modes -->
+        <setting_list id="still_scene_modes"
+                      heading="txt_cam_title_scene_mode"
+                      preview="0"
+                      type="SingleLineListBox">
+
+            <item string="txt_cam_list_automatic_scene" value="image_scene_auto"           icon="qtg_mono_automatic" />
+            <item string="txt_cam_list_closeup"         value="image_scene_macro"          icon="qtg_mono_close_up" />
+            <item string="txt_cam_list_landscape"       value="image_scene_scenery"        icon="qtg_mono_landscape" />
+            <item string="txt_cam_list_portrait"        value="image_scene_portrait"       icon="qtg_mono_portrait" />
+            <item string="txt_cam_list_sports"          value="image_scene_sports"         icon="qtg_mono_sport" />
+            <item string="txt_cam_list_night"           value="image_scene_night"          icon="qtg_mono_night" />
+            <item string="txt_cam_list_night_portrait"  value="image_scene_night_portrait" icon="qtg_mono_night_portrait" />
+        </setting_list>
+
     </settings>
 </cxui>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/layouts/setting.docml	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument version="1.0">
+    <object name="action_ok" type="HbAction">
+        <string name="role" value="HbDialog:primaryAction"/>
+        <string locid="txt_common_button_ok" name="text" value="Ok"/>
+    </object>
+    <object name="action_cancel" type="HbAction">
+        <string name="role" value="HbDialog:secondaryAction"/>
+        <string locid="txt_common_button_cancel" name="text" value="Cancel"/>
+    </object>
+    <widget name="settings_dialog" type="HbDialog">
+        <widget name="settings_dialog_heading" role="HbDialog:headingWidget" type="HbLabel">
+            <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+            <string name="plainText" value="Dummy settings dialog"/>
+            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
+        </widget>
+        <widget name="settings_dialog_name_content" role="HbDialog:contentWidget" type="HbWidget">
+            <widget name="settings_dialog_list" type="HbRadioButtonList">
+                <container name="items" type="stringlist">
+                    <string value="Dummy item 1"/>
+                    <string value="Dummy item 2"/>
+                </container>
+                <sizehint type="MINIMUM" height="30un"/>
+            </widget>
+            <layout orientation="Vertical" type="linear">
+                <linearitem itemname="settings_dialog_list"/>
+            </layout>
+        </widget>
+        <sizehint type="MINIMUM" width="var(hb-param-widget-dialog-width)"/>
+        <ref object="action_ok" role="HbDialog:primaryAction"/>
+        <ref object="action_cancel" role="HbDialog:secondaryAction"/>
+    </widget>
+    <metadata activeUIState="Common ui state" display="NHD landscape" unit="un">
+        <uistate name="Common ui state" sections="#common"/>
+    </metadata>
+</hbdocument>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/layouts/setting_scenemode.docml	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument version="1.0">
+    <widget name="settings_scenes_view" type="HbView">
+        <widget name="scene_view_content" role="HbView:widget" type="HbWidget">
+            <widget name="scene_view_bg_icon" type="HbLabel">
+                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                <real name="z" value="-1"/>
+                <real name="opacity" value="1"/>
+            </widget>
+            <widget name="scene_view_bg_icon2" type="HbLabel">
+                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                <real name="z" value="0"/>
+                <real name="opacity" value="0"/>
+            </widget>
+            <widget name="scene_view_container" type="HbWidget">
+                <widget name="scene_view_radioButtonList" type="HbRadioButtonList">
+                    <real name="z" value="4"/>
+                    <sizehint height="31.04478un" type="PREFERRED"/>
+                </widget>
+                <widget name="button_container" type="HbWidget">
+                    <widget name="scene_ok_button" type="HbPushButton">
+                        <sizehint height="2un" type="PREFERRED"/>
+                        <sizehint height="2un" type="MINIMUM" width="12un"/>
+                        <string name="text" value="txt_common_button_ok"/>
+                        <string name="state" value="normal"/>
+                    </widget>
+                    <widget name="scene_cancel_button" type="HbPushButton">
+                        <sizehint height="2un" type="PREFERRED"/>
+                        <string name="text" value="txt_common_button_cancel"/>
+                        <string name="state" value="normal"/>
+                        <sizehint height="2un" type="MINIMUM"/>
+                    </widget>
+                    <real name="z" value="0"/>
+                    <sizehint height="7un" type="PREFERRED" width="23.8806un"/>
+                    <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-left)" type="linear">
+                        <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                        <linearitem itemname="scene_ok_button"/>
+                        <linearitem itemname="scene_cancel_button"/>
+                    </layout>
+                </widget>
+                <widget name="scene_title" type="HbLabel">
+                    <real name="z" value="4"/>
+                    <contentsmargins bottom="0un" left="3un" right="0un" top="1un"/>
+                    <string name="plainText" value="txt_cam_title_scene_mode"/>
+                    <fontspec name="fontSpec" role="Title" textheight="var(hb-param-text-height-primary)"/>
+                </widget>
+                <real name="z" value="2"/>
+                <sizehint height="41.49254un" type="PREFERRED" width="43.8806un"/>
+                <layout orientation="Vertical" type="linear">
+                    <contentsmargins bottom="var(hb-param-margin-gene-bottom)" left="var(hb-param-margin-gene-left)" right="var(hb-param-margin-gene-right)" top="var(hb-param-margin-gene-top)"/>
+                    <linearitem itemname="scene_title"/>
+                    <linearitem itemname="scene_view_radioButtonList"/>
+                    <linearitem itemname="button_container"/>
+                </layout>
+            </widget>
+            <layout type="anchor">
+                <anchoritem dst="scene_view_bg_icon" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                <anchoritem dst="scene_view_bg_icon" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                <anchoritem dst="scene_view_bg_icon" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                <anchoritem dst="scene_view_bg_icon" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                <anchoritem dst="scene_view_bg_icon2" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                <anchoritem dst="scene_view_bg_icon2" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                <anchoritem dst="scene_view_bg_icon2" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                <anchoritem dst="scene_view_bg_icon2" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                <anchoritem dst="scene_view_container" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-right)" src="" srcEdge="RIGHT"/>
+                <anchoritem dst="scene_view_container" dstEdge="BOTTOM" spacing="-var(hb-param-margin-gene-bottom)" src="" srcEdge="BOTTOM"/>
+            </layout>
+        </widget>
+        <string name="title" value="Scene modes"/>
+        <bool name="contentFullScreen" value="TRUE"/>
+        <enums name="focusDelegation" value="FocusDelegationNone"/>
+        <enums name="titleBarFlags" value="TitleBarMinimized|TitleBarHidden"/>
+    </widget>
+    <connect receiver="settings_scenes_view" sender="scene_ok_button" signal="released()" slot="handleOkButtonPress()"/>
+    <connect receiver="settings_scenes_view" sender="scene_cancel_button" signal="released()" slot="handleCancelButtonPress()"/>
+    <metadata activeUIState="Common ui state" display="NHD landscape" unit="un">
+        <uistate name="Common ui state" sections="#common"/>
+    </metadata>
+</hbdocument>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/layouts/setting_slider.docml	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument version="1.0">
+    <object name="action_ok" type="HbAction">
+        <string name="role" value="HbDialog:primaryAction"/>
+        <string locid="txt_common_button_ok" name="text" value="Ok"/>
+    </object>
+    <object name="action_cancel" type="HbAction">
+        <string name="role" value="HbDialog:secondaryAction"/>
+        <string locid="txt_common_button_ok" name="text" value="Cancel"/>
+    </object>
+    <widget name="slider_settings_dialog" type="HbDialog">
+        <widget name="slider_settings_dialog_heading" role="HbDialog:headingWidget" type="HbLabel">
+            <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+            <string name="plainText" value="Setting dialog"/>
+        </widget>
+        <widget name="slider_dialog_container" role="HbDialog:contentWidget" type="HbWidget">
+            <widget name="settings_dialog_slider" type="HbSlider">
+                <bool name="visible" value="TRUE"/>
+                <string name="orientation" value="Horizontal"/>
+            </widget>
+            <layout orientation="Horizontal" type="linear">
+                <linearitem itemname="settings_dialog_slider"/>
+            </layout>
+        </widget>
+        <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+        <sizehint type="PREFERRED" width="var(hb-param-widget-dialog-width)"/>
+        <sizehint type="MINIMUM" width="10un"/>
+        <ref object="action_ok" role="HbDialog:primaryAction"/>
+        <ref object="action_cancel" role="HbDialog:secondaryAction"/>
+    </widget>
+    <metadata activeUIState="Common ui state" display="NHD landscape" unit="un">
+        <uistate name="Common ui state" sections="#common"/>
+    </metadata>
+</hbdocument>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/layouts/standbymode_popup.docml	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument version="1.0">
+    <widget name="standbymode_popup" type="HbDialog">
+        <widget name="standbymode_widget" role="HbDialog:contentWidget" type="HbWidget">
+            <widget name="standby_text" type="HbLabel">
+                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                <real name="z" value="0.3"/>
+                <sizehint height="360" type="MINIMUM" width="640"/>
+                <string locid="txt_cam_info_camera_in_standby_mode" name="plainText" value="Camera in stand-by mode"/>
+            </widget>
+            <real name="z" value="0.1"/>
+        </widget>
+        <sizehint height="360" type="MINIMUM" width="640"/>
+    </widget>
+    <metadata activeUIState="Common ui state" display="NHD landscape" unit="un">
+        <uistate name="Common ui state" sections="#common"/>
+    </metadata>
+</hbdocument>
--- a/camerauis/cameraxui/cxui/layouts/video_setting.xml	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/layouts/video_setting.xml	Thu May 13 21:30:19 2010 +0300
@@ -40,20 +40,20 @@
             <item string="txt_cam_list_negative" value="2" icon="" />
         </setting_list>
 
-        <!-- Video scene mode(setting list) -->
-        <setting_list id="video_scene"
+        <!-- Video scene modes -->
+        <setting_list id="video_scene_modes"
                       heading="txt_cam_title_scene_mode"
-                      preview="1"
-                      type="SingleLineListBox"
-                      setting_icon="">
-            <item string="txt_cam_list_automatic_scene"   value="0" icon=":/camerax/scene_automatic.png" />
-            <item string="txt_cam_list_low_light"    value="1" icon=":/camerax/scene_lowlight.png" />
-            <item string="txt_cam_list_night"    value="2" icon=":/camerax/scene_night.png" />
+                      preview="0"
+                      type="SingleLineListBox">
+
+            <item string="txt_cam_list_automatic_scene" value="video_scene_auto"           icon="qtg_mono_automatic" />
+            <item string="txt_cam_list_low_light"         value="video_scene_low_light"          icon="qtg_mono_low_light" />
+            <item string="txt_cam_list_night"       value="video_scene_night"        icon="qtg_mono_night" />
         </setting_list>
-
+        
         <!-- Exposure compensation (setting slider) -->
         <setting_slider id="ev_compensation_value" heading="txt_cam_title_exposure_compensation" setting_icon="">
-            <setup min="txt_cam_slidervalue_l1_minus" max="txt_cam_slidervalue_l1_plus" lnValue="2" step="0.5" />
+            <setup min="txt_cam_slidervalue_l1_minus" max="txt_cam_slidervalue_l1_plus" lnValue="2" minorStep="0.5" majorStep="1"/>
         </setting_slider>
 
     </settings>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/layouts/view_postcapture.docml	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument version="1.0">
+    <object name="cxui_action_post_photos" type="HbAction">
+        <icon iconName="qtg_mono_photos" name="icon"/>
+    </object>
+    <object name="cxui_action_post_videos" type="HbAction">
+        <icon iconName="qtg_mono_photos" name="icon"/>
+    </object>
+    <object name="cxui_action_post_share" type="HbAction">
+        <icon iconName="qtg_mono_share" name="icon"/>
+    </object>
+    <object name="cxui_action_post_delete" type="HbAction">
+        <icon iconName="qtg_mono_delete" name="icon"/>
+    </object>
+    <object name="cxui_action_post_play" type="HbAction">
+        <icon iconName="qtg_mono_play" name="icon"/>
+    </object>
+    <object name="cxui_action_post_select" type="HbAction">
+        <icon iconName="qtg_mono_tick" name="icon"/>
+    </object>
+    <widget name="postcapture_view" type="HbView">
+        <widget name="postcapture_container" role="HbView:widget" type="HbWidget">
+            <widget name="snapshot_label" type="HbLabel">
+                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                <real name="z" value="1"/>
+                <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+                <sizehint height="var(hb-param-screen-height)" type="PREFERRED" width="var(hb-param-screen-width)"/>
+                <sizehint height="250un" type="MAXIMUM" width="250un"/>
+            </widget>
+            <widget name="video_postcapture_toolbar" type="HbToolBar">
+                <enums name="layoutDirection" value="RightToLeft"/>
+                <real name="z" value="3"/>
+                <sizehint type="PREFERRED" width="var(hb-param-widget-toolbar-height)"/>
+                <enums name="orientation" value="Vertical"/>
+                <bool name="visible" value="TRUE"/>
+                <ref object="cxui_action_post_videos" role="HbToolBar:addAction"/>
+                <ref object="cxui_action_post_share" role="HbToolBar:addAction"/>
+                <ref object="cxui_action_post_play" role="HbToolBar:addAction"/>
+                <ref object="cxui_action_post_delete" role="HbToolBar:addAction"/>
+            </widget>
+            <widget name="still_postcapture_toolbar" type="HbToolBar">
+                <enums name="layoutDirection" value="RightToLeft"/>
+                <real name="z" value="3"/>
+                <sizehint type="PREFERRED" width="var(hb-param-widget-toolbar-height)"/>
+                <enums name="orientation" value="Vertical"/>
+                <bool name="visible" value="TRUE"/>
+                <ref object="cxui_action_post_photos" role="HbToolBar:addAction"/>
+                <ref object="cxui_action_post_share" role="HbToolBar:addAction"/>
+                <ref object="cxui_action_post_delete" role="HbToolBar:addAction"/>
+            </widget>
+            <widget name="embedded_postcapture_toolbar" type="HbToolBar">
+                <enums name="layoutDirection" value="RightToLeft"/>
+                <real name="z" value="3"/>
+                <sizehint type="PREFERRED" width="var(hb-param-widget-toolbar-height)"/>
+                <enums name="orientation" value="Vertical"/>
+                <bool name="visible" value="TRUE"/>
+                <ref object="cxui_action_post_select" role="HbToolBar:addAction"/>
+                <ref object="cxui_action_post_delete" role="HbToolBar:addAction"/>
+            </widget>
+            <real name="z" value="1"/>
+            <layout type="anchor">
+                <anchoritem dst="snapshot_label" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                <anchoritem dst="snapshot_label" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                <anchoritem dst="video_postcapture_toolbar" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                <anchoritem dst="video_postcapture_toolbar" dstEdge="TOP" spacing="var(hb-param-widget-chrome-height)" src="" srcEdge="TOP"/>
+                <anchoritem dst="video_postcapture_toolbar" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                <anchoritem dst="still_postcapture_toolbar" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                <anchoritem dst="still_postcapture_toolbar" dstEdge="TOP" spacing="var(hb-param-widget-chrome-height)" src="" srcEdge="TOP"/>
+                <anchoritem dst="still_postcapture_toolbar" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                <anchoritem dst="embedded_postcapture_toolbar" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                <anchoritem dst="embedded_postcapture_toolbar" dstEdge="TOP" spacing="var(hb-param-widget-chrome-height)" src="" srcEdge="TOP"/>
+                <anchoritem dst="embedded_postcapture_toolbar" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                <anchoritem dst="snapshot_label" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                <anchoritem dst="snapshot_label" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+            </layout>
+        </widget>
+        <string locid="txt_cam_title_camera" name="title" value="Camera"/>
+        <bool name="contentFullScreen" value="TRUE"/>
+        <bool name="visible" value="TRUE"/>
+        <enums name="titleBarFlags" value="TitleBarHidden|TitleBarTransparent"/>
+    </widget>
+    <connect receiver="postcapture_view" sender="cxui_action_post_delete" signal="triggered(bool)" slot="showDeleteNote()"/>
+    <connect receiver="postcapture_view" sender="cxui_action_post_play" signal="triggered(bool)" slot="playVideo()"/>
+    <connect receiver="postcapture_view" sender="cxui_action_post_share" signal="triggered(bool)" slot="launchShare()"/>
+    <connect receiver="postcapture_view" sender="cxui_action_post_photos" signal="triggered(bool)" slot="launchPhotosApp()"/>
+    <connect receiver="postcapture_view" sender="cxui_action_post_videos" signal="triggered(bool)" slot="launchVideosApp()"/>
+    <connect receiver="postcapture_view" sender="cxui_action_post_select" signal="triggered(bool)" slot="select()"/>
+    <metadata activeUIState="Common ui state" display="NHD landscape" unit="un">
+        <uistate name="Common ui state" sections="#common"/>
+    </metadata>
+</hbdocument>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/layouts/view_still_precapture.docml	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,265 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument context="CxuiStillPrecaptureView" version="1.0">
+    <object name="cxui_action_goto_2_camera" type="HbAction">
+        <string name="text" value="Go to 2nd camera"/>
+    </object>
+    <object name="cxui_action_goto_photos" type="HbAction">
+        <string locid="txt_cam_opt_go_to_photos" name="text" value="Go to Photos"/>
+    </object>
+    <object name="cxui_action_self_timer" type="HbAction">
+        <string name="settingskey" value="selfTimer"/>
+        <string locid="txt_cam_opt_self_timer" name="text" value="Self timer"/>
+    </object>
+    <object name="cxui_action_stillpostcapture" type="HbAction">
+        <string name="settingskey" value="still_showcaptured"/>
+        <string locid="txt_cam_opt_show_captured_image" name="text" value="Show captured image"/>
+    </object>
+    <object name="cxui_action_capturetone" type="HbAction">
+        <string locid="txt_cam_opt_capture_tone" name="text" value="Capture tone"/>
+    </object>
+    <object name="cxui_action_imagerotation" type="HbAction">
+        <string locid="txt_cam_opt_image_rotation" name="text" value="Image rotation"/>
+    </object>
+    <object name="cxui_action_setdefaultscenemode" type="HbAction">
+        <string locid="txt_cam_opt_set_as_default_scene_mode" name="text" value="Set as default scene mode"/>
+    </object>
+    <object name="cxui_action_restore" type="HbAction">
+        <string locid="txt_cam_opt_restore_settings" name="text" value="Restore settings"/>
+    </object>
+    <object name="cxui_action_settings" type="HbAction">
+        <string locid="txt_cam_opt_camera_settings" name="text" value="Camera settings"/>
+    </object>
+    <object name="cxui_action_image_quality" type="HbAction">
+        <string name="settingskey" value="imageQuality"/>
+        <string locid="txt_cam_opt_image_quality" name="text" value="Image quality"/>
+    </object>
+    <object name="cxui_action_default_image_name" type="HbAction">
+        <string locid="txt_cam_opt_default_image_name" name="text" value="Default image name"/>
+    </object>
+    <object name="cxui_action_capture" type="HbAction">
+        <icon iconName="qtg_mono_capture" name="icon"/>
+    </object>
+    <object name="cxui_action_goto_video" type="HbAction">
+        <icon iconName="qtg_mono_change_cam_mode" name="icon"/>
+    </object>
+    <object name="cxui_action_flash" type="HbAction">
+        <icon iconName="qtg_mono_flash" name="icon"/>
+        <string name="settingskey" value="flash_mode"/>
+    </object>
+    <object name="cxui_action_scenemodes" type="HbAction">
+        <icon iconName="qtg_mono_automatic" name="icon"/>
+    </object>
+    <widget name="still_capture_view" type="HbView">
+        <widget name="still_container" role="HbView:widget" type="HbWidget">
+            <widget name="transparent" type="HbTransparentWindow">
+                <real name="z" value="0"/>
+            </widget>
+            <widget name="indicatorContainer" type="HbWidget">
+                <widget name="mode_indicator" type="HbLabel">
+                    <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                    <icon iconName="qtg_mono_camera" name="icon"/>
+                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                    <sizehint height="var(hb-param-graphic-size-secondary)" type="FIXED" width="var(hb-param-graphic-size-secondary)"/>
+                </widget>
+                <widget name="quality_indicator" type="HbLabel">
+                    <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                    <sizehint height="var(hb-param-graphic-size-secondary)" type="FIXED" width="var(hb-param-graphic-size-secondary)"/>
+                    <bool name="visible" value="TRUE"/>
+                </widget>
+                <widget name="flash_indicator" type="HbLabel">
+                    <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                    <sizehint height="var(hb-param-graphic-size-secondary)" type="FIXED" width="var(hb-param-graphic-size-secondary)"/>
+                    <bool name="visible" value="TRUE"/>
+                </widget>
+                <real name="z" value="5"/>
+                <bool name="visible" value="FALSE"/>
+                <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-middle-horizontal)" type="linear">
+                    <contentsmargins bottom="var(hb-param-margin-gene-middle-vertical)" left="var(hb-param-margin-gene-middle-horizontal)" right="var(hb-param-margin-gene-middle-horizontal)" top="var(hb-param-margin-gene-middle-vertical)"/>
+                    <linearitem itemname="mode_indicator"/>
+                    <linearitem itemname="quality_indicator"/>
+                    <linearitem itemname="flash_indicator"/>
+                </layout>
+            </widget>
+            <layout type="anchor">
+                <anchoritem dst="indicatorContainer" dstEdge="LEFT" spacing="var(hb-param-margin-gene-left)" src="" srcEdge="LEFT"/>
+                <anchoritem dst="indicatorContainer" dstEdge="TOP" spacing="var(hb-param-margin-gene-top)" src="" srcEdge="TOP"/>
+                <anchoritem dst="transparent" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                <anchoritem dst="transparent" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                <anchoritem dst="transparent" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                <anchoritem dst="transparent" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+            </layout>
+        </widget>
+        <string name="title" value="Camera"/>
+        <bool name="contentFullScreen" value="TRUE"/>
+        <enums name="titleBarFlags" value="TitleBarHidden|TitleBarTransparent"/>
+    </widget>
+    <section name="still_capture_with_widgets">
+        <widget name="still_capture_view" type="HbView">
+            <widget name="still_view_menu" role="HbView:menu" type="HbMenu"/>
+            <widget name="still_container" role="HbView:widget" type="HbWidget">
+                <widget name="toolbar" type="HbToolBar">
+                    <enums name="layoutDirection" value="RightToLeft"/>
+                    <real name="z" value="7"/>
+                    <sizehint type="PREFERRED" width="var(hb-param-widget-toolbar-height)"/>
+                    <enums name="orientation" value="Vertical"/>
+                    <bool name="visible" value="TRUE"/>
+                    <ref object="cxui_action_capture" role="HbToolBar:addAction"/>
+                    <ref object="cxui_action_flash" role="HbToolBar:addAction"/>
+                    <ref object="cxui_action_scenemodes" role="HbToolBar:addAction"/>
+                    <ref object="cxui_action_goto_video" role="HbToolBar:addAction"/>
+                </widget>
+                <widget name="zoom" type="HbSlider">
+                    <real name="z" value="2"/>
+                    <sizehint height="40un" type="PREFERRED"/>
+                    <enums name="orientation" value="Vertical"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
+                <widget name="images_left_container" type="HbWidget">
+                    <widget name="images_remaining" type="HbLabel">
+                        <real name="z" value="1"/>
+                        <string name="textColor" value="#ffffff"/>
+                        <string name="plainText" value="9999"/>
+                        <fontspec name="fontSpec" role="Undefined" textheight="var(hb-param-text-height-tiny)"/>
+                    </widget>
+                    <real name="z" value="1"/>
+                    <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-middle-horizontal)" type="linear">
+                        <contentsmargins bottom="var(hb-param-margin-gene-middle-vertical)" left="var(hb-param-margin-gene-middle-horizontal)" right="var(hb-param-margin-gene-middle-horizontal)" top="var(hb-param-margin-gene-middle-vertical)"/>
+                        <linearitem itemname="images_remaining"/>
+                    </layout>
+                </widget>
+                <widget name="still_precapture_selftimer_container" type="HbWidget">
+                    <widget name="selftimer_button_container" type="HbWidget">
+                        <widget name="still_selftimer_start_button" type="HbPushButton">
+                            <real name="z" value="5"/>
+                            <string locid="txt_cam_button_start" name="text" value="Start"/>
+                            <bool name="visible" value="TRUE"/>
+                            <string name="state" value="normal"/>
+                            <fontspec name="fontSpec" role="Undefined" textheight="var(hb-param-text-height-tiny)"/>
+                        </widget>
+                        <widget name="still_selftimer_cancel_button" type="HbPushButton">
+                            <real name="z" value="4"/>
+                            <string locid="txt_cam_button_cancel" name="text" value="Cancel"/>
+                            <bool name="visible" value="TRUE"/>
+                            <string name="state" value="normal"/>
+                            <fontspec name="fontSpec" role="Undefined" textheight="var(hb-param-text-height-tiny)"/>
+                        </widget>
+                        <real name="z" value="0"/>
+                        <bool name="visible" value="TRUE"/>
+                        <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-middle-horizontal)" type="linear">
+                            <contentsmargins bottom="0un" left="0un" right="0un" top="var(hb-param-margin-gene-top)"/>
+                            <linearitem itemname="still_selftimer_start_button"/>
+                            <linearitem itemname="still_selftimer_cancel_button"/>
+                        </layout>
+                    </widget>
+                    <widget name="selftimer_icon_container" type="HbWidget">
+                        <widget name="still_selftimer_icon" type="HbLabel">
+                            <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                            <icon iconName="qtg_mono_countdown_timer" name="icon"/>
+                            <real name="z" value="2"/>
+                            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                            <sizehint height="var(hb-param-graphic-size-function)" type="FIXED" width="var(hb-param-graphic-size-function)"/>
+                            <bool name="visible" value="TRUE"/>
+                        </widget>
+                        <widget name="still_selftimer_counter" type="HbLabel">
+                            <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                            <real name="z" value="4"/>
+                            <string name="textColor" value="#ffffff"/>
+                            <string name="plainText" value="00"/>
+                            <fontspec name="fontSpec" role="Undefined" textheight="var(hb-param-text-height-primary)"/>
+                        </widget>
+                        <real name="z" value="9"/>
+                        <bool name="visible" value="TRUE"/>
+                        <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-middle-horizontal)" type="linear">
+                            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                            <stretchitem stretchfactor="1"/>
+                            <linearitem itemname="still_selftimer_icon"/>
+                            <linearitem itemname="still_selftimer_counter"/>
+                            <stretchitem stretchfactor="1"/>
+                        </layout>
+                    </widget>
+                    <real name="z" value="1"/>
+                    <layout orientation="Vertical" spacing="0un" type="linear">
+                        <linearitem itemname="selftimer_icon_container"/>
+                        <linearitem itemname="selftimer_button_container"/>
+                    </layout>
+                </widget>
+                <real name="z" value="1"/>
+                <layout type="anchor">
+                    <anchoritem dst="indicatorContainer" dstEdge="LEFT" spacing="var(hb-param-margin-gene-left)" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="indicatorContainer" dstEdge="TOP" spacing="var(hb-param-margin-gene-top)" src="" srcEdge="TOP"/>
+                    <anchoritem dst="toolbar" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="toolbar" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                    <anchoritem dst="toolbar" dstEdge="TOP" spacing="var(hb-param-widget-chrome-height)" src="" srcEdge="TOP"/>
+                    <anchoritem dst="zoom" dstEdge="CENTERV" spacing="0un" src="toolbar" srcEdge="CENTERV"/>
+                    <anchoritem dst="zoom" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-screen)" src="" srcEdge="RIGHT"/>
+                    <anchoritem dst="transparent" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="transparent" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                    <anchoritem dst="transparent" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                    <anchoritem dst="transparent" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                    <anchoritem dst="images_left_container" dstEdge="BOTTOM" spacing="-var(hb-param-margin-gene-bottom)" src="" srcEdge="BOTTOM"/>
+                    <anchoritem dst="images_left_container" dstEdge="LEFT" spacing="11un" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="still_precapture_selftimer_container" dstEdge="CENTERH" spacing="0" src="" srcEdge="CENTERH"/>
+                    <anchoritem dst="still_precapture_selftimer_container" dstEdge="CENTERV" spacing="0" src="" srcEdge="CENTERV"/>
+                </layout>
+            </widget>
+            <enums name="titleBarFlags" value="TitleBarFloating|TitleBarTransparent"/>
+        </widget>
+        <connect receiver="still_capture_view" sender="cxui_action_capturetone" signal="triggered(bool)" slot="launchNotSupportedNotification()"/>
+        <connect receiver="still_capture_view" sender="cxui_action_imagerotation" signal="triggered(bool)" slot="launchNotSupportedNotification()"/>
+        <connect receiver="still_capture_view" sender="cxui_action_setdefaultscenemode" signal="triggered(bool)" slot="launchNotSupportedNotification()"/>
+        <connect receiver="still_capture_view" sender="cxui_action_restore" signal="triggered(bool)" slot="launchNotSupportedNotification()"/>
+        <connect receiver="still_capture_view" sender="cxui_action_image_quality" signal="triggered(bool)" slot="launchSetting()"/>
+        <connect receiver="still_capture_view" sender="cxui_action_default_image_name" signal="triggered(bool)" slot="launchNotSupportedNotification()"/>
+        <connect receiver="still_capture_view" sender="still_view_menu" signal="aboutToShow()" slot="disableControlsTimeout()"/>
+        <connect receiver="still_capture_view" sender="still_view_menu" signal="aboutToHide()" slot="hideControls()"/>
+        <connect receiver="still_capture_view" sender="cxui_action_goto_photos" signal="triggered(bool)" slot="launchPhotosApp()"/>
+        <connect receiver="still_capture_view" sender="cxui_action_self_timer" signal="triggered(bool)" slot="launchSetting()"/>
+        <connect receiver="still_capture_view" sender="cxui_action_settings" signal="triggered(bool)" slot="showSettingsGrid()"/>
+        <connect receiver="still_capture_view" sender="cxui_action_stillpostcapture" signal="triggered(bool)" slot="launchSetting()"/>
+        <connect receiver="still_capture_view" sender="cxui_action_goto_2_camera" signal="triggered(bool)" slot="requestCameraSwitch()"/>
+        <connect receiver="still_capture_view" sender="zoom" signal="valueChanged(int)" slot="zoomTo(int)"/>
+        <connect receiver="still_capture_view" sender="cxui_action_capture" signal="triggered(bool)" slot="capture()"/>
+        <connect receiver="still_capture_view" sender="cxui_action_goto_video" signal="triggered(bool)" slot="goToVideo()"/>
+        <connect receiver="still_capture_view" sender="cxui_action_goto_video" signal="triggered(bool)" slot="hideControls()"/>
+        <connect receiver="still_capture_view" sender="cxui_action_flash" signal="triggered(bool)" slot="launchSetting()"/>
+        <connect receiver="still_capture_view" sender="cxui_action_scenemodes" signal="triggered(bool)" slot="launchNotSupportedNotification()"/>
+    </section>
+    <section name="still_standalone_mode">
+        <widget name="still_view_menu" role="HbView:menu" type="HbMenu">
+            <ref object="cxui_action_goto_photos" role="HbMenu:addAction"/>
+            <ref object="cxui_action_self_timer" role="HbMenu:addAction"/>
+            <ref object="cxui_action_settings" role="HbMenu:addAction"/>
+            <widget name="still_submenu_general" role="HbMenu:menu" type="HbMenu">
+                <string locid="txt_cam_opt_general_settings" name="title" value="General settings"/>
+                <ref object="cxui_action_stillpostcapture" role="HbMenu:addAction"/>
+                <ref object="cxui_action_image_quality" role="HbMenu:addAction"/>
+                <ref object="cxui_action_default_image_name" role="HbMenu:addAction"/>
+                <ref object="cxui_action_capturetone" role="HbMenu:addAction"/>
+                <ref object="cxui_action_imagerotation" role="HbMenu:addAction"/>
+            </widget>
+            <ref object="cxui_action_setdefaultscenemode" role="HbMenu:addAction"/>
+            <ref object="cxui_action_restore" role="HbMenu:addAction"/>
+        </widget>
+    </section>
+    <section name="still_embedded_mode">
+        <widget name="still_view_menu" role="HbView:menu" type="HbMenu">
+            <ref object="cxui_action_self_timer" role="HbMenu:addAction"/>
+            <ref object="cxui_action_settings" role="HbMenu:addAction"/>
+            <widget name="still_submenu_general" role="HbMenu:menu" type="HbMenu">
+                <string locid="txt_cam_opt_general_settings" name="title" value="General settings"/>
+                <ref object="cxui_action_image_quality" role="HbMenu:addAction"/>
+                <ref object="cxui_action_default_image_name" role="HbMenu:addAction"/>
+                <ref object="cxui_action_imagerotation" role="HbMenu:addAction"/>
+            </widget>
+            <ref object="cxui_action_restore" role="HbMenu:addAction"/>
+        </widget>
+    </section>
+    <metadata activeUIState="still_standalone_mode" display="NHD landscape" unit="un">
+        <uistate name="Common ui state" sections="#common"/>
+        <uistate name="still_capture_with_widgets" sections="#common still_capture_with_widgets"/>
+        <uistate name="still_standalone_mode" sections="#common still_capture_with_widgets still_standalone_mode"/>
+        <uistate name="still_embedded_mode" sections="#common still_capture_with_widgets still_embedded_mode"/>
+    </metadata>
+</hbdocument>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/layouts/view_video_precapture.docml	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument version="1.0">
+    <object name="cxui_video_action_record" type="HbAction">
+        <icon iconName="qtg_small_record" name="icon"/>
+    </object>
+    <object name="cxui_video_action_light" type="HbAction">
+        <icon iconName="qtg_mono_light" name="icon"/>
+    </object>
+    <object name="cxui_video_action_zoom" type="HbAction">
+        <icon iconName="qtg_mono_zoom" name="icon"/>
+    </object>
+    <object name="cxui_video_action_gotostill" type="HbAction">
+        <icon iconName="qtg_mono_change_cam_mode" name="icon"/>
+    </object>
+    <object name="cxui_video_action_scene" type="HbAction">
+        <icon iconName="qtg_mono_automatic" name="icon"/>
+    </object>
+    <object name="cxui_video_action_goto_2_camera" type="HbAction">
+        <string name="text" value="Go to second camera"/>
+    </object>
+    <object name="cxui_video_action_quality" type="HbAction">
+        <string name="settingskey" value="videoQuality"/>
+        <string locid="txt_cam_opt_video_quality" name="text" value="Video quality"/>
+    </object>
+    <object name="cxui_video_action_restore" type="HbAction">
+        <string locid="txt_cam_opt_restore_settings" name="text" value="Restore settings"/>
+    </object>
+    <object name="cxui_video_action_help" type="HbAction">
+        <string name="text" value="Help"/>
+    </object>
+    <object name="cxui_video_action_pause" type="HbAction">
+        <icon iconName="qtg_mono_pause" name="icon"/>
+    </object>
+    <object name="cxui_video_action_stop" type="HbAction">
+        <icon iconName="qtg_mono_stop" name="icon"/>
+    </object>
+    <object name="cxui_video_action_resume" type="HbAction">
+        <icon iconName="qtg_small_record" name="icon"/>
+    </object>
+    <object name="cxui_video_action_showcapturedvideo" type="HbAction">
+        <string name="settingskey" value="video_showcaptured"/>
+        <string locid="txt_cam_opt_show_captured_video" name="text" value="Show captured video"/>
+    </object>
+    <object name="cxui_video_action_videosound" type="HbAction">
+        <string locid="txt_cam_opt_video_sound" name="text" value="Video sound"/>
+    </object>
+    <object name="cxui_video_action_defaultvideoname" type="HbAction">
+        <string locid="txt_cam_opt_default_video_name" name="text" value="Default video name"/>
+    </object>
+    <object name="cxui_video_action_setdefaultscenemode" type="HbAction">
+        <string locid="txt_cam_opt_set_as_default_scene_mode" name="text" value="Set as default scene mode"/>
+    </object>
+    <object name="cxui_video_action_settings" type="HbAction">
+        <string locid="txt_cam_opt_camera_settings" name="text" value="Camera settings"/>
+    </object>
+    <object name="cxui_video_action_gotovideos" type="HbAction">
+        <string locid="txt_cam_opt_go_to_videos" name="text" value="Go to Videos"/>
+    </object>
+    <widget name="video_capture_view" type="HbView">
+    	<widget name="video_view_menu" role="HbView:menu" type="HbMenu"/>
+        <widget name="video_container" role="HbView:widget" type="HbWidget">
+            <widget name="video_viewfinder_widget" type="HbTransparentWindow">
+                <real name="z" value="0"/>
+            </widget>
+            <widget name="video_indicator_container_top" type="HbWidget">
+                <widget name="video_mode_indicator" type="HbLabel">
+                    <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                    <icon iconName="qtg_mono_camcorder" name="icon"/>
+                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                    <sizehint height="var(hb-param-graphic-size-secondary)" type="FIXED" width="var(hb-param-graphic-size-secondary)"/>
+                </widget>
+                <widget name="video_quality_indicator" type="HbLabel">
+                    <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                    <icon iconName="qtg_mono_vga" name="icon"/>
+                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                    <sizehint height="var(hb-param-graphic-size-secondary)" type="FIXED" width="var(hb-param-graphic-size-secondary)"/>
+                </widget>
+                <widget name="video_audio_mute_indicator" type="HbLabel">
+                    <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                    <icon iconName="qtg_mono_call_mute" name="icon"/>
+                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                    <sizehint height="var(hb-param-graphic-size-secondary)" type="FIXED" width="var(hb-param-graphic-size-secondary)"/>
+                </widget>
+                <widget name="video_stability_indicator" type="HbLabel">
+                    <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                    <icon iconName="qtg_mono_call_mute" name="icon"/>
+                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                    <sizehint height="var(hb-param-graphic-size-secondary)" type="FIXED" width="var(hb-param-graphic-size-secondary)"/>
+                    <bool name="visible" value="FALSE"/>
+                </widget>
+                <real name="z" value="5"/>
+                <bool name="visible" value="TRUE"/>
+                <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-middle-horizontal)" type="linear">
+                    <contentsmargins bottom="var(hb-param-margin-gene-middle-vertical)" left="var(hb-param-margin-gene-middle-horizontal)" right="var(hb-param-margin-gene-middle-horizontal)" top="var(hb-param-margin-gene-middle-vertical)"/>
+                    <linearitem itemname="video_mode_indicator"/>
+                    <linearitem itemname="video_quality_indicator"/>
+                    <linearitem itemname="video_stability_indicator"/>
+                    <linearitem itemname="video_audio_mute_indicator"/>
+                </layout>
+            </widget>
+            <layout type="anchor">
+                <anchoritem dst="video_indicator_container_top" dstEdge="LEFT" spacing="var(hb-param-margin-gene-left)" src="" srcEdge="LEFT"/>
+                <anchoritem dst="video_indicator_container_top" dstEdge="TOP" spacing="var(hb-param-margin-gene-top)" src="" srcEdge="TOP"/>
+                <anchoritem dst="video_viewfinder_widget" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                <anchoritem dst="video_viewfinder_widget" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                <anchoritem dst="video_viewfinder_widget" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                <anchoritem dst="video_viewfinder_widget" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+            </layout>
+        </widget>
+        <string locid="txt_cam_title_camera" name="title" value="Camera"/>
+        <bool name="contentFullScreen" value="TRUE"/>
+        <enums name="titleBarFlags" value="TitleBarHidden"/>
+    </widget>
+    <section name="video_capture_with_widgets">
+        <widget name="video_capture_view" type="HbView">
+            <widget name="video_view_menu" role="HbView:menu" type="HbMenu"/>
+            <widget name="video_container" role="HbView:widget" type="HbWidget">
+                <widget name="video_toolbar" type="HbToolBar">
+                    <enums name="layoutDirection" value="RightToLeft"/>
+                    <real name="z" value="3"/>
+                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+                    <sizehint type="PREFERRED" width="var(hb-param-widget-toolbar-height)"/>
+                    <enums name="orientation" value="Vertical"/>
+                    <ref object="cxui_video_action_record" role="HbToolBar:addAction"/>
+                    <ref object="cxui_video_action_light" role="HbToolBar:addAction"/>
+                    <ref object="cxui_video_action_scene" role="HbToolBar:addAction"/>
+                    <ref object="cxui_video_action_gotostill" role="HbToolBar:addAction"/>
+                </widget>
+                <widget name="video_toolbar_recording" type="HbToolBar">
+                    <enums name="layoutDirection" value="RightToLeft"/>
+                    <sizehint type="PREFERRED" width="var(hb-param-widget-toolbar-height)"/>
+                    <enums name="orientation" value="Vertical"/>
+                    <bool name="visible" value="FALSE"/>
+                    <ref object="cxui_video_action_pause" role="HbToolBar:addAction"/>
+                    <ref object="cxui_video_action_light" role="HbToolBar:addAction"/>
+                    <ref object="cxui_video_action_stop" role="HbToolBar:addAction"/>
+                </widget>
+                <widget name="video_zoom" type="HbSlider">
+                    <real name="z" value="8"/>
+                    <sizehint height="40un" type="PREFERRED"/>
+                    <enums name="orientation" value="Vertical"/>
+                </widget>
+                <widget name="video_toolbar_paused" type="HbToolBar">
+                    <enums name="layoutDirection" value="RightToLeft"/>
+                    <sizehint type="PREFERRED" width="var(hb-param-widget-toolbar-height)"/>
+                    <enums name="orientation" value="Vertical"/>
+                    <bool name="visible" value="FALSE"/>
+                    <ref object="cxui_video_action_resume" role="HbToolBar:addAction"/>
+                    <ref object="cxui_video_action_light" role="HbToolBar:addAction"/>
+                    <ref object="cxui_video_action_stop" role="HbToolBar:addAction"/>
+                </widget>
+                <widget name="video_indicator_container_bottom" type="HbWidget">
+                    <widget name="video_recording_icon" type="HbLabel">
+                        <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                        <icon iconName="qtg_small_record" name="icon"/>
+                        <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                        <sizehint height="var(hb-param-graphic-size-function)" type="FIXED" width="var(hb-param-graphic-size-function)"/>
+                    </widget>
+                    <widget name="video_remaining_time" type="HbLabel">
+                        <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                        <sizehint height="var(hb-param-graphic-size-function)" type="PREFERRED"/>
+                        <string name="textColor" value="#ff0000"/>
+                        <string name="plainText" value="00:00"/>
+                        <fontspec name="fontSpec" role="Undefined" textheight="var(hb-param-text-height-tiny)"/>
+                    </widget>
+                    <widget name="video_elapsed_time" type="HbLabel">
+                        <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                        <sizehint height="var(hb-param-graphic-size-function)" type="PREFERRED"/>
+                        <string name="textColor" value="#ffffff"/>
+                        <string name="plainText" value="00:00"/>
+                        <fontspec name="fontSpec" role="Undefined" textheight="var(hb-param-text-height-tiny)"/>
+                    </widget>
+                    <real name="z" value="5"/>
+                    <bool name="visible" value="FALSE"/>
+                    <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-middle-horizontal)" type="linear">
+                        <contentsmargins bottom="var(hb-param-margin-gene-middle-vertical)" left="var(hb-param-margin-gene-middle-horizontal)" right="var(hb-param-margin-gene-middle-horizontal)" top="var(hb-param-margin-gene-middle-vertical)"/>
+                        <linearitem itemname="video_recording_icon"/>
+                        <linearitem itemname="video_elapsed_time"/>
+                        <linearitem itemname="video_remaining_time"/>
+                    </layout>
+                </widget>
+                <layout type="anchor">
+                    <anchoritem dst="video_indicator_container_top" dstEdge="LEFT" spacing="var(hb-param-margin-gene-left)" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="video_indicator_container_top" dstEdge="TOP" spacing="var(hb-param-margin-gene-top)" src="" srcEdge="TOP"/>
+                    <anchoritem dst="video_viewfinder_widget" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                    <anchoritem dst="video_viewfinder_widget" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="video_viewfinder_widget" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                    <anchoritem dst="video_viewfinder_widget" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                    <anchoritem dst="video_toolbar" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                    <anchoritem dst="video_toolbar" dstEdge="TOP" spacing="var(hb-param-widget-chrome-height)" src="" srcEdge="TOP"/>
+                    <anchoritem dst="video_toolbar" dstEdge="RIGHT" spacing="var(hb-param-widget-toolbar-height)" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="video_toolbar_recording" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                    <anchoritem dst="video_toolbar_recording" dstEdge="TOP" spacing="var(hb-param-widget-chrome-height)" src="" srcEdge="TOP"/>
+                    <anchoritem dst="video_toolbar_recording" dstEdge="RIGHT" spacing="var(hb-param-widget-toolbar-height)" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="video_zoom" dstEdge="CENTERV" spacing="0un" src="video_toolbar" srcEdge="CENTERV"/>
+                    <anchoritem dst="video_zoom" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-right)" src="" srcEdge="RIGHT"/>
+                    <anchoritem dst="video_toolbar_paused" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                    <anchoritem dst="video_toolbar_paused" dstEdge="TOP" spacing="var(hb-param-widget-chrome-height)" src="" srcEdge="TOP"/>
+                    <anchoritem dst="video_toolbar_paused" dstEdge="RIGHT" spacing="var(hb-param-widget-toolbar-height)" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="video_indicator_container_bottom" dstEdge="BOTTOM" spacing="-var(hb-param-margin-gene-bottom)" src="" srcEdge="BOTTOM"/>
+                    <anchoritem dst="video_indicator_container_bottom" dstEdge="LEFT" spacing="11un" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="video_viewfinder_widget" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                    <anchoritem dst="video_viewfinder_widget" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                    <anchoritem dst="video_viewfinder_widget" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                    <anchoritem dst="video_viewfinder_widget" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                </layout>
+            </widget>
+            <enums name="titleBarFlags" value="TitleBarTransparent"/>
+        </widget>
+        <connect receiver="video_capture_view" sender="video_view_menu" signal="aboutToShow()" slot="disableControlsTimeout()"/>
+        <connect receiver="video_capture_view" sender="video_view_menu" signal="aboutToHide()" slot="hideControls()"/>
+        <connect receiver="video_capture_view" sender="cxui_video_action_settings" signal="triggered(bool)" slot="showSettingsGrid()"/>
+        <connect receiver="video_capture_view" sender="cxui_video_action_quality" signal="triggered(bool)" slot="launchSetting()"/>
+        <connect receiver="video_capture_view" sender="cxui_video_action_restore" signal="triggered(bool)" slot="launchNotSupportedNotification()"/>
+        <connect receiver="video_capture_view" sender="cxui_video_action_showcapturedvideo" signal="triggered(bool)" slot="launchSetting()"/>
+        <connect receiver="video_capture_view" sender="cxui_video_action_videosound" signal="triggered(bool)" slot="launchNotSupportedNotification()"/>
+        <connect receiver="video_capture_view" sender="cxui_video_action_defaultvideoname" signal="triggered(bool)" slot="launchNotSupportedNotification()"/>
+        <connect receiver="video_capture_view" sender="video_zoom" signal="valueChanged(int)" slot="zoomTo(int)"/>
+        <connect receiver="video_capture_view" sender="cxui_video_action_record" signal="triggered(bool)" slot="record()"/>
+        <connect receiver="video_capture_view" sender="cxui_video_action_resume" signal="triggered(bool)" slot="record()"/>
+        <connect receiver="video_capture_view" sender="cxui_video_action_stop" signal="triggered(bool)" slot="stop()"/>
+        <connect receiver="video_capture_view" sender="cxui_video_action_pause" signal="triggered(bool)" slot="pause()"/>
+        <connect receiver="video_capture_view" sender="cxui_video_action_gotostill" signal="triggered(bool)" slot="goToStill()"/>
+        <connect receiver="video_capture_view" sender="cxui_video_action_gotostill" signal="triggered(bool)" slot="hideControls()"/>
+        <connect receiver="video_capture_view" sender="cxui_video_action_light" signal="triggered(bool)" slot="launchNotSupportedNotification()"/>
+        <connect receiver="video_capture_view" sender="cxui_video_action_scene" signal="triggered(bool)" slot="launchNotSupportedNotification()"/>
+        <connect receiver="video_capture_view" sender="cxui_video_action_gotovideos" signal="triggered(bool)" slot="launchVideosApp()"/>
+    </section>
+    <section name="video_standalone_mode">
+        <widget name="video_view_menu" role="HbView:menu" type="HbMenu">
+            <ref object="cxui_video_action_gotovideos" role="HbMenu:addAction"/>
+            <ref object="cxui_video_action_settings" role="HbMenu:addAction"/>
+            <widget name="video_submenu_general" role="HbMenu:menu" type="HbMenu">
+                <string locid="txt_cam_opt_general_settings" name="title" value="General settings"/>
+                <ref object="cxui_video_action_showcapturedvideo" role="HbMenu:addAction"/>
+                <ref object="cxui_video_action_quality" role="HbMenu:addAction"/>
+                <ref object="cxui_video_action_videosound" role="HbMenu:addAction"/>
+                <ref object="cxui_video_action_defaultvideoname" role="HbMenu:addAction"/>
+            </widget>
+            <ref object="cxui_video_action_restore" role="HbMenu:addAction"/>
+        </widget>
+    </section>
+    <section name="video_embedded_mode">
+        <widget name="video_view_menu" role="HbView:menu" type="HbMenu">
+            <ref object="cxui_video_action_settings" role="HbMenu:addAction"/>
+            <widget name="video_submenu_general" role="HbMenu:menu" type="HbMenu">
+                <string locid="txt_cam_opt_general_settings" name="title" value="General settings"/>
+                <ref object="cxui_video_action_quality" role="HbMenu:addAction"/>
+                <ref object="cxui_video_action_videosound" role="HbMenu:addAction"/>
+                <ref object="cxui_video_action_defaultvideoname" role="HbMenu:addAction"/>
+            </widget>
+            <ref object="cxui_video_action_restore" role="HbMenu:addAction"/>
+        </widget>
+    </section>
+    <section name="video_idle">
+        <widget name="video_recording_icon" type="HbLabel">
+            <bool name="visible" value="FALSE"/>
+        </widget>
+        <widget name="video_indicator_container_bottom" type="HbWidget">
+            <bool name="visible" value="TRUE"/>
+            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-middle-horizontal)" type="linear">
+                <contentsmargins bottom="var(hb-param-margin-gene-middle-vertical)" left="var(hb-param-margin-gene-middle-horizontal)" right="var(hb-param-margin-gene-middle-horizontal)" top="var(hb-param-margin-gene-middle-vertical)"/>
+                <linearitem itemname="video_remaining_time"/>
+            </layout>
+        </widget>
+        <widget name="video_elapsed_time" type="HbLabel">
+            <bool name="visible" value="FALSE"/>
+        </widget>
+    </section>
+    <section name="video_recording">
+        <widget name="video_recording_icon" type="HbLabel">
+            <bool name="visible" value="TRUE"/>
+        </widget>
+        <widget name="video_indicator_container_bottom" type="HbWidget">
+            <bool name="visible" value="TRUE"/>
+            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-middle-horizontal)" type="linear">
+                <contentsmargins bottom="var(hb-param-margin-gene-middle-vertical)" left="var(hb-param-margin-gene-middle-horizontal)" right="var(hb-param-margin-gene-middle-horizontal)" top="var(hb-param-margin-gene-middle-vertical)"/>
+                <linearitem itemname="video_recording_icon"/>
+                <linearitem itemname="video_elapsed_time"/>
+                <linearitem itemname="video_remaining_time"/>
+            </layout>
+        </widget>
+        <widget name="video_elapsed_time" type="HbLabel">
+            <bool name="visible" value="TRUE"/>
+        </widget>
+        <widget name="video_remaining_time" type="HbLabel">
+            <bool name="visible" value="TRUE"/>
+        </widget>
+    </section>
+    <section name="video_paused">
+        <widget name="video_recording_icon" type="HbLabel">
+            <bool name="visible" value="FALSE"/>
+        </widget>
+        <widget name="video_indicator_container_bottom" type="HbWidget">
+            <bool name="visible" value="TRUE"/>
+            <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-middle-horizontal)" type="linear">
+                <contentsmargins bottom="var(hb-param-margin-gene-middle-vertical)" left="var(hb-param-margin-gene-middle-horizontal)" right="var(hb-param-margin-gene-middle-horizontal)" top="var(hb-param-margin-gene-middle-vertical)"/>
+                <linearitem itemname="video_recording_icon"/>
+                <linearitem itemname="video_elapsed_time"/>
+                <linearitem itemname="video_remaining_time"/>
+            </layout>
+        </widget>
+        <widget name="video_elapsed_time" type="HbLabel">
+            <bool name="visible" value="TRUE"/>
+        </widget>
+    </section>
+    <metadata activeUIState="Recording" display="NHD landscape" unit="un">
+        <uistate name="Common ui state" sections="#common"/>
+        <uistate name="All widgets" sections="#common video_capture_with_widgets"/>
+        <uistate name="video_standalone_mode" sections="#common video_capture_with_widgets video_standalone_mode"/>
+        <uistate name="video_embedded_mode" sections="#common video_capture_with_widgets video_embedded_mode"/>
+        <uistate name="Idle" sections="#common video_capture_with_widgets video_idle"/>
+        <uistate name="Recording" sections="#common video_capture_with_widgets video_recording"/>
+        <uistate name="Paused" sections="#common video_capture_with_widgets video_paused"/>
+    </metadata>
+</hbdocument>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/src/cxuiapplication.cpp	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,63 @@
+/*
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <QObject>
+#include <QString>
+
+#include "cxutils.h"
+#include "cxuiapplication.h"
+
+
+/*!
+    \class CxuiApplication
+    \brief CxuiApplication is a wrapper used for getting platform UI events.
+
+    CxuiApplication is a wrapper used for getting platform UI events.
+
+    Other classes may connect to CxuiApplication::symbianEvent signal, which is
+    emitted whenever a QSymbianEvent is posted to application.
+
+*/
+CxuiApplication::CxuiApplication(int &argc, char *argv[])
+    : HbApplication(argc, argv, Hb::NoSplash)
+{
+    CX_DEBUG_IN_FUNCTION();
+}
+
+/*!
+* Destructor
+*/
+CxuiApplication::~CxuiApplication()
+{
+    CX_DEBUG_IN_FUNCTION();
+}
+
+#if defined(Q_WS_S60)
+/*!
+* Event filter.
+* Reimplemented from HbApplication.
+* Provides a signal with the event for rest of camera ui to use.
+* Event handling is then progressed to HbApplication to process.
+*/
+bool CxuiApplication::symbianEventFilter(const QSymbianEvent *e)
+{
+    emit symbianEvent(e);
+    return HbApplication::symbianEventFilter(e);
+}
+#endif // Q_WS_S60
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/src/cxuiapplicationframeworkmonitor.cpp	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,60 @@
+/*
+* 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 "cxutils.h"
+#include "cxuiapplication.h"
+#include "cxesettings.h"
+#include "cxuiapplicationframeworkmonitor.h"
+#include "cxuiapplicationframeworkmonitorprivate.h"
+
+
+/*!
+* Constructor
+*/
+CxuiApplicationFrameworkMonitor::CxuiApplicationFrameworkMonitor(CxuiApplication &application, CxeSettings &settings)
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    p = new CxuiApplicationFrameworkMonitorPrivate(application, settings);
+
+    connect(p, SIGNAL(foregroundStateChanged(CxuiApplicationFrameworkMonitor::ForegroundState)),
+            this, SIGNAL(foregroundStateChanged(CxuiApplicationFrameworkMonitor::ForegroundState)));
+    connect(p, SIGNAL(batteryEmpty()), this, SIGNAL(batteryEmpty()));
+
+
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Destructor
+*/
+CxuiApplicationFrameworkMonitor::~CxuiApplicationFrameworkMonitor()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    delete p;
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Current foreground owning state of this application.
+* @return Foreground owning state.
+*/
+CxuiApplicationFrameworkMonitor::ForegroundState CxuiApplicationFrameworkMonitor::foregroundState() const
+{
+    return p->foregroundState();
+}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/src/cxuiapplicationframeworkmonitorprivate.cpp	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,390 @@
+/*
+* 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 <QObject>
+
+#ifdef Q_OS_SYMBIAN
+#include <e32cmn.h>
+#include <w32std.h>
+#include <apgwgnam.h>
+#include <apgtask.h>
+#include <eikenv.h>
+#include <avkondomainpskeys.h>  // keyguard state
+#include <hwrmpowerstatesdkpskeys.h> // battery status
+
+#include <QMetaEnum>
+#include <QString>
+#include <QVariant>
+#include <qsymbianevent.h>
+#endif // Q_OS_SYMBIAN
+
+#include "cxutils.h"
+#include "cxuiapplication.h"
+#include "cxesettings.h"
+#include "cxuiapplicationframeworkmonitorprivate.h"
+
+
+#ifdef Q_OS_SYMBIAN
+namespace
+{
+    inline QString convertTDesC2QString(const TDesC& aDescriptor)
+    {
+        #ifdef QT_NO_UNICODE
+            return QString::fromLocal8Bit(aDescriptor.Ptr(), aDescriptor.Length());
+        #else
+            return QString::fromUtf16(aDescriptor.Ptr(), aDescriptor.Length());
+        #endif
+    }
+
+    inline QString windowGroupName(RWsSession& ws, int id)
+    {
+        TBuf<CApaWindowGroupName::EMaxLength> name;
+        ws.GetWindowGroupNameFromIdentifier(id, name);
+        // Window group name contains "null" characters,
+        // which are considered end-of-string if not replaced.
+        for (int i=0; i < name.Length(); i++) {
+            if (name[i] == NULL) {
+                name[i] = ' ';
+            }
+        }
+        return convertTDesC2QString(name);
+    }
+
+    //!@todo: Avkon UIDs not needed once device dialogs fully implemented in Orbit.
+
+    // AknCapServer
+    static const unsigned int UID_AKNCAPSERVER    = 0x10207218;
+
+    // Phone ui
+    static const unsigned int UID_PHONEUI         = 0x100058B3;
+    // Task switcher
+    static const unsigned int UID_TASKSWITCHER    = 0x2002677D;
+    // Dialog server
+    static const unsigned int UID_DIALOGAPPSERVER = 0x20022FC5;
+}
+#endif // Q_OS_SYMBIAN
+
+
+/*!
+* Constructor
+*/
+CxuiApplicationFrameworkMonitorPrivate::CxuiApplicationFrameworkMonitorPrivate(CxuiApplication &application, CxeSettings& settings)
+    :  mApplication(application),
+       mSettings(settings),
+#ifdef Q_OS_SYMBIAN
+       mWsSession(CCoeEnv::Static()->WsSession()),
+       mWindowGroup(CCoeEnv::Static()->RootWin()),
+       mWindowGroupId(mWindowGroup.Identifier()),
+       mWindowGroupName(),
+       mKeyLockState(EKeyguardNotActive),
+       mBatteryStatus(EBatteryStatusUnknown),
+#endif // Q_OS_SYMBIAN
+       mState(CxuiApplicationFrameworkMonitor::ForegroundOwned)
+{
+    CX_DEBUG_ENTER_FUNCTION();
+
+#ifdef Q_OS_SYMBIAN
+    mWindowGroup.EnableFocusChangeEvents();
+    mWindowGroupName = windowGroupName(mWsSession, mWindowGroupId);
+    init();
+#endif // Q_OS_SYMBIAN
+
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Destructor
+*/
+CxuiApplicationFrameworkMonitorPrivate::~CxuiApplicationFrameworkMonitorPrivate()
+{
+    CX_DEBUG_IN_FUNCTION();
+}
+
+/*!
+* Current foreground owning state of this application.
+* @return Foreground owning state.
+*/
+CxuiApplicationFrameworkMonitor::ForegroundState CxuiApplicationFrameworkMonitorPrivate::foregroundState() const
+{
+    return mState;
+}
+
+#ifdef Q_OS_SYMBIAN
+/*!
+* Slot to handle Symbian event.
+* @param event Symbian event to be handled. (Ownership not taken.)
+*/
+void CxuiApplicationFrameworkMonitorPrivate::handleEvent(const QSymbianEvent *event)
+{
+    // We receive tons of these events, so function start and end traces
+    // are intentionally left out.
+
+    if (event) {
+        switch (event->type()) {
+        case QSymbianEvent::WindowServerEvent:
+            handleWindowServerEvent(event);
+            break;
+        }
+    }
+}
+
+/*!
+* Handle changes in RProperty values of keylock state and battery status.
+* @param uid Category uid of the changed property.
+* @param key Integer key of the changed property.
+* @param value New value of the changed property.
+*/
+void CxuiApplicationFrameworkMonitorPrivate::handlePropertyEvent(long int uid, unsigned long int key, QVariant value)
+{
+    CX_DEBUG_ENTER_FUNCTION();
+
+    if (uid == KPSUidAvkonDomain.iUid && key == KAknKeyguardStatus) {
+        CX_DEBUG(("CxuiApplicationFrameworkMonitor - keylock status changed: %d -> %d", value.toInt(), mKeyLockState));
+
+        // Check if the keylock value has actually changed
+        const int newKeyLockState = value.toInt();
+        if (newKeyLockState != mKeyLockState) {
+            mKeyLockState = newKeyLockState;
+            // Set foreground state based on keylock status and focused application info.
+            setState(getCurrentState());
+        }
+    } else if (uid == KPSUidHWRMPowerState.iUid && key == KHWRMBatteryStatus ) {
+        CX_DEBUG(("CxuiApplicationFrameworkMonitor - battery status changed: %d -> %d", value.toInt(), mBatteryStatus));
+
+        // If status changed, check if battery is going empty.
+        const int newBatteryStatus = value.toInt();
+        if (newBatteryStatus != mBatteryStatus) {
+            mBatteryStatus = newBatteryStatus;
+
+            // Notify that battery is almost empty,
+            // need to stop any recordings etc.
+            if( mBatteryStatus == EBatteryStatusEmpty ) {
+                emit batteryEmpty();
+            }
+        }
+    }
+
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Set initial values.
+*/
+void CxuiApplicationFrameworkMonitorPrivate::init()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+
+    // Connect to application (window server) events.
+    connect(&mApplication, SIGNAL(symbianEvent(const QSymbianEvent *)), this, SLOT(handleEvent(const QSymbianEvent *)));
+
+    QVariant value;
+
+    // Get initial battery status.
+    mSettings.get(KPSUidHWRMPowerState.iUid, KHWRMBatteryStatus, Cxe::PublishAndSubscribe, value);
+    mBatteryStatus = value.toInt();
+
+    // Get initial keylock status.
+    mSettings.get(KPSUidAvkonDomain.iUid, KAknKeyguardStatus, Cxe::PublishAndSubscribe, value);
+    mKeyLockState = value.toInt();
+
+    bool ok = connect(&mSettings, SIGNAL(settingValueChanged(long int, unsigned long int, QVariant)),
+                      this, SLOT(handlePropertyEvent(long int, unsigned long int, QVariant)));
+    CX_DEBUG_ASSERT(ok);
+
+    // Get foreground state. Depends on keyguard status, so that needs to be read first.
+    mState = getCurrentState();
+
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Helper method to handle Symbian event that specificly is of type QSymbianEvent::WindowServerEvent.
+* @param event Symbian event to be handled. (Ownership not taken.)
+*/
+bool CxuiApplicationFrameworkMonitorPrivate::handleWindowServerEvent(const QSymbianEvent *event)
+    {
+    // We receive tons of these events, so function start and end traces
+    // are intentionally left out.
+
+    const TWsEvent *wsEvent = event->windowServerEvent();
+    if (wsEvent) {
+        switch (wsEvent->Type()) {
+        case EEventFocusGroupChanged: {
+            CX_DEBUG(("CxuiApplicationFrameworkMonitor - EEventFocusGroupChanged event"));
+            setState(getCurrentState());
+            break;
+        }
+        case EEventFocusGained: {
+            CX_DEBUG(("CxuiApplicationFrameworkMonitor - EEventFocusGained event"));
+            setState(getCurrentState());
+            break;
+        }
+        case EEventFocusLost: {
+            CX_DEBUG(("CxuiApplicationFrameworkMonitor - EEventFocusLost event"));
+            setState(getCurrentState());
+            break;
+        }
+        case EEventWindowVisibilityChanged: {
+            const TWsVisibilityChangedEvent *visibilityEvent = wsEvent->VisibilityChanged();
+            if (visibilityEvent) {
+                CX_DEBUG(("CxuiApplicationFrameworkMonitor - EFullyVisible: bits[%s]",
+                    QString::number(TWsVisibilityChangedEvent::EFullyVisible, 2).toAscii().constData() ));
+                CX_DEBUG(("CxuiApplicationFrameworkMonitor - EPartiallyVisible: bits[%s]",
+                    QString::number(TWsVisibilityChangedEvent::EPartiallyVisible, 2).toAscii().constData() ));
+                CX_DEBUG(("CxuiApplicationFrameworkMonitor - ENotVisible: bits[%s]",
+                    QString::number(TWsVisibilityChangedEvent::ENotVisible, 2).toAscii().constData() ));
+                CX_DEBUG(("CxuiApplicationFrameworkMonitor - event:       bits[%s]",
+                    QString::number(visibilityEvent->iFlags, 2).toAscii().constData() ));
+            }
+            break;
+        }
+        default:
+            break;
+        }
+    }
+
+    return false;
+}
+
+/*!
+* Set state and emit signal if state really changes.
+* @param state New state.
+*/
+void CxuiApplicationFrameworkMonitorPrivate::setState(CxuiApplicationFrameworkMonitor::ForegroundState state)
+{
+    if (mState != state) {
+        const CxuiApplicationFrameworkMonitor::ForegroundState original(mState);
+
+        // Check if state transition is acceptable in current state.
+        switch (mState) {
+        case CxuiApplicationFrameworkMonitor::ForegroundOwned:
+        case CxuiApplicationFrameworkMonitor::ForegroundPartiallyLost:
+            // All changes accepted.
+            mState = state;
+            break;
+        case CxuiApplicationFrameworkMonitor::ForegroundFullyLost:
+            // If foreground application is changed to note when we are already
+            // fully in background, cannot accept state change to "partial foreground".
+            if (state != CxuiApplicationFrameworkMonitor::ForegroundPartiallyLost) {
+                mState = state;
+            } else {
+                CX_DEBUG(("CxuiApplicationFrameworkMonitor - state change full bg -> partial bg ignored"));
+            }
+        }
+
+        if (mState != original) {
+            CX_DEBUG(("CxuiApplicationFrameworkMonitor - state change [%s] -> [%s]",
+                CxuiApplicationFrameworkMonitor::staticMetaObject.enumerator(
+                    CxuiApplicationFrameworkMonitor::staticMetaObject.indexOfEnumerator("ForegroundState")).valueToKey(original),
+                CxuiApplicationFrameworkMonitor::staticMetaObject.enumerator(
+                    CxuiApplicationFrameworkMonitor::staticMetaObject.indexOfEnumerator("ForegroundState")).valueToKey(mState) ));
+
+            // If state was changed, signal it to listeners.
+            emit foregroundStateChanged(mState);
+        }
+    }
+}
+
+/*!
+* Get the current foreground state.
+* @return Current state for foreground ownership.
+*/
+CxuiApplicationFrameworkMonitor::ForegroundState CxuiApplicationFrameworkMonitorPrivate::getCurrentState()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+
+    CxuiApplicationFrameworkMonitor::ForegroundState state(CxuiApplicationFrameworkMonitor::ForegroundOwned);
+    int focusWindowGroupId(mWsSession.GetFocusWindowGroup());
+
+    if (mKeyLockState != EKeyguardNotActive) {
+        // Keylock enabled is the same as if other application is in foreground.
+        state = CxuiApplicationFrameworkMonitor::ForegroundFullyLost;
+    } else if (focusWindowGroupId == mWindowGroupId) {
+        // If our window group has focus, we clearly are the foreground owning application.
+        CX_DEBUG(("CxuiApplicationFrameworkMonitor - Foreground window group matches ours."));
+        state = CxuiApplicationFrameworkMonitor::ForegroundOwned;
+
+    } else {
+        // Need to check if foreground is owned by known apps.
+        unsigned int uid(focusedApplicationUid());
+
+        // Check the app uid.
+        switch (uid) {
+        case UID_AKNCAPSERVER:
+        case UID_TASKSWITCHER:
+        case UID_DIALOGAPPSERVER:
+            // Note or task switcher in foreground.
+            state = CxuiApplicationFrameworkMonitor::ForegroundPartiallyLost;
+            break;
+        case UID_PHONEUI:
+        default:
+            // Foreground owned by other app.
+            state = CxuiApplicationFrameworkMonitor::ForegroundFullyLost;
+            break;
+        }
+    }
+
+    CX_DEBUG_EXIT_FUNCTION();
+    return state;
+}
+
+/*!
+* Get the uid of application in foreground.
+* @return Application uid for the foreground application.
+*/
+unsigned int CxuiApplicationFrameworkMonitorPrivate::focusedApplicationUid()
+{
+    unsigned int uid(0);
+    int focusWgId(mWsSession.GetFocusWindowGroup());
+
+    TRAP_IGNORE({
+        CApaWindowGroupName* wgn = CApaWindowGroupName::NewLC(mWsSession, focusWgId);
+        uid = wgn->AppUid().iUid;
+        CleanupStack::PopAndDestroy(wgn);
+    });
+
+    // If the window group identifier does not have the application uid set,
+    // get it via thread secure id.
+    if (uid == 0) {
+        TApaTask task(mWsSession);
+        task.SetWgId(focusWgId);
+
+        RThread t;
+        int err = t.Open(task.ThreadId());
+        if (err == KErrNone) {
+            uid = t.SecureId().iId;
+            CX_DEBUG(("CxuiApplicationFrameworkMonitor - uid resolved from thread"));
+        }
+        t.Close();
+    }
+
+#ifdef CX_DEBUG
+    QString name(windowGroupName(mWsSession, focusWgId));
+
+    CX_DEBUG(("CxuiApplicationFrameworkMonitor - Own window group id:     0x%08x", mWindowGroupId));
+    CX_DEBUG(("CxuiApplicationFrameworkMonitor - Focused window group id: 0x%08x", focusWgId));
+    CX_DEBUG(("CxuiApplicationFrameworkMonitor - Own window group name:        [%s]", mWindowGroupName.toAscii().constData()));
+    CX_DEBUG(("CxuiApplicationFrameworkMonitor - Focused window group name:    [%s]", name.toAscii().constData()));
+    CX_DEBUG(("CxuiApplicationFrameworkMonitor - Focused application uid: 0x%08x", uid));
+#endif
+
+    return uid;
+}
+
+#endif // Q_OS_SYMBIAN
+
+// end of file
--- a/camerauis/cameraxui/cxui/src/cxuicapturekeyhandler.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/src/cxuicapturekeyhandler.cpp	Thu May 13 21:30:19 2010 +0300
@@ -44,37 +44,52 @@
     mEngine.featureManager().configuredValues(CxeRuntimeKeys::PRIMARY_CAMERA_CAPTURE_KEYS,
                                               mPrimaryCameraCaptureKeys);
 
-    int scanCode = 0;
-    int handle = 0;
-    foreach (scanCode, mPrimaryCameraAutofocusKeys) {
-        handle = mWindowGroup.CaptureKeyUpAndDowns(scanCode, 0, 0, CXUI_KEY_PRIORITY);
-        mCapturedKeyUpDownHandles.append(handle);
-    }
-    foreach (scanCode, mPrimaryCameraCaptureKeys) {
-        handle = mWindowGroup.CaptureKeyUpAndDowns(scanCode, 0, 0, CXUI_KEY_PRIORITY);
-        mCapturedKeyUpDownHandles.append(handle);
-    }
-
-    // Capture key press events... this is done only to make sure other
-    // applications do not react to camera key events.
-    handle = mWindowGroup.CaptureKey(EKeyCamera, 0, 0, CXUI_KEY_PRIORITY);
-    mCapturedKeyHandles.append(handle);
-
+    listenKeys(true);
     CX_DEBUG_EXIT_FUNCTION();
 }
 
 CxuiCaptureKeyHandler::~CxuiCaptureKeyHandler()
 {
     CX_DEBUG_ENTER_FUNCTION();
+    listenKeys(false);
+    CX_DEBUG_EXIT_FUNCTION();
+}
 
-    int handle = 0;
-    foreach (handle, mCapturedKeyUpDownHandles) {
-        mWindowGroup.CancelCaptureKeyUpAndDowns(handle);
+/*!
+* Start or stop listening key events.
+* @param listen Should we start (true) or stop (false) listening key events.
+*/
+void CxuiCaptureKeyHandler::listenKeys(bool listen)
+{
+    CX_DEBUG_ENTER_FUNCTION();
+
+    if (listen) {
+        // Protect from multiple calls
+        if (mCapturedKeyUpDownHandles.empty() && mCapturedKeyHandles.empty()) {
+
+            int key(0);
+            foreach (key, mPrimaryCameraAutofocusKeys) {
+                CX_DEBUG(("CxuiCaptureKeyHandler - hooking autofocus key with scan / key code: %d", key));
+                listenKey(key);
+            }
+            foreach (key, mPrimaryCameraCaptureKeys) {
+                CX_DEBUG(("CxuiCaptureKeyHandler - hooking capture key with scan / key code: %d", key));
+                listenKey(key);
+            }
+        }
+    } else {
+
+        int handle(0);
+        foreach (handle, mCapturedKeyUpDownHandles) {
+            mWindowGroup.CancelCaptureKeyUpAndDowns(handle);
+        }
+        mCapturedKeyUpDownHandles.clear();
+
+        foreach (handle, mCapturedKeyHandles) {
+            mWindowGroup.CancelCaptureKey(handle);
+        }
+        mCapturedKeyHandles.clear();
     }
-    foreach (handle, mCapturedKeyHandles) {
-        mWindowGroup.CancelCaptureKey(handle);
-    }
-
     CX_DEBUG_EXIT_FUNCTION();
 }
 
@@ -95,6 +110,9 @@
 
     if (event->type() == QEvent::KeyPress) {
         QKeyEvent *keyEvent = static_cast<QKeyEvent*> (event);
+        CX_DEBUG(("CxuiCaptureKeyHandler - key press with nativeVirtualKey(): %d", keyEvent->nativeVirtualKey()));
+        CX_DEBUG(("CxuiCaptureKeyHandler - key press with nativeScanCode(): %d", keyEvent->nativeScanCode()));
+
         if ( mPrimaryCameraAutofocusKeys.contains(keyEvent->nativeScanCode())
             && !mAutofocusKeyPressed ) {
 
@@ -110,6 +128,8 @@
         }
     } else if (event->type() == QEvent::KeyRelease) {
         QKeyEvent *keyEvent = static_cast<QKeyEvent*> (event);
+        CX_DEBUG(("CxuiCaptureKeyHandler - key press with nativeVirtualKey(): %d", keyEvent->nativeVirtualKey()));
+        CX_DEBUG(("CxuiCaptureKeyHandler - key press with nativeScanCode(): %d", keyEvent->nativeScanCode()));
 
         if ( mPrimaryCameraAutofocusKeys.contains(keyEvent->nativeScanCode())
             && mAutofocusKeyPressed ) {
@@ -129,3 +149,36 @@
     CX_DEBUG_EXIT_FUNCTION();
     return eventWasConsumed;
 }
+
+/*!
+* Helper method to listen to given key (key code or scan code).
+* We need to listen to both "key up", "key down" and "key pressed" events to
+* get all the necessary events to handleKeyEvent(). If we e.g. just listen
+* to up/down events, the way native events are translated to QKeyEvents,
+* we only get QEvent::KeyRelease event when partially in background.
+* @param key Keycode or scancode for the key to listen. Both should be listened.
+*/
+void CxuiCaptureKeyHandler::listenKey(int key)
+{
+    // Capture key down and up events
+    int handle = mWindowGroup.CaptureKeyUpAndDowns(key, 0, 0, CXUI_KEY_PRIORITY);
+
+    // Handle < 0 means error.
+    if (handle >= 0) {
+        mCapturedKeyUpDownHandles.append(handle);
+    } else {
+        CX_DEBUG(("[WARNING] CxuiCaptureKeyHandler - Problem hooking to key-up/key-down with code: %d", key));
+    }
+
+    // Capture key press events
+    handle = mWindowGroup.CaptureKey(key, 0, 0, CXUI_KEY_PRIORITY);
+
+    if (handle >= 0) {
+        mCapturedKeyHandles.append(handle);
+    } else {
+        CX_DEBUG(("[WARNING] CxuiCaptureKeyHandler - Problem hooking to key-press with code: %d", key));
+    }
+}
+
+
+// end of file
--- a/camerauis/cameraxui/cxui/src/cxuidocumentloader.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/src/cxuidocumentloader.cpp	Thu May 13 21:30:19 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -23,16 +23,13 @@
 #include "cxuidocumentloader.h"
 #include "cxuistillprecaptureview.h"
 #include "cxuipostcaptureview.h"
-#include "cxuistillprecaptureview2.h"
 #include "cxuivideoprecaptureview.h"
-#include "cxuivideoprecaptureview2.h"
+#include "cxuiscenemodeview.h"
 #include "cxutils.h" //CX_DEBUG_ASSERT
 #include "cxuisettingdialog.h"
-#include "cxuisettingbutton.h"
 #include "cxuisettingslider.h"
 #include "cxuisettingradiobuttonlist.h"
-#include "cxuiscenelabel.h"
-#include "cxuisettingbuttoncontainer.h"
+#include "cxuizoomslider.h"
 #include "cxeengine.h"
 #include "cxuienums.h"
 
@@ -58,33 +55,26 @@
             object = new CxuiVideoPrecaptureView();
         } else if (name == CxUiLayout::POSTCAPTURE_VIEW) {
             object = new CxuiPostcaptureView();
+        } else if (name == CxUiLayout::STILL_SCENES_VIEW) {
+            object = new CxuiSceneModeView(NULL);
         }
-    } else if (type == "CxuiStillPrecaptureView2") {
-        object = new CxuiStillPrecaptureView2();
-
-    } else if (type == "CxuiVideoPrecaptureView2") {
-        object = new CxuiVideoPrecaptureView2;
-
     } else if (type == "HbDialog") {
         if (name == CxUiLayout::SETTINGS_DIALOG_WIDGET
          || name == CxUiLayout::SETTINGS_SLIDER_DIALOG_WIDGET) {
             object = new CxuiSettingDialog();
         }
-    } else if (type == "CxuiSettingButton") {
-        object = new CxuiSettingButton(NULL, mEngine);
-
-    } else if (type == "CxuiSettingSlider") {
-        object = new CxuiSettingSlider(NULL, mEngine);
-
-    } else if (type == "CxuiSettingRadioButtonList") {
-        object = new CxuiSettingRadioButtonList(NULL, mEngine);
-
-    } else if (type == "CxuiSceneLabel") {
-        object = new CxuiSceneLabel(NULL, mEngine);
-
-    } else if (type == "CxuiSettingButtonContainer") {
-        object = new CxuiSettingButtonContainer(NULL);
-
+    } else if (type == "HbSlider") {
+        if (name == CxUiLayout::SETTINGS_SLIDER_DIALOG_CONTENT_WIDGET) {
+            object = new CxuiSettingSlider(NULL, mEngine);
+        } else if (name == CxUiLayout::STILL_PRE_CAPTURE_ZOOM_SLIDER 
+         || name == CxUiLayout::VIDEO_PRE_CAPTURE_ZOOM_SLIDER) {
+            object = new CxuiZoomSlider();
+        }
+    } else if (type == "HbRadioButtonList") {
+        if (name == CxUiLayout::SETTINGS_DIALOG_CONTENT_WIDGET
+         || name == CxUiLayout::SCENE_VIEW_RADIOBUTTONS) {
+            object = new CxuiSettingRadioButtonList(NULL, mEngine);
+        }
     }
 
     if (object) {
--- a/camerauis/cameraxui/cxui/src/cxuierrormanager.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/src/cxuierrormanager.cpp	Thu May 13 21:30:19 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -15,10 +15,11 @@
 *
 */
 
-#include <hbdialog.h>
-#include <hblabel.h>
-#include <hbpushbutton.h>
 #include <QCoreApplication>
+#include <HbDialog>
+#include <HbMessageBox>
+#include <HbLabel>
+#include <HbPushButton>
 
 #include "cxutils.h"
 #include "cxeerror.h"
@@ -29,8 +30,8 @@
 #include "cxecameradevicecontrol.h"
 
 
-/*
-* CxuiErrorManager::CxuiErrorManager
+/*!
+* Constructor
 */
 CxuiErrorManager::CxuiErrorManager(CxuiCaptureKeyHandler &keyHandler,CxuiDocumentLoader *documentLoader) :
     mKeyHandler(keyHandler),
@@ -42,11 +43,9 @@
     CX_DEBUG_EXIT_FUNCTION();
 }
 
-// ---------------------------------------------------------------------------
-// CxuiViewManager::~CxuiViewManager
-//
-// ---------------------------------------------------------------------------
-//
+/*!
+* Destructor
+*/
 CxuiErrorManager::~CxuiErrorManager()
 {
     CX_DEBUG_ENTER_FUNCTION();
@@ -54,11 +53,10 @@
 }
 
 
-// ---------------------------------------------------------------------------
-// CxuiErrorManager::reportError
-//
-// ---------------------------------------------------------------------------
-//
+/*!
+* Analyze the error code and act accordingly.
+* @param error Error code.
+*/
 void CxuiErrorManager::analyze(CxeError::Id error)
 {
     CX_DEBUG_ENTER_FUNCTION();
@@ -66,25 +64,25 @@
     mErrorMsgPopup = NULL;
     mErrorSeverity = CxuiErrorManager::None;
 
-    // start evaluating the error.
-    QString errorMsgTxt = getErrorDetails(error);
+    if (error != CxeError::None) {
+        // start evaluating the error.
+        QString errorMsgTxt = getErrorDetails(error);
 
-    if(mErrorSeverity != CxuiErrorManager::None) {
-        // show the error note to the user.
-        launchPopup(errorMsgTxt);
-    } else {
-        // ignore
+        if(mErrorSeverity != CxuiErrorManager::None) {
+            // show the error note to the user.
+            launchPopup(errorMsgTxt);
+        } else {
+            // ignore
+        }
     }
 
     CX_DEBUG_EXIT_FUNCTION();
 }
 
 
-// ---------------------------------------------------------------------------
-// CxuiErrorManager::aboutToClosePopup
-//
-// ---------------------------------------------------------------------------
-//
+/*!
+* Slot that gets called when error note is closed.
+*/
 void CxuiErrorManager::aboutToClosePopup()
 {
     CX_DEBUG_ENTER_FUNCTION();
@@ -94,12 +92,9 @@
 }
 
 
-
-// ---------------------------------------------------------------------------
-// CxuiErrorManager::closeApp
-//
-// ---------------------------------------------------------------------------
-//
+/*!
+* Helper method for closing the application.
+*/
 void CxuiErrorManager::closeApp()
 {
     CX_DEBUG_ENTER_FUNCTION();
@@ -109,10 +104,11 @@
 
 
 
-// ---------------------------------------------------------------------------
-// CxuiErrorManager::getErrorDetails
-// evaluates error for error severity and error note
-// ---------------------------------------------------------------------------
+/*!
+* Helper method to get the error message to use for showing note to user,
+* and set the severity level, based on given error code.
+* @param error Error code to be analyzed.
+*/
 QString CxuiErrorManager::getErrorDetails(CxeError::Id error)
 {
     CX_DEBUG_ENTER_FUNCTION();
@@ -129,6 +125,9 @@
             mErrorSeverity = CxuiErrorManager::Severe;
             msg = hbTrId("txt_cam_info_camera_already_in_use");
             break;
+        case CxeError::DiskFull:
+            mErrorSeverity = CxuiErrorManager::Warning;
+            msg = hbTrId("txt_cam_info_memory_full");
         default:
             break;
     }
@@ -137,14 +136,33 @@
     return msg;
 }
 
-
-// ---------------------------------------------------------------------------
-// CxuiErrorManager::launchPopup
-// ---------------------------------------------------------------------------
+/*!
+*
+*/
 void CxuiErrorManager::launchPopup(QString& errorMsgTxt)
 {
     CX_DEBUG_ENTER_FUNCTION();
 
+    switch (mErrorSeverity) {
+    case CxuiErrorManager::Warning:
+        showLowSeverityNote(errorMsgTxt);
+        break;
+    case CxuiErrorManager::Severe:
+    case CxuiErrorManager::Critical:
+        showHighSeverityNote(errorMsgTxt);
+        break;
+    default:
+        break;
+    }
+
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Show error note for high severity error.
+*/
+void CxuiErrorManager::showHighSeverityNote(QString& errorMsgTxt)
+{
     // we always prepare the popup for the new message and hence we load the
     // popup everytime from document loader
 
@@ -156,8 +174,15 @@
     CX_DEBUG(("mErrorMsgPopup load ok=%d", ok));
 
     mErrorMsgPopup = qobject_cast<HbDialog*>(mDocumentLoader->findWidget(CxUiLayout::ERROR_POPUP));
+    CX_ASSERT_ALWAYS(mErrorMsgPopup);
 
-    CX_ASSERT_ALWAYS(mErrorMsgPopup);
+    // HbDialog's default background item is replaced with black rectangle
+    QGraphicsRectItem *backgroundItem = new QGraphicsRectItem();
+    QBrush blackBrush = QBrush(Qt::black);
+    backgroundItem->setBrush(blackBrush);
+    QGraphicsItem *origBgItem = mErrorMsgPopup->backgroundItem();
+    backgroundItem->setRect(origBgItem->boundingRect());
+    mErrorMsgPopup->setBackgroundItem(backgroundItem);
 
     mErrorMsgPopup->setTimeout(HbDialog::NoTimeout);
     mErrorMsgPopup->setBackgroundFaded(false);
@@ -182,3 +207,13 @@
 
     CX_DEBUG_EXIT_FUNCTION();
 }
+
+/*!
+* Show error note for low severity error.
+*/
+void CxuiErrorManager::showLowSeverityNote(QString& errorMsgTxt)
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    HbMessageBox::warning(errorMsgTxt);
+    CX_DEBUG_EXIT_FUNCTION();
+}
--- a/camerauis/cameraxui/cxui/src/cxuipostcaptureview.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/src/cxuipostcaptureview.cpp	Thu May 13 21:30:19 2010 +0300
@@ -32,7 +32,7 @@
 #include <hbmessagebox.h>
 #include <hbnotificationdialog.h>
 
-#include <shareuidialog.h>
+#include <shareui.h>
 
 #include "cxeviewfindercontrol.h"
 #include "cxuienums.h"
@@ -136,14 +136,20 @@
 
     // get toolbar pointers from the documentloader
     widget = mDocumentLoader->findWidget(STILL_POST_CAPTURE_TOOLBAR);
+    // This resize is a workaround to get toolbar shown correctly.
+    widget->resize(60, 300);
     mStillToolbar = qobject_cast<HbToolBar *> (widget);
     CX_DEBUG_ASSERT(mStillToolbar);
 
     widget = mDocumentLoader->findWidget(VIDEO_POST_CAPTURE_TOOLBAR);
+    // This resize is a workaround to get toolbar shown correctly.
+    widget->resize(60, 300);
     mVideoToolbar = qobject_cast<HbToolBar *> (widget);
     CX_DEBUG_ASSERT(mVideoToolbar);
 
     widget = mDocumentLoader->findWidget(EMBEDDED_POST_CAPTURE_TOOLBAR);
+    // This resize is a workaround to get toolbar shown correctly.
+    widget->resize(60, 300);
     mEmbeddedToolbar = qobject_cast<HbToolBar *> (widget);
     CX_DEBUG_ASSERT(mEmbeddedToolbar);
 
@@ -204,9 +210,11 @@
  */
 void CxuiPostcaptureView::playVideo()
 {
+
     launchNotSupportedNotification();
     //! @todo needs an implementation
     CX_DEBUG_IN_FUNCTION();
+
 }
 
 // ---------------------------------------------------------------------------
@@ -218,18 +226,38 @@
 {
     CX_DEBUG_ENTER_FUNCTION();
 
-    QString filename = getCurrentFilename();
-    bool ret = false;
-
     hideControls();
 
     if (mEngine->mode() == Cxe::VideoMode) {
-        ret = HbMessageBox::question(hbTrId("txt_cam_other_delete_video_clip"));
+        HbMessageBox::question(hbTrId("txt_cam_other_delete_video_clip"),
+                               this,
+                               SLOT(handleDeleteDialogClosed(HbAction*)));
     } else {
-        ret = HbMessageBox::question(hbTrId("txt_cam_other_delete_image"));
+        HbMessageBox::question(hbTrId("txt_cam_other_delete_image"),
+                               this,
+                               SLOT(handleDeleteDialogClosed(HbAction*)));
     }
 
-    if (ret) {
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+// ---------------------------------------------------------------------------
+// CxuiPostcaptureView::handleDeleteDialogClosed
+//
+// ---------------------------------------------------------------------------
+//
+void CxuiPostcaptureView::handleDeleteDialogClosed(HbAction *action)
+{
+    CX_DEBUG_ENTER_FUNCTION();
+
+    hideControls();
+
+    HbMessageBox *dlg = qobject_cast<HbMessageBox*>(sender());
+
+    // check that it was "primary action" that closed the dialog
+    if (dlg && dlg->actions().at(0) == action) {
+        // User confirmed delete
+        QString filename = getCurrentFilename();
         QFileInfo fileInfo(filename);
         if (fileInfo.exists()) {
             //! @todo
@@ -246,32 +274,30 @@
         }
     }
 
-        CX_DEBUG_EXIT_FUNCTION();
+    CX_DEBUG_EXIT_FUNCTION();
 }
 
 
-
 /*!
     Slot for handling image/video sharing.
  */
 void CxuiPostcaptureView::launchShare()
 {
     CX_DEBUG_ENTER_FUNCTION();
-    
+
     stopTimers();
-    stopViewfinder();
     releaseCamera();
-        
+
     QString filename = getCurrentFilename();
-    
-    QVariantList filelist;
-    filelist.append(QVariant(filename));
-    
+
+    QStringList filelist;
+    filelist.append(filename);
+
     ShareUi dialog;
-    dialog.init(filelist, true);
-    
+    dialog.send(filelist, true);
+
     showControls();
-    
+
     CX_DEBUG_EXIT_FUNCTION();
 }
 
@@ -284,16 +310,16 @@
 {
     CX_DEBUG_ENTER_FUNCTION();
 
-    // Cannot return to post-capture while stopping in video mode
+    // Cannot return to pre-capture while stopping in video mode
     if (mEngine->mode() != Cxe::VideoMode ||
         mEngine->videoCaptureControl().state() != CxeVideoCaptureControl::Stopping) {
         stopTimers();
+        // Re-enabling starting timers the next time we enter post capture view.
+        mTimersStarted = false;
+
         // Make sure engine prepares for new image/video if necessary
         mEngine->initMode(mEngine->mode());
 
-        // enables starting of timers in postcaptureview
-        mTimersStarted = false;
-
         // Switch to pre-capture view
         emit changeToPrecaptureView();
     }
@@ -414,7 +440,6 @@
 bool CxuiPostcaptureView::eventFilter(QObject *object, QEvent *event)
 {
     Q_UNUSED(object)
-
     bool eventWasConsumed = false;
 
     switch (event->type())
@@ -435,16 +460,13 @@
 }
 
 /*!
-* Paint event.
-* Used for performance tracing (snapshot latency).
+* Paint method.
+* Used for performance tracing purposes.
 */
-bool CxuiPostcaptureView::event(QEvent *event)
+void CxuiPostcaptureView::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
 {
-    bool processed(HbView::event(event));
-    if (event && event->type() == QEvent::Paint) {
         OstTrace0(camerax_performance, CXUIPOSTCAPTUREVIEW_SNAPSHOT_DRAW, "msg: e_CX_SHOT_TO_SNAPSHOT 0");
-    }
-    return processed;
+        QGraphicsWidget::paint(painter, option, widget);
 }
 
 // ---------------------------------------------------------------------------
@@ -454,8 +476,8 @@
 //
 void CxuiPostcaptureView::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
-
-    if (event->type() == QEvent::GraphicsSceneMousePress) {
+    //! @todo temporary workaround for title bar mouse event handling bug
+    if (event->type() == QEvent::GraphicsSceneMousePress && event->scenePos().y() > 70) {
         mPostcaptureTimer.stop();
         toggleControls();
         event->accept();
@@ -501,6 +523,9 @@
         // remove event filter to disable unnecessary actions
         QCoreApplication::instance()->removeEventFilter(this);
 
+        // Clear the snapshot.
+        mImageLabel->setIcon(HbIcon());
+
         stopTimers();
         // Hide controls to make sure title bar reacts to show()
         // when this view is reactivated.
@@ -590,13 +615,7 @@
 void CxuiPostcaptureView::launchNotSupportedNotification()
 {
     CX_DEBUG_ENTER_FUNCTION();
-
-    // Instantiate a popup
-    HbNotificationDialog note;
-    note.setTitle("Notification");
-    note.setText("Not supported yet");
-    note.exec();
-
+    HbNotificationDialog::launchDialog("Notification", "Not supported yet");
     CX_DEBUG_EXIT_FUNCTION();
 }
 
@@ -727,7 +746,13 @@
     mPostcaptureTimer.stop();
     mStopViewfinderTimer.stop();
 
-    mTimersStarted = false;
+    // Note: mTimersStarted is intentionally not reset here.
+    // Once the timers are stopped, they are not to be started again until
+    // we come from precapture view again.
+    // E.g. returning from background could otherwise restart the timers and
+    // if post-capture timer would be on, user could be confused: camera
+    // shows up with  post-capture view, after couple  seconds it disappears
+    // and we return to pre-capture view. That's not what we want.
 
     CX_DEBUG_EXIT_FUNCTION();
 }
--- a/camerauis/cameraxui/cxui/src/cxuiprecaptureview.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/src/cxuiprecaptureview.cpp	Thu May 13 21:30:19 2010 +0300
@@ -29,9 +29,11 @@
 #include <hbdialog.h>
 #include <hbdeviceprofile.h>
 #include <hbnotificationdialog.h>
+#include <hbmessagebox.h>
 #include <hbaction.h>
 #include <hbstyle.h>
 #include <hbframeitem.h>
+#include <hbwidget.h>
 
 #include "cxeengine.h"
 #include "cxeviewfindercontrol.h"
@@ -57,6 +59,7 @@
 #include "cxuiprecaptureviewTraces.h"
 #endif
 #include "cxuiserviceprovider.h"
+#include "cxuizoomslider.h"
 
 
 // CONSTANTS
@@ -93,11 +96,14 @@
     mSettingsDialogList(NULL),
     mKeyHandler(NULL),
     mQualityIcon(NULL),
+    mIndicators(NULL),
     mSettingsDialogHeading(NULL),
     mSliderSettingsDialog(NULL),
     mSliderSettingsDialogHeading(NULL),
     mSettingsSlider(NULL),
-    mSettingsInfo(NULL)
+    mSettingsInfo(NULL),
+    mSettingsDialogOkAction(NULL),
+    mSliderSettingsDialogOkAction(NULL)
 {
     CX_DEBUG_ENTER_FUNCTION();
     mDisplayHandler = new CxuiDisplayPropertyHandler();
@@ -249,6 +255,10 @@
         mHideControlsTimeout.stop();
     }
     hideToolbar();
+
+    // show indicators when controls are hidden
+    showIndicators();
+
     // give the keyboard focus back to the view
     // for the view to receive key events
     setFocus();
@@ -331,6 +341,30 @@
 }
 
 // ---------------------------------------------------------------------------
+// CxuiPrecaptureView::hideIndicators
+//
+// ---------------------------------------------------------------------------
+//
+void CxuiPrecaptureView::hideIndicators()
+{
+    if (mIndicators) {
+        mIndicators->hide();
+    }
+}
+
+// ---------------------------------------------------------------------------
+// CxuiPrecaptureView::showIndicators
+//
+// ---------------------------------------------------------------------------
+//
+void CxuiPrecaptureView::showIndicators()
+{
+    if (mIndicators) {
+        mIndicators->show();
+    }
+}
+
+// ---------------------------------------------------------------------------
 // CxuiPrecaptureView::showControls
 //
 // ---------------------------------------------------------------------------
@@ -348,6 +382,10 @@
             showZoom();
             // show titlepane
             showItems(Hb::AllItems);
+
+            // hide indicators when controls are shown
+            hideIndicators();
+
             mHideControlsTimeout.start();
             mControlsVisible = true;
         }
@@ -430,7 +468,8 @@
 //
 void CxuiPrecaptureView::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
-    if (event->type() == QEvent::GraphicsSceneMousePress) {
+    //! @todo temporary workaround for title bar mouse event handling bug
+    if (event->type() == QEvent::GraphicsSceneMousePress && event->scenePos().y() > 70) {
         toggleControls();
         event->accept();
     }
@@ -684,6 +723,9 @@
                                     documentLoader->findWidget(SETTINGS_DIALOG_CONTENT_WIDGET));
     CX_ASSERT_ALWAYS(mSettingsDialogList);
 
+    QObject *object = documentLoader->findObject(SETTINGS_DIALOG_OK_ACTION);
+    mSettingsDialogOkAction = qobject_cast<HbAction *>(object);
+    CX_DEBUG_ASSERT(mSettingsDialogOkAction);
 
     CX_DEBUG_EXIT_FUNCTION();
 
@@ -737,13 +779,12 @@
             // so we can easily decide if we show grid again or not.
             mSettingsDialog->setStarterAction(qobject_cast<HbAction *>(action));
 
-            HbAction *okAction = mSettingsDialog->primaryAction();
-            if (okAction) {
-                // disconnect primary action from dialog so that dialog won't be closed
+            if (mSettingsDialogOkAction) {
+                // disconnect ok action from dialog so that dialog won't be closed
                 // automatically when action is triggered. handleSelectionAccepted
                 // is called instead
-                okAction->disconnect(mSettingsDialog);
-                connect(okAction, SIGNAL(triggered()), mSettingsDialogList, SLOT(handleSelectionAccepted()));
+                mSettingsDialogOkAction->disconnect(mSettingsDialog);
+                connect(mSettingsDialogOkAction, SIGNAL(triggered()), mSettingsDialogList, SLOT(handleSelectionAccepted()));
 
                 // Close the dialog when new setting value is committed
                 connect(mSettingsDialogList, SIGNAL(selectionCommitted()), mSettingsDialog, SLOT(close()));
@@ -792,6 +833,9 @@
                                     documentLoader->findWidget(SETTINGS_SLIDER_DIALOG_CONTENT_WIDGET));
     CX_ASSERT_ALWAYS(mSettingsSlider);
 
+    QObject *object = documentLoader->findObject(SETTINGS_DIALOG_OK_ACTION);
+    mSliderSettingsDialogOkAction = qobject_cast<HbAction *>(object);
+    CX_DEBUG_ASSERT(mSliderSettingsDialogOkAction);
 
     CX_DEBUG_EXIT_FUNCTION();
 
@@ -843,13 +887,12 @@
             // so we can easily decide if we show grid again or not.
             mSliderSettingsDialog->setStarterAction(qobject_cast<HbAction *>(action));
 
-            HbAction *okAction = mSliderSettingsDialog->primaryAction();
-            if (okAction) {
-                // disconnect primary action from dialog so that dialog won't be closed
+            if (mSliderSettingsDialogOkAction) {
+                // disconnect ok action from dialog so that dialog won't be closed
                 // automatically when action is triggered. handleSelectionAccepted
                 // is called instead
-                okAction->disconnect(mSliderSettingsDialog);
-                connect(okAction, SIGNAL(triggered()), mSettingsSlider, SLOT(handleSelectionAccepted()));
+                mSliderSettingsDialogOkAction->disconnect(mSliderSettingsDialog);
+                connect(mSliderSettingsDialogOkAction, SIGNAL(triggered()), mSettingsSlider, SLOT(handleSelectionAccepted()));
 
                 // Close the dialog when new setting value is committed
                 connect(mSettingsSlider, SIGNAL(selectionCommitted()), mSliderSettingsDialog, SLOT(close()));
@@ -891,13 +934,17 @@
 void CxuiPrecaptureView::launchNotSupportedNotification()
 {
     CX_DEBUG_ENTER_FUNCTION();
+    HbNotificationDialog::launchDialog("Notification", "Not supported yet");
+    CX_DEBUG_EXIT_FUNCTION();
+}
 
-    // Instantiate a popup
-    HbNotificationDialog note;
-    note.setTitle("Notification");
-    note.setText("Not supported yet");
-    note.exec();
-
+/*!
+* Show "Disk full" notification.
+*/
+void CxuiPrecaptureView::launchDiskFullNotification()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    HbMessageBox::warning(hbTrId("txt_cam_info_memory_full"));
     CX_DEBUG_EXIT_FUNCTION();
 }
 
@@ -967,16 +1014,18 @@
 * Adding zoom buttons to the slider
 * \param slider Pointer to the slider object, where the buttons will be added
 */
-void CxuiPrecaptureView::addIncreaseDecreaseButtons(HbSlider* slider)
+void CxuiPrecaptureView::addIncreaseDecreaseButtons(CxuiZoomSlider *slider)
 {
     // get current slider elements
-    QList<HbSlider::SliderElement> elements = slider->elements();
+    QList<QVariant> elements = slider->sliderElements();
+
     // add increase and decrease elements to the slider
     elements << HbSlider::IncreaseElement << HbSlider::DecreaseElement;
-    slider->setElements(elements);
+    slider->setSliderElements(elements);
+
     // set icons for the increase and decrease element
-    slider->setIcon(HbSlider::DecreaseElement , HbIcon("qtg_mono_minus"));
-    slider->setIcon(HbSlider::IncreaseElement , HbIcon("qtg_mono_plus"));
+    slider->setElementIcon(HbSlider::DecreaseElement , HbIcon("qtg_mono_minus"));
+    slider->setElementIcon(HbSlider::IncreaseElement , HbIcon("qtg_mono_plus"));
 }
 
 
@@ -990,15 +1039,17 @@
                                                        const QString &graphicName,
                                                        HbFrameDrawer::FrameType frameType)
 {
-    HbFrameDrawer *drawer = new HbFrameDrawer(graphicName, frameType);
+    if (widget) {
+        HbFrameDrawer *drawer = new HbFrameDrawer(graphicName, frameType);
 
-    if (drawer && widget) {
-        HbFrameItem *backgroundItem = new HbFrameItem(drawer, widget);
-        if (backgroundItem) {
-            // set item to fill the whole widget
-            backgroundItem->setGeometry(QRectF(QPointF(0, 0), widget->size()));
-            backgroundItem->setZValue(0);
-            widget->setBackgroundItem(backgroundItem);
+        if (drawer) {
+            HbFrameItem *backgroundItem = new HbFrameItem(drawer, widget);
+            if (backgroundItem) {
+                // set item to fill the whole widget
+                backgroundItem->setGeometry(QRectF(QPointF(0, 0), widget->size()));
+                backgroundItem->setZValue(0);
+                widget->setBackgroundItem(backgroundItem);
+            }
         }
     }
 }
@@ -1034,6 +1085,7 @@
 */
 QString CxuiPrecaptureView::getSettingItemIcon(const QString &key, QVariant value)
 {
+    CX_DEBUG_ENTER_FUNCTION();
     CxUiSettings::RadioButtonListParams data;
     QString icon = "";
     if (mSettingsInfo && mSettingsInfo->getSettingsContent(key, data)) {
@@ -1045,6 +1097,9 @@
             }
         }
     }
+
+    CX_DEBUG((("Setting icon name [%s]"), icon.toAscii().constData()));
+    CX_DEBUG_EXIT_FUNCTION();
     return icon;
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/src/cxuiscenemodeview.cpp	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,350 @@
+/*
+* 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 <hbframeitem.h>
+
+#include "cxenamespace.h"
+#include "cxesettings.h"
+#include "cxuiscenemodeview.h"
+#include "cxuienums.h"
+#include "cxutils.h"
+#include "cxuicapturekeyhandler.h"
+#include "cxuisettingsinfo.h"
+#include "cxeviewfindercontrol.h"
+#include "cxecameradevicecontrol.h"
+#include "cxuidocumentloader.h"
+
+using namespace Cxe;
+using namespace CxUi;
+using namespace CxUiLayout;
+using namespace CxUiSettings;
+using namespace CxeSettingIds;
+
+const int CXUI_SCENES_TRANSITION_TIME = 350; // 350 milliseconds
+const int CXUI_SCENES_CAMERA_TIMEOUT = 60000; // 60 seconds for the camera hw release timeout
+const QString CXUI_SCENES_AUTOMATIC_IMAGE=":/camerax/scene_automatic.png";
+const QString CXUI_SCENES_LANDSCAPE_IMAGE=":/camerax/scene_landscape.png";
+const QString CXUI_SCENES_CLOSEUP_IMAGE=":/camerax/scene_close-up.png";
+const QString CXUI_SCENES_PORTRAIT_IMAGE=":/camerax/scene_portrait.png";
+const QString CXUI_SCENES_SPORT_IMAGE=":/camerax/scene_sport.png";
+const QString CXUI_SCENES_NIGHT_IMAGE=":/camerax/scene_night.png";
+const QString CXUI_SCENES_NIGHT_PORTRAIT_IMAGE=":/camerax/scene_nightportrait.png";
+const QString CXUI_SCENES_LOW_LIGHT_IMAGE=":/camerax/scene_lowlight.png";
+
+
+/*!
+* Constructor
+*/
+CxuiSceneModeView::CxuiSceneModeView(QGraphicsItem *parent) :
+    HbView(parent),
+    mMainWindow(NULL),
+    mSettingsInfo(NULL),
+    mEngine(NULL),
+    mDocumentLoader(NULL),
+    mCaptureKeyHandler(NULL),
+	mScenesBackground(NULL)
+{
+    CX_DEBUG_IN_FUNCTION();
+}
+
+/*!
+* Destructor
+*/
+CxuiSceneModeView::~CxuiSceneModeView()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Construct-method handles initialisation tasks for this class. Needs to be called
+* before the instance of this class is used.
+* @param mainwindow
+* @param engine
+* @param documentLoader
+* @param keyHandler
+*/
+void CxuiSceneModeView::construct(HbMainWindow *mainwindow,
+                               CxeEngine *engine,
+                               CxuiDocumentLoader *documentLoader,
+                               CxuiCaptureKeyHandler *keyHandler)
+{
+    CX_DEBUG_ENTER_FUNCTION();
+
+    mMainWindow = mainwindow;
+    mDocumentLoader = documentLoader;
+    mCaptureKeyHandler = keyHandler;
+    mEngine = engine;
+    mSettingsInfo = new CxuiSettingsInfo(mEngine);
+    setContentFullScreen(true);
+    loadDefaultWidgets();
+
+    mCameraReleaseTimer.setInterval(CXUI_SCENES_CAMERA_TIMEOUT);    
+    connect(&mCameraReleaseTimer, SIGNAL(timeout()), this, SLOT(releaseCameraHw()), Qt::UniqueConnection);
+
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Load widgets from DocML.
+*/
+void CxuiSceneModeView::loadDefaultWidgets()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    CX_DEBUG_ASSERT(mDocumentLoader);
+
+    QGraphicsWidget *widget = NULL;
+
+    widget = mDocumentLoader->findWidget(SCENE_VIEW_CONTAINER);
+    mScenesContainer = qobject_cast<HbWidget *> (widget);
+
+    //Now let's retreive the pointer to icon widget
+    widget = mDocumentLoader->findWidget(SCENE_VIEW_BG_IMAGE);
+    mScenesBackground = qobject_cast<HbLabel *> (widget);
+
+    widget = mDocumentLoader->findWidget(SCENE_VIEW_BG_IMAGE2);
+    mScenesBackground2 = qobject_cast<HbLabel *> (widget);
+
+    //Assuming that the automatic scene mode is always the default one
+    CX_DEBUG(("CxuiSceneModeView::loadDefaultWidgets -> Now setting default image"));
+    mScenesBackground->setIcon(HbIcon(CXUI_SCENES_AUTOMATIC_IMAGE));
+
+    widget = mDocumentLoader->findWidget(SCENE_VIEW_RADIOBUTTONS);
+    mScenesList = qobject_cast<CxuiSettingRadioButtonList *> (widget);
+
+    mTransitionAnimation = new QPropertyAnimation(mScenesBackground2, "opacity");
+    mTransitionAnimation->setDuration(CXUI_SCENES_TRANSITION_TIME);
+
+    createWidgetBackgroundGraphic(mScenesContainer, TRANSPARENT_BACKGROUND_GRAPHIC);
+
+    connectSignals();
+
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Helper function to connect signals needed in this class.
+*/
+void CxuiSceneModeView::connectSignals()
+{
+    connect(mScenesList, SIGNAL(itemSelected(int)), this, SLOT(handleSceneRadiobuttonPress(int)));
+    connect(mTransitionAnimation, SIGNAL(finished()), this, SLOT(finishScenesTransition()));
+}
+
+/*!
+* Function can be used to create a graphics item and setting it as a background
+* item for HbWidget. graphicName refers to system wide graphic name. Given graphic
+* can consist of one, three or nine pieces. Nine piece graphics are used by default.
+* See HbFrameDrawer documentation for graphic naming.
+*/
+void CxuiSceneModeView::createWidgetBackgroundGraphic(HbWidget *widget,
+                                                       const QString &graphicName,
+                                                       HbFrameDrawer::FrameType frameType)
+{
+    if (widget) {
+        HbFrameDrawer *drawer = new HbFrameDrawer(graphicName, frameType);
+
+        if (drawer) {
+            HbFrameItem *backgroundItem = new HbFrameItem(drawer, widget);
+            if (backgroundItem) {
+                // set item to fill the whole widget
+                backgroundItem->setGeometry(QRectF(QPointF(0, 0), widget->size()));
+                backgroundItem->setZValue(0);
+                widget->setBackgroundItem(backgroundItem);
+            }
+        }
+    }
+}
+
+/*!
+* This public method assumes that the view is already properly constructed
+*/
+void CxuiSceneModeView::loadBackgroundImages()
+{
+     CX_DEBUG_ENTER_FUNCTION();
+    RadioButtonListParams data;
+    if (mEngine->mode() == Cxe::ImageMode) {
+        mSettingsInfo->getSettingsContent(CxeSettingIds::IMAGE_SCENE, data);
+    } else {
+        mSettingsInfo->getSettingsContent(CxeSettingIds::VIDEO_SCENE, data);
+    }
+    mSettingPairList = data.mSettingPairList;
+    mScenesList->init(&data);
+
+    if (mScenesBackground) {
+        QString sceneId;
+        mEngine->settings().get(data.mSettingId, sceneId);
+        mScenesBackground->setIcon(HbIcon(backgroundForScene(sceneId)));
+    } else {
+        //First time displaying a list
+        //Assuming that the automatic scene mode is always the default one and is on top of the list
+        mScenesList->setSelected(0);
+    }
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Handle selecting value in scene list.
+*/
+void CxuiSceneModeView::handleSceneRadiobuttonPress(int index)
+{
+    CX_DEBUG_ENTER_FUNCTION();
+
+    CxUiSettings::SettingItem item = mSettingPairList.at(index);
+    QString sceneId = item.mValue.toString();
+    mScenesBackground2->setIcon(HbIcon(backgroundForScene(sceneId)));
+    startBackgroundTransition();
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+
+/*!
+* Helper method for getting the background graphic name
+* for each of the scenes.
+*/
+QString CxuiSceneModeView::backgroundForScene(const QString& sceneId)
+{
+    //!@todo: This mapping should be added to the setting xml.
+    if (sceneId == CxeSettingIds::IMAGE_SCENE_AUTO) {
+        return CXUI_SCENES_AUTOMATIC_IMAGE;
+    } else if (sceneId == CxeSettingIds::IMAGE_SCENE_PORTRAIT) {
+        return CXUI_SCENES_PORTRAIT_IMAGE;
+    } else if (sceneId == CxeSettingIds::IMAGE_SCENE_SCENERY) {
+        return CXUI_SCENES_LANDSCAPE_IMAGE;
+    } else if (sceneId == CxeSettingIds::IMAGE_SCENE_MACRO) {
+        return CXUI_SCENES_CLOSEUP_IMAGE;
+    } else if (sceneId == CxeSettingIds::IMAGE_SCENE_SPORTS) {
+        return CXUI_SCENES_SPORT_IMAGE;
+    } else if (sceneId == CxeSettingIds::IMAGE_SCENE_NIGHT) {
+        return CXUI_SCENES_NIGHT_IMAGE;
+    } else if (sceneId == CxeSettingIds::IMAGE_SCENE_NIGHTPORTRAIT) {
+        return CXUI_SCENES_NIGHT_PORTRAIT_IMAGE;
+    } else if (sceneId == CxeSettingIds::VIDEO_SCENE_AUTO) {
+        return CXUI_SCENES_AUTOMATIC_IMAGE;
+    } else if (sceneId == CxeSettingIds::VIDEO_SCENE_LOWLIGHT) {
+        return CXUI_SCENES_LOW_LIGHT_IMAGE;
+    } else if (sceneId == CxeSettingIds::VIDEO_SCENE_NIGHT) {
+        return CXUI_SCENES_NIGHT_IMAGE;
+    } else {
+        return "";
+    }
+
+}
+
+/*!
+* Start animation for changing the scene background graphic.
+*/
+void CxuiSceneModeView::startBackgroundTransition()
+{
+    mTransitionAnimation->setStartValue(0.0);
+    mTransitionAnimation->setEndValue(1.0);
+    mTransitionAnimation->start();
+
+}
+
+/*!
+* Handle scene background graphic animation finishing.
+*/
+void CxuiSceneModeView::finishScenesTransition()
+{
+    mScenesBackground->setIcon(mScenesBackground2->icon());
+    mScenesBackground2->setOpacity(0);
+    mScenesBackground2->setIcon(HbIcon());
+}
+
+/*!
+* Handle press of ok button.
+*/
+void CxuiSceneModeView::handleOkButtonPress()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    mScenesList->handleSelectionAccepted();
+    closeView();
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Handle press of cancel button.
+*/
+void CxuiSceneModeView::handleCancelButtonPress()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    closeView();
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* This view is about to be shown.
+* Update the view to match currently selected scene.
+*/
+void CxuiSceneModeView::showEvent(QShowEvent *event)
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    mScenesList->scrollTo(mScenesList->currentIndex(), HbAbstractItemView::PositionAtTop);
+
+    mEngine->viewfinderControl().stop();
+    mCameraReleaseTimer.start();
+    QGraphicsWidget::showEvent(event);
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Slot to handle capture key full press.
+*/
+void CxuiSceneModeView::handleCaptureKeyPressed()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    closeView();
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Slot to handle capture key half press / autofocus key press.
+*/
+void CxuiSceneModeView::handleAutofocusKeyPressed()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    closeView();
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Closing the view and reactivating camera hw if needed
+*/
+void CxuiSceneModeView::closeView()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    mScenesList->handleClose();
+    mScenesBackground->setIcon(HbIcon());
+    // Make sure engine prepares for new image/video if necessary
+    mEngine->initMode(mEngine->mode());
+    emit viewCloseEvent();
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Slot to handle camera hw release timeout
+*/
+void CxuiSceneModeView::releaseCameraHw()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    mCameraReleaseTimer.stop();
+    mEngine->cameraDeviceControl().release();
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+// end of file
+
--- a/camerauis/cameraxui/cxui/src/cxuiselftimer.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/src/cxuiselftimer.cpp	Thu May 13 21:30:19 2010 +0300
@@ -45,8 +45,7 @@
    mCounter(0),
    mTimer(this),
    mOldPostCaptureTimeOut(UNKNOWN),
-   mIndicatorContainer(NULL),
-   mButtonContainer(NULL),
+   mWidgetContainer(NULL),
    mTimerLabel(NULL),
    mCancelButton(NULL),
    mStartButton(NULL),
@@ -78,12 +77,8 @@
         QGraphicsWidget *widget = NULL;
         
         widget = documentLoader->findWidget(STILL_PRE_CAPTURE_SELFTIMER_CONTAINER);
-        mIndicatorContainer = qobject_cast<HbWidget *>(widget);
-        CX_DEBUG_ASSERT(mIndicatorContainer);
-
-        widget = documentLoader->findWidget(STILL_PRE_CAPTURE_SELFTIMER_BUTTON_CONTAINER);
-        mButtonContainer = qobject_cast<HbWidget *>(widget);
-        CX_DEBUG_ASSERT(mButtonContainer);
+        mWidgetContainer = qobject_cast<HbWidget *>(widget);
+        CX_DEBUG_ASSERT(mWidgetContainer);
 
         widget = documentLoader->findWidget(STILL_PRE_CAPTURE_SELFTIMER_COUNTER);
         mTimerLabel = qobject_cast<HbLabel *>(widget);
@@ -309,13 +304,10 @@
  */
 void CxuiSelfTimer::showWidgets()
 {
-    if (mIndicatorContainer){
-        mIndicatorContainer->show();
+    if (mWidgetContainer){
+        mWidgetContainer->show();
     }
 
-    if (mButtonContainer){
-        mButtonContainer->show();
-    }
 
 }
 
@@ -324,12 +316,10 @@
  */
 void CxuiSelfTimer::hideWidgets()
 {
-    if (mIndicatorContainer){
-        mIndicatorContainer->hide();
+    if (mWidgetContainer){
+        mWidgetContainer->hide();
     }
 
-    if (mButtonContainer){
-        mButtonContainer->hide();
-    }
+
 
 }
--- a/camerauis/cameraxui/cxui/src/cxuiserviceprovider.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/src/cxuiserviceprovider.cpp	Thu May 13 21:30:19 2010 +0300
@@ -28,14 +28,15 @@
 
 CxuiServiceProvider* CxuiServiceProvider::mInstance = NULL;
 
-
-const QString CXUI_SERVICE_NAME = "Camera.com.nokia.ICaptureNew";
+// TODO: get these constants from header <xqaiwdecl.h>
+// will be released wk16
+const QString CXUI_SERVICE_NAME = "cxui.com.nokia.symbian.ICameraCapture";
 
-const QString CAMERA_INDEX = "camera_index";
-const QString QUALITY = "quality";
-const QString ALLOW_MODE_SWITCH = "allow_mode_switch";
-const QString ALLOW_CAMERA_SWITCH = "allow_camera_switch";
-const QString ALLOW_QUALITY_CHANGE = "allow_quality_change";
+const QString CAMERA_INDEX = "CameraIndex";
+const QString QUALITY = "Quality";
+const QString ALLOW_MODE_SWITCH = "AllowModeSwitch";
+const QString ALLOW_CAMERA_SWITCH = "AllowCameraSwitch";
+const QString ALLOW_QUALITY_CHANGE = "AllowQualityChange";
 
 CxuiServiceProvider::CxuiServiceProvider(CxeEngine *engine)
 :
--- a/camerauis/cameraxui/cxui/src/cxuisettingbutton.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,243 +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 <QGraphicsSceneMouseEvent>
-#include <hbdeviceprofile.h> //HbDeviceProfile
-
-#include <hbeffect.h>
-#include <hbdialog.h>
-
-#include "cxuisettingbutton.h"
-#include "cxutils.h"
-#include "cxuidocumentloader.h"
-#include "cxeengine.h"
-#include "cxesettings.h"
-
-
-CxuiSettingButton::CxuiSettingButton(QGraphicsItem *parent, CxeEngine *engine)
-: HbPushButton(parent), mSettingId(), mSettingValue(0), mSettingPopupXml(), mEngine(engine)
-{
-    connect(this, SIGNAL(pressed()), this, SLOT(handleClicked()));
-
-}
-
-CxuiSettingButton::~CxuiSettingButton()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-void CxuiSettingButton::updateIcon(const QString& key, QVariant newValue)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    // we're only interested in the setting changes that match our id
-    if (key == mSettingId){
-        int value = newValue.toInt();
-        // so we wont overindex
-        if (value < mIcons.size()){
-            // for this to work the icons need to be in the correct order in the XML
-            QString newIcon = mIcons.at(value);
-
-            // to make sure that for some reason there isn't an empty string
-            if (!newIcon.isEmpty()){
-                CX_DEBUG(("setting icon to: %s",newIcon.toAscii().constData()));
-                setIcon(HbIcon(newIcon));
-                setBackground(HbIcon(newIcon));
-            }else{
-                CX_DEBUG(("empty string"));
-            }
-
-        }else{
-            CX_DEBUG((("index %d is out of bounds"), value));
-        }
-
-
-    }
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-QString CxuiSettingButton::settingId() const
-{
-    return mSettingId;
-}
-
-void CxuiSettingButton::setSettingId(const QString &id)
-{
-    mSettingId = id;
-}
-
-QString CxuiSettingButton::scenemodeId() const
-{
-    return mScenemode;
-}
-
-void CxuiSettingButton::setScenemodeId(const QString &scenemode)
-{
-    mScenemode = scenemode;
-}
-
-
-int CxuiSettingButton::settingValue() const
-{
-    return mSettingValue;
-}
-
-void CxuiSettingButton::setSettingValue(int value)
-{
-    mSettingValue = value;
-}
-
-void CxuiSettingButton::setIconList(const QString &iconList)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    mIconList = iconList;
-    CX_DEBUG(("%s", mIconList.toAscii().data()));
-    mIcons = mIconList.split("+");
-    CX_DEBUG((("%d"), mIcons.size()));
-
-    // we connect the signal to update the button
-    // this is done here so that only those buttons that have an iconlist are connected
-    // to the signal
-    QObject::connect(&(mEngine->settings()), SIGNAL(settingValueChanged(const QString&,QVariant)),
-                this, SLOT(updateIcon(const QString&, QVariant)));
-
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-QString CxuiSettingButton::iconList() const
-{
-    return mIconList;
-}
-
-QString CxuiSettingButton::settingPopupXml() const
-{
-    return mSettingPopupXml;
-}
-
-void CxuiSettingButton::setSettingPopupXml(const QString &popupXml)
-{
-    mSettingPopupXml = popupXml;
-}
-
-void CxuiSettingButton::handleClicked()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-
-    if (!mSettingPopupXml.isEmpty()) {
-        // If a settings popup XML reference is given, launch popup
-
-        CX_DEBUG(("CxuiSettingButton::handleClicked() - launching popup %s", mSettingPopupXml.toAscii().constData()));
-
-        CxuiDocumentLoader* documentLoader = new CxuiDocumentLoader(mEngine);
-        bool ok = false;
-
-        // Use document loader to create popup
-        QObjectList objects = documentLoader->load(mSettingPopupXml, &ok);
-
-        CX_DEBUG(("load ok=%d", ok));
-
-        // Set parameters for all loaded popups (almost always only one match, though)
-        foreach(QObject* o, objects) {
-            HbDialog* popup = qobject_cast<HbDialog*>(o);
-            if (popup) {
-                popup->setTimeout(HbDialog::NoTimeout);
-                popup->setBackgroundFaded(false);
-                popup->setAttribute(Qt::WA_DeleteOnClose, true);
-
-                // set the popup place to be at the bottom of the screen
-                QRectF popupRect = popup->boundingRect();
-                QSizeF screenSize = HbDeviceProfile::profile(popup).logicalSize();
-                QRectF screenRect = QRectF(QPointF(0,0), screenSize);
-
-                popupRect.moveBottom(screenRect.bottom());
-                popup->setPos(popupRect.topLeft());
-
-                popup->show();
-
-            }
-        }
-
-        delete documentLoader;
-        documentLoader = NULL;
-        TInt trash;
-        TInt heapSize;
-        User::Heap().Compress();
-        heapSize = User::Available( trash  );
-        RDebug::Print( _L( "showHeapSize <=> heapSize: %d" ),heapSize);
-
-    } else {
-        // Set the setting value directly to the engine
-        CxeSettings *settings = NULL;
-        if (mEngine) {
-            settings = &mEngine->settings();
-        }
-
-        CX_DEBUG_ASSERT(settings);
-        CX_DEBUG_ASSERT(!mSettingId.isEmpty());
-
-        if (settings && !mSettingId.isEmpty()) {
-            CX_DEBUG(("CxuiSettingButton::handleClicked() - setting %s to %d", mSettingId.toAscii().constData(), mSettingValue));
-            settings->set(mSettingId, mSettingValue);
-        }
-    }
-    emit clickHandled();
-
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-void CxuiSettingButton::setSetting()
-{
-    CxeSettings *settings = NULL;
-        if (mEngine) {
-            settings = &mEngine->settings();
-        }
-
-        CX_DEBUG_ASSERT(settings);
-        CX_DEBUG_ASSERT(!mSettingId.isEmpty());
-
-        if (settings && !mSettingId.isEmpty()) {
-            CX_DEBUG(("CxuiSettingButton::handleClicked() - setting %s to %d", mSettingId.toAscii().constData(), mSettingValue));
-            settings->set(mSettingId, mSettingValue);
-        }
-
-}
-
-
-
-/*
-void CxuiSettingButton::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    CX_DEBUG(("CxuiSettingButton::mouseMoveEvent() -  %s to %d", mSettingId.toAscii().constData(), mSettingValue));
-    QPointF pos = event->pos();
-    QPoint pos2 = pos.toPoint();
-    CX_DEBUG(("itemPos: %d %d", pos2.x(), pos2.y()));
-    if (!hitButton(pos)){
-        CX_DEBUG(("Left the button area"));
-        this->clearFocus();
-
-    }
-
-
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-
-*/
--- a/camerauis/cameraxui/cxui/src/cxuisettingbuttoncontainer.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +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 <QGraphicsSceneMouseEvent>
-#include <QCoreApplication>
-
-#include <hbfeedbackmanager.h>
-#include "cxuisettingbutton.h"
-#include "cxuisettingbuttoncontainer.h"
-#include "cxutils.h"
-
-
-CxuiSettingButtonContainer::CxuiSettingButtonContainer(QGraphicsItem *parent)
-: HbWidget(parent), mListCreated(false), mPressedDownButton(NULL), mPreviouslyPressedDownButton(NULL)
-{
-
-}
-
-void CxuiSettingButtonContainer::handleButtonPress()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    grabMouse();
-
-    if (!mListCreated){
-        QList<QGraphicsItem*> buttons = this->childItems();
-        CxuiSettingButton *button;
-        foreach(QGraphicsItem *item, buttons){
-            button = static_cast<CxuiSettingButton*>(item);
-            mButtons.append(button);
-        }
-        mListCreated = true;
-    }
-
-
-    // find the pressed item
-    foreach (CxuiSettingButton* button , mButtons) {
-
-        if (button->isDown()) {
-            mPressedDownButton = button;
-            break;
-        }
-    }
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-void CxuiSettingButtonContainer::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
-{
-
-    if (boundingRect().contains(event->pos())) {
-        // moving inside the tool bar
-        if (!mPressedDownButton || !mPressedDownButton->geometry().contains(event->pos())) {
-            if (mPressedDownButton) {
-                // lift it up and try to find some other button
-                mPressedDownButton->setDown(false);
-                mPreviouslyPressedDownButton = mPressedDownButton;
-                mPressedDownButton = 0;
-            }
-
-            // Find the pressed button
-            foreach (CxuiSettingButton* button, mButtons) {
-                if (button->geometry().contains(event->pos())) {
-                    mPressedDownButton = button;
-                    button->setDown(true);
-                    button->setSetting();
-                    HbFeedbackManager* feedback = HbFeedbackManager::instance();
-                    CX_ASSERT_ALWAYS(feedback != NULL);
-                    feedback->triggered(button, Hb::InstantDraggedOver);
-
-                    break;
-                }
-            }
-        }
-    } else {
-        // moving outside the tool bar
-
-        // if a button is pressed down, lift it.
-        if (mPressedDownButton) {
-            mPressedDownButton->setDown(false);
-            mPressedDownButton = 0;
-            mPreviouslyPressedDownButton = mPressedDownButton;
-        }
-    }
-}
-
-void CxuiSettingButtonContainer::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
-{
-    Q_UNUSED(event);
-    ungrabMouse();
-
-    if (mPressedDownButton
-        && !mPreviouslyPressedDownButton) {
-        // Convert event's scene position to item's coordinate system.
-        event->setPos(mPressedDownButton->mapFromScene(event->scenePos()));
-        QCoreApplication::sendEvent(mPressedDownButton, event);
-        mPressedDownButton = 0;
-        emit buttonReleased();
-    } else if (mPressedDownButton) {
-        mPressedDownButton->setDown(false);
-        emit buttonReleased();
-    } else
-    mPreviouslyPressedDownButton = 0;
-}
-
-
--- a/camerauis/cameraxui/cxui/src/cxuisettingdialog.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/src/cxuisettingdialog.cpp	Thu May 13 21:30:19 2010 +0300
@@ -17,7 +17,7 @@
 
 #include <HbAction>
 #include "cxutils.h"
-#include "CxuiSettingDialog.h"
+#include "cxuisettingdialog.h"
 
 CxuiSettingDialog::CxuiSettingDialog(QGraphicsItem *parent)
     : HbDialog(parent),
--- a/camerauis/cameraxui/cxui/src/cxuisettingradiobuttonlist.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/src/cxuisettingradiobuttonlist.cpp	Thu May 13 21:30:19 2010 +0300
@@ -53,6 +53,7 @@
 
         CxUiSettings::SettingItem setting;
         foreach (setting, data->mSettingPairList) {
+            CX_DEBUG(("CxuiSettingRadioButtonList - appending setting value: %s", setting.mValue.toString().toAscii().data()));
             settingStrings.append(setting.mItem); // setting string
             mSettingValues.append(setting.mValue); // engine value for setting
         }
@@ -121,11 +122,13 @@
 
     QString value;
     int err = mEngine->settings().get(mSettingId, value);
+    CX_DEBUG(("CxuiSettingRadioButtonList - original value: [%s]", value.toAscii().data()));
 
     int index = 0;
 
     if (err == CxeError::None) {
         index = mSettingValues.indexOf(QVariant(value));
+        CX_DEBUG(("CxuiSettingRadioButtonList - got original index of: %d", index));
     }
 
     mOriginalIndex = index;
@@ -180,7 +183,7 @@
 
     if (!mSettingId.isEmpty() && !mSettingValues.isEmpty()) {
         QVariant value = mSettingValues.at(index);
-        if (value.canConvert<int>()) {
+        if (value.type() == QVariant::Int) {
             CX_DEBUG(("index:%d value:%d", index, value.toInt()));
 
             // Don't set the value again, if it is the current value.
@@ -193,9 +196,17 @@
             }
             // inform interested clients about value changed event
             emit valueSelected(value.toInt());
-        } else if(value.canConvert<QString>()) {
+
+        } else if (value.type() == QVariant::String) {
             CX_DEBUG(("index:%d value:[%s]", index, value.toString().toAscii().constData()));
-            mEngine->settings().set(mSettingId, value.toString());
+
+            QString current;
+            CxeError::Id status(mEngine->settings().get(mSettingId, current));
+            CX_DEBUG(("settings model value:[%s]", current.toAscii().constData()));
+
+            if (status != CxeError::None || current != value.toString()) {
+                mEngine->settings().set(mSettingId, value.toString());
+            }
         }
     }
 
--- a/camerauis/cameraxui/cxui/src/cxuisettingsinfo.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/src/cxuisettingsinfo.cpp	Thu May 13 21:30:19 2010 +0300
@@ -71,7 +71,8 @@
         mHeadingIcon = other.mHeadingIcon;
         mSettingStrings = other.mSettingStrings;
         mRange = other.mRange;
-        mStep = other.mStep;
+        mMinorStep = other.mMinorStep;
+        mMajorStep = other.mMajorStep;
         }
     CX_DEBUG_EXIT_FUNCTION();
     return *this;
@@ -209,14 +210,12 @@
 
     // get the localized possible strings for each image quality setting
     QString vga = hbTrId("txt_cam_dblist_vga");
-    QString normal = QString("%L1 Mpix");
-    QString imagesLeft = QString("%L1 images left");
-    QString widescreen = QString("%L1 Mpix widescreen");
+    QString normal = hbTrId("txt_cam_dblist_ln_mpix");
+    QString imagesLeft = hbTrId("txt_cam_dblist_hd_720p_val_ln_images_left");
+    QString widescreen = hbTrId("txt_cam_dblist_ln_mpix_widescreen");
 
     foreach(CxeImageDetails quality, list) {
         // mapping the right value for each quality
-        QString index2String;
-        index2String.setNum(index);
 
         QString settingString;
         QString qualityIcon = "";
@@ -245,12 +244,12 @@
         } else if (quality.mMpxCount == "1.2") {
             qualityIcon = "qtg_mono_1_3mp";
         } else if (quality.mMpxCount == "0.3") {
-            qualityIcon = "qtg_mono_qcif"; //correct icon missing
+            qualityIcon = "qtg_mono_0_3mp";
         }
 
         SettingItem setting;
         setting.mItem = settingString;
-        setting.mValue = qVariantFromValue(index2String);
+        setting.mValue = index;
         setting.mIcon = qualityIcon;
         settings.mSettingPairList.append(setting);
 
@@ -277,7 +276,7 @@
     int index = 0;
 
     // get the localized possible strings for each video quality setting
-    QString timeleft = QString("%L1 recording time left");
+    QString timeleft = hbTrId("txt_cam_dblist_hd_720p_val_ln_recording_time_left");
     QString hdString = hbTrId("txt_cam_dblist_hd_720p_169_widescreen");
     QString vga = hbTrId("txt_cam_dblist_vga_43");
     QString wideVga = hbTrId("txt_cam_dblist_vga_169_widescreen"); //VGA 16:9 widescreen
@@ -285,8 +284,6 @@
 
     foreach(CxeVideoDetails quality, list) {
         // mapping the right value for each quality
-        QString index2String;
-        index2String.setNum(index);
 
         QString settingString = "";
         QString time = "";
@@ -307,7 +304,7 @@
         } else if (quality.mWidth == KResWideVGA.width() &&
                   quality.mHeight == KResWideVGA.height()) {
             settingString.append(wideVga);
-            qualityIcon = "qtg_mono_12mp"; //correct icon missing
+            qualityIcon = "qtg_mono_vga_wide";
         }
 
         settingString.append(",");
@@ -319,7 +316,7 @@
         CX_DEBUG(( "video quality setting string: %s", settingString.toAscii().constData()));
         SettingItem setting;
         setting.mItem = settingString;
-        setting.mValue = qVariantFromValue(index2String);
+        setting.mValue = index;
         setting.mIcon = qualityIcon;
         settings.mSettingPairList.append(setting);
 
--- a/camerauis/cameraxui/cxui/src/cxuisettingslider.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/src/cxuisettingslider.cpp	Thu May 13 21:30:19 2010 +0300
@@ -51,8 +51,8 @@
         // labels correctly if step is something else than 1
         int step = 1;
         mSliderScaleValue = 1;
-        if (data->mStep != 0) {
-            mSliderScaleValue = step / data->mStep;
+        if (data->mMinorStep != 0) {
+            mSliderScaleValue = step / data->mMinorStep;
         }
 
         // scale min and max values as step has been set to 1
@@ -61,17 +61,13 @@
         CX_DEBUG(("Setting slider range [%d..%d]", minvalue, maxvalue));
         setRange(minvalue,maxvalue);
         setSingleStep(step);
-
-        setSnappingMode(HbSlider::MajorTickSnapping);
+         
+        setSnappingMode(HbSlider::MinorTickSnapping);
 
-        // don't show labels and tickmarks if there are no strings to be shown
-        if (!data->mSettingStrings.isEmpty()) {
-            setMajorTickLabels(data->mSettingStrings);
-            setMajorTickInterval(step);
-            setTickPosition(Hb::SliderTicksLeft);
-        } else {
-            setTickPosition(Hb::NoSliderTicks);
-        }
+        setMajorTickLabels(data->mSettingStrings);
+        setMajorTickInterval(mSliderScaleValue * data->mMajorStep);
+        setMinorTickInterval(mSliderScaleValue * data->mMinorStep);
+        setTickPosition(Hb::SliderTicksAbove);
 
         setSettingId(data->mSettingId);
 
--- a/camerauis/cameraxui/cxui/src/cxuisettingxmlreader.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/src/cxuisettingxmlreader.cpp	Thu May 13 21:30:19 2010 +0300
@@ -50,7 +50,8 @@
 
     static const char *ATTRIBUTE_SLIDER_MIN               = "min";
     static const char *ATTRIBUTE_SLIDER_MAX               = "max";
-    static const char *ATTRIBUTE_SLIDER_STEP              = "step";
+    static const char *ATTRIBUTE_SLIDER_MINOR_STEP        = "minorStep";
+    static const char *ATTRIBUTE_SLIDER_MAJOR_STEP        = "majorStep";
 
     // possible values that can be used in xml for "ATTRIBUTE_LISTBOXTYPE"
     static const char *SINGLE_LINE_LISTBOX                = "SingleLineListBox";
@@ -290,15 +291,28 @@
     // Go through list of items
     // XML something like this
     // <item value="0" string="qtn_whitebalance_auto" />
+    bool ok(false);
+    int intValue(0);
+    QVariant value;
+    QString string;
     for (QDomNode n = element.firstChild(); !n.isNull(); n = n.nextSibling()) {
         e = n.toElement();
+        CX_DEBUG(("tag name <%s>", e.tagName().toAscii().constData()));
 
-        // get the string text id from the xml
-        QString string = e.attribute(ATTRIBUTE_LOCALIZATION_ID);
-        // get the equivalent engine value from xml
-        QVariant value = e.attribute(ATTRIBUTE_VALUE);
+        // Get the item equivalent engine value from xml.
+        // We need to know later if it is a string or int type, hence the extra effort.
+        // QVariant has auto-conversion even from string to int, so can't use QVariant::canConvert<T>().
+        string = e.attribute(ATTRIBUTE_VALUE);
+        intValue = string.toInt(&ok);
+        if (ok) {
+            value.setValue(intValue);
+        } else {
+            value.setValue(string);
+        }
 
-        CX_DEBUG(("tag name <%s>", e.tagName().toAscii().constData()));
+
+        // get the string text id from the xml, and format based on type.
+        string = e.attribute(ATTRIBUTE_LOCALIZATION_ID);
         if (e.tagName() == TAG_ITEM) {
             // get the localizable string from the hbtrid
             string = hbTrId(string.toAscii().constData());
@@ -307,7 +321,6 @@
             // format the setting string
             string = hbTrId(string.toAscii().constData(), lnValue.toInt());
         }
-
         CX_DEBUG(("attribute [%s] value[%s]", ATTRIBUTE_LOCALIZATION_ID, string.toAscii().constData()));
 
         if (!string.isNull()) {
@@ -364,15 +377,18 @@
         QString maxString = e.attribute(ATTRIBUTE_SLIDER_MAX);
 
         // get the step text id from the xml
-        QVariant stepString = e.attribute(ATTRIBUTE_SLIDER_STEP);
-        p->mStep = stepString.toReal();
+        QVariant stepString = e.attribute(ATTRIBUTE_SLIDER_MINOR_STEP);
+        p->mMinorStep = stepString.toReal();
+        stepString = e.attribute(ATTRIBUTE_SLIDER_MAJOR_STEP);
+        p->mMajorStep = stepString.toReal();
 
         // get the ln value from xml to generate strings for slider
         QString lnValue = e.attribute(ATTRIBUTE_LOCALIZATION_ID_LN_VALUE);
 
         // Don't create labels for slider if no strings are defined in settinsg xml
+        // Create labels only for major ticks
         if (!minString.isEmpty() && !maxString.isEmpty()) {
-            qreal step = p->mStep;
+            qreal step = p->mMajorStep;
             qreal value = lnValue.toDouble();
             // generating all negative valued strings for slider setting
             while (value > 0) {
@@ -383,7 +399,7 @@
             }
 
             // generating all non-negative valued strings for slider setting
-            step = p->mStep;
+            step = p->mMajorStep;
             value = 0;
             while(value <= lnValue.toInt()) {
                 // format the setting string
--- a/camerauis/cameraxui/cxui/src/cxuistandby.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/src/cxuistandby.cpp	Thu May 13 21:30:19 2010 +0300
@@ -103,12 +103,10 @@
 */
 bool CxuiStandby::handleMouseEvent()
 {
-    CX_DEBUG_ENTER_FUNCTION();
-
     bool keyHandled = false;
 
     // close the dialog if it's visible
-    if(mStandbyDialogVisible && mStandbyPopup) {
+    if (mStandbyDialogVisible && mStandbyPopup) {
         CX_DEBUG(( "closing the popup mStandbyDialogVisible = : %d", mStandbyDialogVisible ));
         mStandbyPopup->close();
         keyHandled = true;
@@ -117,8 +115,6 @@
         startTimer();
     }
 
-    CX_DEBUG_EXIT_FUNCTION();
-
     return keyHandled;
 }
 
@@ -233,7 +229,6 @@
         case QEvent::GraphicsSceneMouseMove:
         case QEvent::GraphicsSceneMousePress:
         case QEvent::GraphicsSceneMouseRelease:
-            CX_DEBUG(("CxuiStandby::eventFilter -> mouse event"));
             eventWasConsumed = handleMouseEvent();
             break;
         default:
--- a/camerauis/cameraxui/cxui/src/cxuistillprecaptureview.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/src/cxuistillprecaptureview.cpp	Thu May 13 21:30:19 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -30,6 +30,7 @@
 #include <hbtoolbutton.h>
 #include <hbdeviceprofile.h> // HbDeviceProfile
 #include <hbmenu.h>
+#include <hbicon.h>
 
 #include "cxuiselftimer.h"
 #include "cxeengine.h"
@@ -52,6 +53,7 @@
 #include "cxuiserviceprovider.h"
 #include "cxuisettingdialog.h"
 #include "cxuisettingradiobuttonlist.h"
+#include "cxuizoomslider.h"
 
 using namespace Cxe;
 using namespace CxUiLayout;
@@ -100,6 +102,8 @@
             this, SLOT(handleViewfinderStateChanged(CxeViewfinderControl::State, CxeError::Id)));
     connect(&(mEngine->settings()), SIGNAL(sceneChanged(CxeScene&)),
             this, SLOT(handleSceneChanged(CxeScene&)));
+    connect(&mEngine->stillCaptureControl(), SIGNAL(availableImagesChanged()),
+            this, SLOT(updateImagesLeftLabel()));
 
     loadDefaultWidgets();
     hideControls();
@@ -126,13 +130,11 @@
     mQualityIcon = qobject_cast<HbLabel *>(widget);
     CX_DEBUG_ASSERT(mQualityIcon);
 
+    widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_INDICATOR_CONTAINER);
+    mIndicators = qobject_cast<HbWidget *>(widget);
+    CX_DEBUG_ASSERT(mIndicators);
     // create background for indicator container
-    HbWidget *container = NULL;
-    widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_INDICATOR_CONTAINER);
-    container = qobject_cast<HbWidget *>(widget);
-    CX_DEBUG_ASSERT(container);
-    createWidgetBackgroundGraphic(container, TRANSPARENT_BACKGROUND_GRAPHIC);
-    container->show();
+    createWidgetBackgroundGraphic(mIndicators, TRANSPARENT_BACKGROUND_GRAPHIC);
 
     CX_DEBUG_EXIT_FUNCTION();
 }
@@ -169,7 +171,7 @@
     QObject *object = NULL;
 
     widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_ZOOM_SLIDER);
-    mSlider = qobject_cast<HbSlider *>(widget);
+    mSlider = qobject_cast<CxuiZoomSlider *>(widget);
     CX_DEBUG_ASSERT(mSlider);
     addIncreaseDecreaseButtons(mSlider);
     createWidgetBackgroundGraphic(mSlider, TRANSPARENT_BACKGROUND_GRAPHIC);
@@ -187,12 +189,6 @@
     CX_DEBUG_ASSERT(container);
     createWidgetBackgroundGraphic(container, TRANSPARENT_BACKGROUND_GRAPHIC);
 
-    widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_SELFTIMER_BUTTON_CONTAINER);
-    container = qobject_cast<HbWidget *>(widget);
-    CX_DEBUG_ASSERT(container);
-    createWidgetBackgroundGraphic(container, TRANSPARENT_BACKGROUND_GRAPHIC);
-
-
     // connect selftimer start button to hide controls
     widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_SELFTIMER_START_BUTTON);
     HbPushButton *startButton = qobject_cast<HbPushButton *>(widget);
@@ -239,19 +235,23 @@
             }
         }
         if (!CxuiServiceProvider::instance()->allowCameraSwitching()) {
-
             CX_DEBUG(("EMBEDDED: don't allow camera switching"));
-
-            HbAction *goto_2nd_cam = qobject_cast<HbAction*> (mDocumentLoader->findObject(STILL_PRE_CAPTURE_GOTO_2ND_CAMERA_ACTION));
-            if (goto_2nd_cam) {
-                CX_DEBUG(("EMBEDDED: setting camera switch to disabled"));
-                goto_2nd_cam->setEnabled(false);
-
-            }
         }
 
     }
 
+    // update toolbar flash icon
+    int flash;
+    if (mEngine->settings().get(CxeSettingIds::FLASH_MODE, flash) == CxeError::None) {
+        handleSettingValueChanged(CxeSettingIds::FLASH_MODE, flash);
+    }
+
+    // update toolbar scene mode
+    QString scene;
+    if (mEngine->settings().get(CxeSettingIds::IMAGE_SCENE, scene) == CxeError::None) {
+        handleSettingValueChanged(CxeSettingIds::IMAGE_SCENE, scene);
+    }
+
     hideControls();
 
     mWidgetsLoaded = true;
@@ -305,31 +305,8 @@
 void CxuiStillPrecaptureView::launchSceneModesPopup()
 {
     CX_DEBUG_ENTER_FUNCTION();
-
-    if(mSceneModePopup) {
-        CX_DEBUG(("mSceneModePopup exists, showing.."));
-        mSceneModePopup->show();
-    } else {
-        CX_DEBUG(("Loading scene mode popup DocML"));
-        CxuiDocumentLoader* documentLoader = new CxuiDocumentLoader(mEngine);
-        bool ok = false;
-
-        // Use document loader to create popup
-        documentLoader->load(SCENEMODE_SETTING_XML, &ok);
-
-        CX_DEBUG(("load ok=%d", ok));
-
-        mSceneModePopup = qobject_cast<HbDialog*>(documentLoader->findWidget("still_scenemode_popup"));
-        CX_DEBUG_ASSERT(mSceneModePopup);
-        mSceneModePopup->setTimeout(HbDialog::NoTimeout);
-        mSceneModePopup->setBackgroundFaded(false);
-
-        delete documentLoader;
-        documentLoader = NULL;
-    }
-
-    connect(mKeyHandler, SIGNAL(autofocusKeyPressed()), mSceneModePopup, SLOT(close()));
-
+    hideControls();
+    emit showScenesView();
     CX_DEBUG_EXIT_FUNCTION();
 }
 
@@ -379,7 +356,10 @@
         capture();
     } else {
         // start focusing
-        handleAutofocusKeyPressed();
+        // Auto-focus can only work if viewfinder is running
+        if (mEngine->viewfinderControl().state() == CxeViewfinderControl::Running) {
+            mEngine->autoFocusControl().start(false);
+        }
         setCapturePending();
     }
 
@@ -393,7 +373,7 @@
 
     if (mEngine->mode() == Cxe::ImageMode) {
         // do not start capturing, if it is already ongoing
-        // the user might be repeatly triggering capture key
+        // the user might be repeatedly triggering capture key
         if (mEngine->stillCaptureControl().state() == CxeStillCaptureControl::Ready) {
             // If focusing in progress, cancel it now.
             // Set capture pending and continue once focusing is cancelled.
@@ -401,8 +381,14 @@
                 mEngine->autoFocusControl().cancel();
                 setCapturePending();
             } else {
-                mEngine->stillCaptureControl().reset();  //! @todo: Do not delete snapshots before images are really saved
-                mEngine->stillCaptureControl().capture();
+                // Engine uses disk space *estimate* for imagesLeft() so it
+                // should not cause significant delay / additional shutter lag.
+                if (mEngine->stillCaptureControl().imagesLeft()) {
+                    mEngine->stillCaptureControl().reset();  //! @todo: Do not delete snapshots before images are really saved
+                    mEngine->stillCaptureControl().capture();
+                } else {
+                    launchDiskFullNotification();
+                }
             }
         } else {
             setCapturePending();
@@ -411,7 +397,6 @@
 
     // after capturing check what is the new amount for images left
     updateImagesLeftLabel();
-
     CX_DEBUG_EXIT_FUNCTION();
 }
 
@@ -544,6 +529,13 @@
         return;
     }
 
+    // in case of selftimer being enabled, autofocuskey does not start focusing
+    if (mSelfTimer && mSelfTimer->isEnabled()){
+        CX_DEBUG(("Selftimer enabled, ignoring autofocus key press"));
+        CX_DEBUG_EXIT_FUNCTION();
+        return;
+    }
+
     // Auto-focus can only work if viewfinder is running
     if (mEngine->viewfinderControl().state() == CxeViewfinderControl::Running) {
 
@@ -557,6 +549,13 @@
 {
     CX_DEBUG_ENTER_FUNCTION();
 
+    // in case of selftimer being enabled, autofocuskey should not do anything
+    if (mSelfTimer && mSelfTimer->isEnabled()){
+        CX_DEBUG(("Selftimer enabled, ignoring autofocus key release"));
+        CX_DEBUG_EXIT_FUNCTION();
+        return;
+    }
+
     if (mEngine->autoFocusControl().supported()) {
         // Check that capture is not in progress, or pending.
         // Otherwise wouldn't want to cancel the focus.
@@ -638,7 +637,7 @@
     CxeStillCaptureControl::State newState, CxeError::Id /*error*/)
 {
     if (newState == CxeStillCaptureControl::Ready) {
-        OstTrace0(camerax_performance, CXUISTILLPRECAPTUREVIEW_SHOT_TO_SHOT_DUP2, "msg: e_CX_SHOT_TO_SHOT 0");
+        OstTrace0(camerax_performance, DUP1_CXUISTILLPRECAPTUREVIEW_SHOT_TO_SHOT, "msg: e_CX_SHOT_TO_SHOT 0");
 
         if (mCapturePending) {
             CX_DEBUG(("mCapturePending is true, starting capture now"));
@@ -665,19 +664,23 @@
 
 }
 
+/*!
+* Slot to handle application being sent to background.
+*/
 void CxuiStillPrecaptureView::handleFocusLost()
 {
-    CX_DEBUG_IN_FUNCTION();
-    bool captureInProgress = mEngine->stillCaptureControl().state() == CxeStillCaptureControl::Capturing;
-    if (!captureInProgress) {
-        if (mSelfTimer && mSelfTimer->isOngoing()) {
-            // If self-timer is running, stop and reset the delay now.
-            mSelfTimer->reset();
-        }
+    CX_DEBUG_ENTER_FUNCTION();
 
-        // Release camera as we are going to background.
-        releaseCamera();
+    if (mSelfTimer && mSelfTimer->isOngoing()) {
+        // If self-timer is running, stop and reset the delay now.
+        mSelfTimer->reset();
     }
+
+    // Release camera as we are going to background.
+    // If taking image is just ongoing, it will be cancelled by engine.
+    releaseCamera();
+
+    CX_DEBUG_EXIT_FUNCTION();
 }
 
 void CxuiStillPrecaptureView::handleFocusGained()
@@ -687,10 +690,24 @@
     CX_DEBUG_EXIT_FUNCTION();
 }
 
+/*
+    Slot for handling scene mode change
+    \param scene QVariantMap containing settings related to the new scene mode
+ */
 void CxuiStillPrecaptureView::handleSceneChanged(CxeScene &scene)
 {
     CX_DEBUG_ENTER_FUNCTION();
     if (mEngine->mode() == Cxe::ImageMode) {
+
+        // update toolbar scene mode icon
+        QString icon = getSettingItemIcon(CxeSettingIds::IMAGE_SCENE, scene[CxeSettingIds::SCENE_ID]);
+        CX_DEBUG((("New scene mode icon: %s"), icon.toAscii().constData()));
+        if (mDocumentLoader) {
+            QObject *obj = mDocumentLoader->findObject(STILL_PRE_CAPTURE_SCENE_MODE_ACTION);
+            CX_DEBUG_ASSERT(obj);
+            qobject_cast<HbAction *>(obj)->setIcon(HbIcon(icon));
+        }
+
         // for now, we are only interested in flashmode change
         if (scene.contains(CxeSettingIds::FLASH_MODE)) {
             CX_DEBUG(("updating flash to: %d", scene[CxeSettingIds::FLASH_MODE].value<int>()));
@@ -707,25 +724,36 @@
     CX_DEBUG_EXIT_FUNCTION();
 }
 
+/*
+    Slot for handling setting value changes. Notice that changing the scene mode
+    does not emit settingValueChanged signal.
+    \param key      CxSettingIds key defining the changed setting
+    \param newValue QVariant containing the new setting value
+
+    \sa CxuiStillPrecaptureView::handleSceneChanged(CxeScene &scene)
+ */
 void CxuiStillPrecaptureView::handleSettingValueChanged(const QString& key, QVariant newValue)
 {
     CX_DEBUG_ENTER_FUNCTION();
 
     if (mEngine->mode() == Cxe::ImageMode) {
+
+        // update images left and image quality icons
         if (key == CxeSettingIds::IMAGE_QUALITY) {
-
             // update the quality indicator on screen
             updateQualityIcon();
-
             // update images left when quality values are changed
             updateImagesLeftLabel();
         }
 
+        // update toolbar flash icon
         if (mFlashSetting && key == CxeSettingIds::FLASH_MODE) {
-            CX_DEBUG((("flash mode: %d"),newValue.toInt()))
+            CX_DEBUG((("flash mode: %d"), newValue.toInt()));
             QString icon = getSettingItemIcon(key, newValue);
+            CX_DEBUG((("flash mode icon: %s"), icon.toAscii().constData()))
             mFlashSetting->setIcon(HbIcon(icon));
         }
+
     }
 
     CX_DEBUG_EXIT_FUNCTION();
@@ -794,7 +822,7 @@
         }
 
         CX_DEBUG(("Images left %d", images));
-        mImagesLeft->setPlainText(hbTrId("%L1").arg(images));
+        mImagesLeft->setPlainText(hbTrId("txt_cam_fullscreen_imagesleft").arg(images));
     }
 
     CX_DEBUG_EXIT_FUNCTION();
--- a/camerauis/cameraxui/cxui/src/cxuistillprecaptureview2.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +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 <hbtransparentwindow.h>
-#include <hbslider.h>
-#include <hbtoolbar.h>
-#include <hbaction.h>
-
-#include "cxutils.h"
-#include "cxenamespace.h"
-#include "cxuienums.h"
-#include "cxuidocumentloader.h"
-#include "cxuistillprecaptureview.h"
-#include "cxuistillprecaptureview2.h"
-
-
-using namespace Cxe;
-using namespace CxUiLayout;
-
-
-CxuiStillPrecaptureView2::CxuiStillPrecaptureView2( QGraphicsItem *parent) :
-    CxuiStillPrecaptureView(parent)
-{
-    CX_DEBUG_IN_FUNCTION();
-}
-
-CxuiStillPrecaptureView2::~CxuiStillPrecaptureView2()
-{
-    CX_DEBUG_IN_FUNCTION();
-}
-
-void CxuiStillPrecaptureView2::loadDefaultWidgets()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    CX_DEBUG_ASSERT(mDocumentLoader);
-
-    // get pointer to the viewfinder
-    QGraphicsWidget *widget = 0;
-    widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_VIEWFINDER);
-    mViewfinder = qobject_cast<HbTransparentWindow *>(widget);
-    CX_DEBUG_ASSERT(mViewfinder);
-
-
-    widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_ZOOM_SLIDER);
-    mSlider = qobject_cast<HbSlider *>(widget);
-    CX_DEBUG_ASSERT(mSlider);
-    Q_ASSERT_X((mSlider != 0), "camerax ui", "invalid xml file");
-
-    widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_TOOLBAR);
-    mToolBar = qobject_cast<HbToolBar *>(widget);
-    CX_DEBUG_ASSERT(mToolBar);
-
-    QObject *object = 0;
-    object = mDocumentLoader->findObject(STILL_PRE_CAPTURE_FLASH_ACTION);
-    mFlashSetting = qobject_cast<HbAction *>(object);
-    CX_DEBUG_ASSERT(mFlashSetting);
-
-    mWidgetsLoaded = true;
-
-    hideControls();
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-
-void CxuiStillPrecaptureView2::loadWidgets()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-
-// end of file
--- a/camerauis/cameraxui/cxui/src/cxuivideoprecaptureview.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/src/cxuivideoprecaptureview.cpp	Thu May 13 21:30:19 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -29,7 +29,6 @@
 #include <hbmenu.h>
 #include <hbdialog.h>
 #include <hbnotificationdialog.h>
-#include <hbfeedbackplayer.h>
 #include <hbfeedbacksettings.h>
 #include <hbfeedbacknamespace.h>
 
@@ -42,6 +41,7 @@
 #include "cxesettings.h"
 #include "cxuienums.h"
 #include "cxutils.h"
+#include "cxuizoomslider.h"
 #include "cxuicapturekeyhandler.h"
 #include "cxuidocumentloader.h"
 #include "OstTraceDefinitions.h"
@@ -59,6 +59,7 @@
 {
     static const int CXUI_ELAPSED_TIME_TIMEOUT = 1000; // 1 second
     static const int CXUI_RECORD_ANIMATION_DURATION = 3000; // milliseconds
+    static const int CXUI_PAUSE_TIMEOUT = 60*1000;   // 60 seconds
 
     //!@todo Localization?
     static const char* VIDEO_TIME_FORMAT = "%02d:%02d";
@@ -77,7 +78,6 @@
     mToolBarIdle(NULL),
     mToolBarRec(NULL),
     mToolBarPaused(NULL),
-    mToggleLightAction(NULL),
     mVideoScenePopup(NULL),
     mVideoCaptureControl(NULL),
     mMenu(NULL),
@@ -110,6 +110,12 @@
             this, SLOT(handleSnapshot(CxeError::Id)));
     connect(mVideoCaptureControl, SIGNAL(stateChanged(CxeVideoCaptureControl::State, CxeError::Id)),
             this, SLOT(handleVideoStateChanged(CxeVideoCaptureControl::State,CxeError::Id)));
+    connect(mVideoCaptureControl, SIGNAL(remainingTimeChanged()),
+            this, SLOT(updateTimeLabels()));
+
+    mPauseTimer.setSingleShot(true);
+    connect(&mPauseTimer, SIGNAL(timeout()), this, SLOT(stop()));
+    mPauseTimer.setInterval(CXUI_PAUSE_TIMEOUT);
 
     HbAction *quitAction = new HbAction(Hb::QuitNaviAction, this);
     setNavigationAction(quitAction);
@@ -138,13 +144,11 @@
     mQualityIcon = qobject_cast<HbLabel *> (widget);
     CX_DEBUG_ASSERT(mQualityIcon);
 
-    // Create background graphics for indicator containers
-    HbWidget *indicatorContainer;
     widget = mDocumentLoader->findWidget(VIDEO_PRE_CAPTURE_INDICATOR_CONTAINER_TOP);
-    indicatorContainer = qobject_cast<HbWidget *>(widget);
-    CX_DEBUG_ASSERT(indicatorContainer);
-    createWidgetBackgroundGraphic(indicatorContainer, TRANSPARENT_BACKGROUND_GRAPHIC);
-    indicatorContainer->show();
+    mIndicators = qobject_cast<HbWidget *>(widget);
+    CX_DEBUG_ASSERT(mIndicators);
+    // Create background graphics for indicator container
+    createWidgetBackgroundGraphic(mIndicators, TRANSPARENT_BACKGROUND_GRAPHIC);
 
     CX_DEBUG_EXIT_FUNCTION();
 }
@@ -177,7 +181,7 @@
     Q_ASSERT_X(ok, "camerax ui", "error in xml file parsing");
     // get needed pointers to some of the widgets
     widget = mDocumentLoader->findWidget(VIDEO_PRE_CAPTURE_ZOOM_SLIDER);
-    mSlider = qobject_cast<HbSlider *> (widget);
+    mSlider = qobject_cast<CxuiZoomSlider *> (widget);
     CX_DEBUG_ASSERT(mSlider);
 
     //Let's add a plus and minus buttons to the slider
@@ -197,10 +201,6 @@
     CX_DEBUG_ASSERT(mToolBarRec);
     CX_DEBUG_ASSERT(mToolBarPaused);
 
-    QObject* object = mDocumentLoader->findObject(VIDEO_PRE_CAPTURE_TOGGLE_LIGHT_ACTION);
-    mToggleLightAction = qobject_cast<HbAction *>(object);
-    CX_DEBUG_ASSERT(mToggleLightAction);
-
     hideControls();
 
     if (CxuiServiceProvider::isCameraEmbedded()) {
@@ -227,21 +227,13 @@
         if (!CxuiServiceProvider::instance()->allowCameraSwitching()) {
             CX_DEBUG(("EMBEDDED: don't allow camera switching"));
 
-            HbAction *goto_2nd_cam = qobject_cast<HbAction*> (mDocumentLoader->findObject(VIDEO_PRE_CAPTURE_GOTO_2ND_CAMERA_ACTION));
-            if (goto_2nd_cam) {
-                CX_DEBUG(("EMBEDDED: setting camera switch to disabled"));
-                goto_2nd_cam->setEnabled(false);
-
-            }
         }
 
     }
 
 
-    // Create background graphics for indicator containers
+    // Create background graphic for indicator container
     HbWidget *indicatorContainer;
-
-
     widget = mDocumentLoader->findWidget(VIDEO_PRE_CAPTURE_INDICATOR_CONTAINER_BOTTOM);
     indicatorContainer = qobject_cast<HbWidget *>(widget);
     CX_DEBUG_ASSERT(indicatorContainer);
@@ -263,12 +255,12 @@
 
     // Initializing recording indicator animation
     mRecordingAnimation = new QPropertyAnimation(mRecordingIcon, "opacity");
-    mRecordingAnimation->setStartValue(0.0);
+    mRecordingAnimation->setStartValue(0.2);
     mRecordingAnimation->setKeyValueAt(0.5, 1.0);
-    mRecordingAnimation->setEndValue(0.0);
+    mRecordingAnimation->setEndValue(0.2);
     mRecordingAnimation->setDuration(CXUI_RECORD_ANIMATION_DURATION);
     mRecordingAnimation->setLoopCount(-1);
-    mRecordingAnimation->setEasingCurve(QEasingCurve::InCubic);
+    mRecordingAnimation->setEasingCurve(QEasingCurve::OutInQuad);
 
     // Initialize the video time counters.
     updateTimeLabels();
@@ -313,10 +305,16 @@
 {
     CX_DEBUG_ENTER_FUNCTION();
 
-    mMenu = takeMenu();
-    hideControls();
-    mVideoCaptureControl->record();
-    //mRecordingAnimation->start();
+    int time(0);
+    mVideoCaptureControl->remainingTime(time);
+
+    if (time) {
+        mMenu = takeMenu();
+        mVideoCaptureControl->record();
+    } else {
+        launchDiskFullNotification();
+    }
+
     CX_DEBUG_EXIT_FUNCTION();
 }
 
@@ -326,16 +324,9 @@
 
     CxeVideoCaptureControl::State state = mVideoCaptureControl->state();
     if (state == CxeVideoCaptureControl::Recording) {
-        if (mRecordingAnimation && mRecordingIcon) {
-            mVideoCaptureControl->pause();
-            mRecordingAnimation->stop();
-            }
-
-        // force update of toolbar
-        showToolbar();
+        mVideoCaptureControl->pause();
     } else if (state == CxeVideoCaptureControl::Paused) {
         mVideoCaptureControl->record();
-        //mRecordingAnimation->start();
     }
 
     CX_DEBUG_EXIT_FUNCTION();
@@ -413,10 +404,10 @@
 {
     CX_DEBUG_ENTER_FUNCTION();
 
-    HbFeedbackPlayer* feedback = HbFeedbackPlayer::instance();
-    if (feedback) {
-        feedback->settings().disableFeedback();
-    }
+    HbFeedbackSettings settings;
+    settings.disableFeedback();
+
+
     CX_DEBUG_EXIT_FUNCTION();
 }
 
@@ -424,10 +415,9 @@
 {
     CX_DEBUG_ENTER_FUNCTION();
 
-    HbFeedbackPlayer* feedback = HbFeedbackPlayer::instance();
-    if (feedback) {
-        feedback->settings().disableFeedback();
-    }
+    HbFeedbackSettings settings;
+    settings.enableFeedback();
+
 
     CX_DEBUG_EXIT_FUNCTION();
 }
@@ -463,31 +453,15 @@
     CxeVideoCaptureControl::State state = mVideoCaptureControl->state();
     switch (state) {
         case CxeVideoCaptureControl::Ready:
-            // Update remaining time label
             getRemainingTime();
-            setVideoTime(mRemainingTimeText, mTimeRemaining);
-            // Update elapsed time label
             // Not recording => elapsed time is zero
             mTimeElapsed = 0;
-            setVideoTime(mElapsedTimeText, mTimeElapsed);
-
-            // Adjust labels' visibility
-            mRemainingTimeText->show();
-            mElapsedTimeText->show();
             break;
 
         case CxeVideoCaptureControl::Recording:
         case CxeVideoCaptureControl::Paused:
-            // Update remaining time label
             getRemainingTime();
-            setVideoTime(mRemainingTimeText, mTimeRemaining);
-            // Update elapsed time label
             getElapsedTime();
-            setVideoTime(mElapsedTimeText, mTimeElapsed);
-
-            // Adjust labels' visibility
-            mRemainingTimeText->show();
-            mElapsedTimeText->show();
             break;
 
         case CxeVideoCaptureControl::Idle:
@@ -495,23 +469,35 @@
         case CxeVideoCaptureControl::Preparing:
         default:
             // Minimize processing during initialization phase.
-            // Calculating remaining time involves checking disk space,
+            // Calculating remaining time involves checking disk space, avoiding that.
             // which
             mTimeRemaining = 0;
-            setVideoTime(mRemainingTimeText, mTimeRemaining);
             mTimeElapsed = 0;
-            setVideoTime(mElapsedTimeText, mTimeElapsed);
-
-            // Adjust labels' visibility
-            mRemainingTimeText->hide();
-            mElapsedTimeText->hide();
             break;
     }
 
+    setVideoTime(mRemainingTimeText, mTimeRemaining);
+    setVideoTime(mElapsedTimeText, mTimeElapsed);
+
     CX_DEBUG_EXIT_FUNCTION();
 }
 
 /*!
+  Overridded version of hideControls() that doesn't hide the controls when video recording
+  is paused.
+ */
+void CxuiVideoPrecaptureView::hideControls()
+{
+    if (mVideoCaptureControl && mVideoCaptureControl->state() == CxeVideoCaptureControl::Paused) {
+        // never hide controls in paused state
+        return;
+    }
+
+    CxuiPrecaptureView::hideControls();
+
+}
+
+/*!
 * Helper method for formatting video time to requested label.
 * @param label Text label to show the time.
 * @param time Time in seconds to be formatted to the label text.
@@ -559,6 +545,10 @@
     }
 }
 
+/*!
+* Slot to handle video capture control state change.
+* Update visible items and stop / start timers.
+*/
 void CxuiVideoPrecaptureView::handleVideoStateChanged(CxeVideoCaptureControl::State newState,
         CxeError::Id error)
 {
@@ -567,31 +557,51 @@
 
     updateTimeLabels();
 
+    mPauseTimer.stop();
+
     switch (newState) {
     case CxeVideoCaptureControl::Ready:
-        setRecordingItemsVisibility(false);
+        if (mDocumentLoader){
+            mDocumentLoader->load(VIDEO_1ST_XML, VIDEO_PRE_CAPTURE_IDLE);
+        }
         if (mCapturePending) {
             mCapturePending = false;
             record();
         }
         break;
     case CxeVideoCaptureControl::Recording:
-        setRecordingItemsVisibility(true);
+        hideControls();
+        if (mDocumentLoader){
+            mDocumentLoader->load(VIDEO_1ST_XML, VIDEO_PRE_CAPTURE_RECORDING);
+        }
         mElapsedTimer.start(CXUI_ELAPSED_TIME_TIMEOUT);
         disableFeedback();
+        if (mRecordingAnimation && mRecordingIcon) {
+            mRecordingAnimation->start();
+        }
         break;
     case CxeVideoCaptureControl::Paused:
         mElapsedTimer.stop();
-        if (mRecordingIcon) {
-            mRecordingIcon->hide();
+
+        if (mDocumentLoader){
+            mDocumentLoader->load(VIDEO_1ST_XML, VIDEO_PRE_CAPTURE_PAUSED);
         }
-        if (mElapsedTimeText) {
-            mElapsedTimeText->show();
+
+        if (mRecordingAnimation && mRecordingIcon) {
+            mRecordingAnimation->stop();
         }
+        showControls();
         enableFeedback();
+        mPauseTimer.start();
         break;
     case CxeVideoCaptureControl::Stopping:
-        setRecordingItemsVisibility(false);
+        if (mDocumentLoader){
+            mDocumentLoader->load(VIDEO_1ST_XML, VIDEO_PRE_CAPTURE_PAUSED);
+        }
+
+        if (mRecordingAnimation && mRecordingIcon) {
+            mRecordingAnimation->stop();
+        }
         enableFeedback();
 
         if (isPostcaptureOn()) {
@@ -644,10 +654,10 @@
 
     switch (state) {
         case CxeVideoCaptureControl::Ready:
-        case CxeVideoCaptureControl::Paused:
             record();
             break;
         case CxeVideoCaptureControl::Recording:
+        case CxeVideoCaptureControl::Paused:
             stop();
             break;
         case CxeVideoCaptureControl::Idle:
@@ -685,7 +695,8 @@
     CX_DEBUG_ENTER_FUNCTION();
 
     CxeVideoCaptureControl::State state = mVideoCaptureControl->state();
-    if (state == CxeVideoCaptureControl::Recording){
+    if (state == CxeVideoCaptureControl::Recording ||
+        state == CxeVideoCaptureControl::Paused) {
         // Disable going to post-capture when video capture control goes to stopping state.
         disconnect(mVideoCaptureControl, SIGNAL(stateChanged(CxeVideoCaptureControl::State, CxeError::Id)),
                    this, SLOT(handleVideoStateChanged(CxeVideoCaptureControl::State,CxeError::Id)));
@@ -701,14 +712,8 @@
 void CxuiVideoPrecaptureView::handleFocusLost()
 {
     CX_DEBUG_IN_FUNCTION();
-
-    CxeVideoCaptureControl::State state = mVideoCaptureControl->state();
-    if (state == CxeVideoCaptureControl::Recording){
-        stop(); // delete recording icon
-    } else {
-        releaseCamera();
-    }
-
+    // Release camera. Stopping possibly ongoing recording is handled by engine.
+    releaseCamera();
 }
 
 void CxuiVideoPrecaptureView::handleBatteryEmpty()
@@ -726,31 +731,8 @@
 void CxuiVideoPrecaptureView::launchVideoScenePopup()
 {
     CX_DEBUG_ENTER_FUNCTION();
-
-    if (mVideoScenePopup) {
-        CX_DEBUG(("mVideoScenePopup already exists, showing..."));
-        mVideoScenePopup->show();
-    } else {
-        CX_DEBUG(("Loading popup DocML"));
-        CxuiDocumentLoader* documentLoader = new CxuiDocumentLoader(mEngine);
-        bool ok = false;
-
-        // Use document loader to create popup
-        documentLoader->load(SCENEMODE_VIDEO_SETTING_XML, &ok);
-
-        CX_DEBUG(("load ok=%d", ok));
-
-        mVideoScenePopup = qobject_cast<HbDialog*>(documentLoader->findWidget("video_scenemode_popup"));
-        CX_DEBUG_ASSERT(mVideoScenePopup);
-        mVideoScenePopup->setTimeout(HbDialog::NoTimeout);
-        mVideoScenePopup->setBackgroundFaded(false);
-
-        delete documentLoader;
-        documentLoader = NULL;
-    }
-
-    connect(mKeyHandler, SIGNAL(autofocusKeyPressed()), mVideoScenePopup, SLOT(close()));
-
+    hideControls();
+    emit showScenesView();
     CX_DEBUG_EXIT_FUNCTION();
 }
 
@@ -811,6 +793,29 @@
     }
 }
 
+/*!
+ * Overridden eventFilter() to restart the pause timer.
+ */
+bool CxuiVideoPrecaptureView::eventFilter(QObject *object, QEvent *event)
+{
+
+    if (mVideoCaptureControl && mVideoCaptureControl->state() == CxeVideoCaptureControl::Paused) {
+        // restart the timer if the screen is touched and we are in paused state
+        switch (event->type())
+        {
+        case QEvent::GraphicsSceneMouseRelease:
+            mPauseTimer.start();
+            break;
+        case QEvent::GraphicsSceneMousePress:
+            mPauseTimer.stop();
+            break;
+        default:
+            break;
+        }
+    }
+    return CxuiPrecaptureView::eventFilter(object, event);
+}
+
 
 
 //end of file
--- a/camerauis/cameraxui/cxui/src/cxuivideoprecaptureview2.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-#include <hbtransparentwindow.h>
-#include <hblabel.h>
-#include <hbslider.h>
-#include <hbtoolbar.h>
-#include <hbaction.h>
-
-#include "cxutils.h"
-#include "cxenamespace.h"
-#include "cxuienums.h"
-#include "cxuidocumentloader.h"
-#include "cxuivideoprecaptureview.h"
-#include "cxuivideoprecaptureview2.h"
-
-
-using namespace Cxe;
-using namespace CxUiLayout;
-
-
-CxuiVideoPrecaptureView2::CxuiVideoPrecaptureView2( QGraphicsItem *parent) :
-    CxuiVideoPrecaptureView(parent)
-{
-    CX_DEBUG_IN_FUNCTION();
-}
-
-CxuiVideoPrecaptureView2::~CxuiVideoPrecaptureView2()
-{
-    CX_DEBUG_IN_FUNCTION();
-}
-
-void CxuiVideoPrecaptureView2::loadDefaultWidgets()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    CX_DEBUG_ASSERT(mDocumentLoader);
-
-    // Get pointers to ui components from the layout data
-    QGraphicsWidget *widget = NULL;
-    widget = mDocumentLoader->findWidget(VIDEO_PRE_CAPTURE_VIEWFINDER);
-    mViewfinder = qobject_cast<HbTransparentWindow *> (widget);
-    CX_DEBUG_ASSERT(mViewfinder);
-
-    widget = mDocumentLoader->findWidget(VIDEO_PRE_CAPTURE_ELAPSED_TIME_LABEL);
-    mElapsedTimeText = qobject_cast<HbLabel *> (widget);
-    CX_DEBUG_ASSERT(mElapsedTimeText);
-
-    widget = mDocumentLoader->findWidget(VIDEO_PRE_CAPTURE_RECORDING_ICON);
-    mRecordingIcon = qobject_cast<HbLabel *> (widget);
-    CX_DEBUG_ASSERT(mRecordingIcon);
-
-    // get needed pointers to some of the widgets
-    widget = mDocumentLoader->findWidget(VIDEO_PRE_CAPTURE_ZOOM_SLIDER);
-    mSlider = qobject_cast<HbSlider *> (widget);
-    CX_DEBUG_ASSERT(mSlider);
-
-    widget = mDocumentLoader->findWidget(VIDEO_PRE_CAPTURE_TOOLBAR);
-    mToolBar = qobject_cast<HbToolBar *> (widget);
-    CX_DEBUG_ASSERT(mToolBar);
-
-    mWidgetsLoaded = true;
-
-    hideControls();
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-
-void CxuiVideoPrecaptureView2::loadWidgets()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    // All loaded in loadDefaultWidgets()
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-
-// end of file
--- a/camerauis/cameraxui/cxui/src/cxuiviewmanager.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/src/cxuiviewmanager.cpp	Thu May 13 21:30:19 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -18,16 +18,14 @@
 #include <QTimer>
 #include <hbmainwindow.h>
 #include <coemain.h>
-#include <avkondomainpskeys.h>  // keyguard
-#include <hwrmpowerstatesdkpskeys.h> // battery
 #include <QGraphicsSceneEvent>
 
 
+#include "cxuiapplication.h"
+#include "cxuiapplicationframeworkmonitor.h"
 #include "cxuiviewmanager.h"
 #include "cxuivideoprecaptureview.h"
-#include "cxuivideoprecaptureview2.h"
 #include "cxuistillprecaptureview.h"
-#include "cxuistillprecaptureview2.h"
 #include "cxuipostcaptureview.h"
 #include "cxuicapturekeyhandler.h"
 #include "cxeengine.h"
@@ -37,16 +35,18 @@
 #include "cxenamespace.h"
 #include "cxuienums.h"
 #include "cxutils.h"
-#include "xqsettingsmanager.h" // Settings Manager API
 #include "cxuidocumentloader.h"
 #include "cxuistandby.h"
 #include "cxuierrormanager.h"
+#include "cxesettings.h"
+#include "cxememorymonitor.h"
+#include "cxuiserviceprovider.h"
+#include "cxuiscenemodeview.h"
+
 #include "OstTraceDefinitions.h"
 #ifdef OST_TRACE_COMPILER_IN_USE
 #include "cxuiviewmanagerTraces.h"
 #endif
-#include "cxuiserviceprovider.h"
-
 
 
 using namespace Cxe;
@@ -58,97 +58,81 @@
 //
 // ---------------------------------------------------------------------------
 //
-CxuiViewManager::CxuiViewManager(HbMainWindow &mainWindow, CxeEngine &engine, CxuiCaptureKeyHandler &keyHandler) :
+CxuiViewManager::CxuiViewManager(CxuiApplication &application, HbMainWindow &mainWindow, CxeEngine &engine) :
+    mApplication(application),
     mMainWindow(mainWindow),
     mStillPrecaptureView(NULL),
     mVideoPrecaptureView(NULL),
     mPostcaptureView(NULL),
-    mStillPrecaptureView2(NULL),
-    mVideoPrecaptureView2(NULL),
     mEngine(engine),
-    mKeyHandler(keyHandler),
-    mSettingsManager(NULL),
-    mFocused(true),
-    mCameraDocumentLoader(NULL)
+    mKeyHandler(NULL),
+    mApplicationMonitor(NULL),
+    mCameraDocumentLoader(NULL),
+    mSceneModeView(NULL)
 {
     CX_DEBUG_ENTER_FUNCTION();
 
+    // Application monitor
+    mApplicationMonitor = new CxuiApplicationFrameworkMonitor(mApplication, mEngine.settings());
+    connect(mApplicationMonitor, SIGNAL(foregroundStateChanged(CxuiApplicationFrameworkMonitor::ForegroundState)),
+            this, SLOT(handleForegroundStateChanged(CxuiApplicationFrameworkMonitor::ForegroundState)));
+    connect(mApplicationMonitor, SIGNAL(batteryEmpty()),
+            this, SLOT(handleBatteryEmpty()));
+
+    // Connect memory monitor start / stop to focused status
+    connect(this, SIGNAL(focusGained()), &mEngine.memoryMonitor(), SLOT(startMonitoring()));
+    connect(this, SIGNAL(focusLost()),   &mEngine.memoryMonitor(), SLOT(stopMonitoring()));
+
+    // Key handler
+    mKeyHandler = new CxuiCaptureKeyHandler(mEngine);
+
     mMainWindow.installEventFilter(this); // in order to filter capture and AF keys
 
     OstTrace0( camerax_performance, CXUIVIEWMANAGER_CXUIVIEWMANAGER, "msg: e_CX_VIEWMANAGER_CREATE_DOCLOADER 1" );
-    mCameraDocumentLoader = new CxuiDocumentLoader;
+    mCameraDocumentLoader = new CxuiDocumentLoader(&engine);
     OstTrace0( camerax_performance, DUP1_CXUIVIEWMANAGER_CXUIVIEWMANAGER, "msg: e_CX_VIEWMANAGER_CREATE_DOCLOADER 0" );
 
     // standby functionality and necessary signal connections
-    mStandbyHandler = new CxuiStandby(keyHandler, mCameraDocumentLoader, &engine);
+    mStandbyHandler = new CxuiStandby(*mKeyHandler, mCameraDocumentLoader, &mEngine);
 
     connect(mStandbyHandler, SIGNAL(aboutToEnterStandby()),this, SLOT(aboutToLooseFocus()));
     connect(mStandbyHandler, SIGNAL(aboutToExitStandby()),this, SLOT(aboutToGainFocus()));
 
     // error manager, handling errors and notifying users based on their severity
-    mErrorManager = new CxuiErrorManager(keyHandler, mCameraDocumentLoader);
+    mErrorManager = new CxuiErrorManager(*mKeyHandler, mCameraDocumentLoader);
 
     // connecting necessary signals from error manager to release and init camera.
     connect(mErrorManager, SIGNAL(aboutToRecoverError()), this, SLOT(aboutToLooseFocus()));
     connect(mErrorManager, SIGNAL(errorRecovered()), this, SLOT(aboutToGainFocus()));
 
-	if (!CxuiServiceProvider::isCameraEmbedded()) {
-		// for embedded mode: don't create view yet, create
-		// when engine inits to correct mode
-#ifdef FORCE_SECONDARY_CAMERA
-	    // 2nd camera hack: always use 1st camera view
-	    if (mEngine.mode() == Cxe::VideoMode) {
-	        createVideoPrecaptureView();
-	
-	        mMainWindow.blockSignals(true);
-	        mMainWindow.setCurrentView(mVideoPrecaptureView, false);
-	        mMainWindow.blockSignals(false);
-	    } else {
-	        createStillPrecaptureView();
-	
-	        mMainWindow.blockSignals(true);
-	        mMainWindow.setCurrentView(mStillPrecaptureView, false);
-	        mMainWindow.blockSignals(false);
-	    }
-
-#else
-	    if (mEngine.cameraDeviceControl().cameraIndex() == Cxe::PrimaryCameraIndex) {
-	        if (mEngine.mode() == Cxe::VideoMode) {
-	            createVideoPrecaptureView();
-	            mMainWindow.blockSignals(true);
-	            mMainWindow.setCurrentView(mVideoPrecaptureView, false);
-	            mMainWindow.blockSignals(false);
-	        } else {
-	            createStillPrecaptureView();
-	            mMainWindow.blockSignals(true);
-	            mMainWindow.setCurrentView(mStillPrecaptureView, false);
-	            mMainWindow.blockSignals(false);
-	        }
-	    } else {
-	        if (mEngine.mode() == Cxe::VideoMode) {
-	            createVideoPrecaptureView2();
-	            mMainWindow.blockSignals(true);
-	            mMainWindow.setCurrentView(mVideoPrecaptureView2, false);
-	            mMainWindow.blockSignals(false);
-	        } else {
-	            createStillPrecaptureView2();
-	            mMainWindow.blockSignals(true);
-	            mMainWindow.setCurrentView(mStillPrecaptureView2, false);
-	            mMainWindow.blockSignals(false);
-	        }
-	    }
-#endif
-		connectPreCaptureSignals();
-	}
-    
-    startEventMonitors();
+    if (!CxuiServiceProvider::isCameraEmbedded()) {
+        // For embedded mode: don't create view yet, create
+        // when engine inits to correct mode
+        CX_DEBUG_ASSERT(mEngine.cameraDeviceControl().cameraIndex() == Cxe::PrimaryCameraIndex);
+        if (mEngine.mode() == Cxe::VideoMode) {
+            createVideoPrecaptureView();
+            mMainWindow.blockSignals(true);
+            mMainWindow.setCurrentView(mVideoPrecaptureView, false);
+            mMainWindow.blockSignals(false);
+        } else {
+            createStillPrecaptureView();
+            mMainWindow.blockSignals(true);
+            mMainWindow.setCurrentView(mStillPrecaptureView, false);
+            mMainWindow.blockSignals(false);
+        }
+        connectPreCaptureSignals();
+    }
 
     //connecting initmode signals
     connect(&mEngine.cameraDeviceControl(), SIGNAL(initModeComplete(CxeError::Id)),
             this, SLOT(createPostcaptureView()));
+
     connect(&mEngine.cameraDeviceControl(), SIGNAL(initModeComplete(CxeError::Id)),
             mErrorManager, SLOT(analyze(CxeError::Id)));
 
+    connect(&mEngine.stillCaptureControl(), SIGNAL(imageCaptured(CxeError::Id, int)),
+            mErrorManager, SLOT(analyze(CxeError::Id)));
+
     if (CxuiServiceProvider::isCameraEmbedded()) {
         // connect signals to set up the view after image/video prepare
         connect(&mEngine.stillCaptureControl(), SIGNAL(imagePrepareComplete(CxeError::Id)),
@@ -159,7 +143,7 @@
         // start standby timer now because view will not be ready when viewfinder is started
         mStandbyHandler->startTimer();
     }
-            
+
     CX_DEBUG_EXIT_FUNCTION();
 }
 
@@ -173,7 +157,8 @@
     CX_DEBUG_ENTER_FUNCTION();
 
     delete mCameraDocumentLoader;
-    delete mSettingsManager;
+    delete mKeyHandler;
+    delete mApplicationMonitor;
 
     CX_DEBUG_EXIT_FUNCTION();
 }
@@ -199,22 +184,20 @@
 {
     CX_DEBUG_ENTER_FUNCTION();
     OstTrace0( camerax_performance, CXUIVIEWMANAGER_CREATESTILLPRECAPTUREVIEW, "msg: e_CX_CREATE_STILLPRECAPTUREVIEW 1" );
-    bool ok = false;
-    CX_DEBUG_ASSERT(mCameraDocumentLoader);
-
-    OstTrace0( camerax_performance, DUP2_CXUIVIEWMANAGER_ADDPRECAPTUREVIEWS, "msg: e_CX_DOCLOADER_LOAD 1" );
 
     // Use document loader to create widgets and layouts
     // (non-sectioned parts are parsed and loaded)
+    OstTrace0( camerax_performance, DUP2_CXUIVIEWMANAGER_ADDPRECAPTUREVIEWS, "msg: e_CX_DOCLOADER_LOAD 1" );
+
+    bool ok = false;
+    CX_DEBUG_ASSERT(mCameraDocumentLoader);
     mCameraDocumentLoader->load(STILL_1ST_XML, &ok);
     Q_ASSERT_X(ok, "createStillPrecaptureView", "error in xml file parsing");
 
-    QGraphicsWidget *widget = NULL;
-
     OstTrace0( camerax_performance, DUP2_CXUIVIEWMANAGER_CREATESTILLPRECAPTUREVIEW, "msg: e_CX_DOCLOADER_LOAD 0" );
 
-
     OstTrace0( camerax_performance, DUP4_CXUIVIEWMANAGER_ADDPRECAPTUREVIEWS, "msg: e_CX_DOCLOADER_FINDWIDGET 1" );
+    QGraphicsWidget *widget = NULL;
     // ask for the still precapture view widget pointer
     widget = mCameraDocumentLoader->findWidget(STILL_PRE_CAPTURE_VIEW);
     mStillPrecaptureView = qobject_cast<CxuiStillPrecaptureView *> (widget);
@@ -222,9 +205,11 @@
     OstTrace0( camerax_performance, DUP5_CXUIVIEWMANAGER_ADDPRECAPTUREVIEWS, "msg: e_CX_DOCLOADER_FINDWIDGET 0" );
 
     // call for needed consturction methods
-    mStillPrecaptureView->construct(&mMainWindow, &mEngine, mCameraDocumentLoader, &mKeyHandler);
+    mStillPrecaptureView->construct(&mMainWindow, &mEngine, mCameraDocumentLoader, mKeyHandler);
     // .. and add to main window (which also takes ownership)
+    OstTrace0( camerax_performance, DUP1_CXUIVIEWMANAGER_MAINWINDOW_ADDVIEW, "msg: e_CX_MAINWINDOW_ADDVIEW 1" );
     mMainWindow.addView(widget);
+    OstTrace0( camerax_performance, DUP2_CXUIVIEWMANAGER_MAINWINDOW_ADDVIEW, "msg: e_CX_MAINWINDOW_ADDVIEW 0" );
 
     OstTrace0( camerax_performance, DUP1_CXUIVIEWMANAGER_CREATESTILLPRECAPTUREVIEW, "msg: e_CX_CREATE_STILLPRECAPTUREVIEW 0" );
 
@@ -232,11 +217,11 @@
 }
 
 // ---------------------------------------------------------------------------
-// CxuiViewManager::createStillPrecaptureView2
+// CxuiViewManager::createStillScenesView
 //
 // ---------------------------------------------------------------------------
 //
-void CxuiViewManager::createStillPrecaptureView2()
+void CxuiViewManager::createSceneModesView()
 {
     CX_DEBUG_ENTER_FUNCTION();
 
@@ -245,24 +230,48 @@
 
     // Use document loader to create widgets and layouts
     // (non-sectioned parts are parsed and loaded)
-    mCameraDocumentLoader->load(STILL_2ND_XML, &ok);
-    Q_ASSERT_X(ok, "createStillPrecaptureView2", "error in xml file parsing");
+    mCameraDocumentLoader->load(SCENEMODE_SETTING_XML, &ok);
 
     QGraphicsWidget *widget = NULL;
 
-    // ask for the still precapture view widget pointer
-    widget = mCameraDocumentLoader->findWidget(STILL_PRE_CAPTURE_VIEW2);
-    mStillPrecaptureView2 = qobject_cast<CxuiStillPrecaptureView2 *> (widget);
-    CX_DEBUG_ASSERT(mStillPrecaptureView2);
+    // ask for the scenes mode view widget pointer
+    widget = mCameraDocumentLoader->findWidget(STILL_SCENES_VIEW);
+    Q_ASSERT_X(ok && (widget != 0), "camerax ui", "invalid xml file");
+    mSceneModeView = qobject_cast<CxuiSceneModeView *> (widget);
 
-    // call for needed consturction methods
-    mStillPrecaptureView2->construct(&mMainWindow, &mEngine, mCameraDocumentLoader, &mKeyHandler);
+    // call for needed construction methods
+    mSceneModeView->construct(&mMainWindow, &mEngine, mCameraDocumentLoader, mKeyHandler);
     // .. and add to main window (which also takes ownership)
     mMainWindow.addView(widget);
+    mSceneModeView->loadBackgroundImages();
 
+    connect(mSceneModeView, SIGNAL(viewCloseEvent()), this, SLOT(changeToPrecaptureView()));
     CX_DEBUG_EXIT_FUNCTION();
 }
 
+/*!
+* CxuiViewManager::showScenesView
+* A private method for displaying Scene Modes selection view
+*/
+void CxuiViewManager::showScenesView()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+    if (!mSceneModeView) {
+        createSceneModesView();
+    }
+    else {
+        mSceneModeView->loadBackgroundImages();
+    }
+    CX_DEBUG_ASSERT(mSceneModeView);
+    mMainWindow.blockSignals(true);
+    mMainWindow.setCurrentView(mSceneModeView, false);
+    emit disableStandbyTimer();
+    connectCaptureKeySignals();
+    mMainWindow.blockSignals(false);
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+
 // ---------------------------------------------------------------------------
 // CxuiViewManager::createVideoPrecaptureView
 //
@@ -285,44 +294,18 @@
     widget = mCameraDocumentLoader->findWidget(VIDEO_PRE_CAPTURE_VIEW);
     mVideoPrecaptureView = qobject_cast<CxuiVideoPrecaptureView *> (widget);
     CX_DEBUG_ASSERT(mVideoPrecaptureView);
-    mVideoPrecaptureView->construct(&mMainWindow, &mEngine, mCameraDocumentLoader, &mKeyHandler);
+    mVideoPrecaptureView->construct(&mMainWindow, &mEngine, mCameraDocumentLoader, mKeyHandler);
 
     // add view to main window
+    OstTrace0( camerax_performance, DUP3_CXUIVIEWMANAGER_MAINWINDOW_ADDVIEW, "msg: e_CX_MAINWINDOW_ADDVIEW 1" );
     mMainWindow.addView(mVideoPrecaptureView);
+    OstTrace0( camerax_performance, DUP4_CXUIVIEWMANAGER_MAINWINDOW_ADDVIEW, "msg: e_CX_MAINWINDOW_ADDVIEW 0" );
     OstTrace0( camerax_performance, DUP1_CXUIVIEWMANAGER_CREATEVIDEOPRECAPTUREVIEW, "msg: e_CX_CREATE_VIDEOPRECAPTUREVIEW 0" );
 
     CX_DEBUG_EXIT_FUNCTION();
 }
 
 // ---------------------------------------------------------------------------
-// CxuiViewManager::createVideoPrecaptureView2
-//
-// ---------------------------------------------------------------------------
-//
-void CxuiViewManager::createVideoPrecaptureView2()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    CX_DEBUG_ASSERT(mCameraDocumentLoader);
-
-    bool ok = false;
-    // load and create the default widgets in video xml
-    mCameraDocumentLoader->load(VIDEO_2ND_XML, &ok);
-    CX_DEBUG_ASSERT(ok);
-
-    // get pointer to videoprecaptureview and do some initialisation
-    QGraphicsWidget *widget = NULL;
-    widget = mCameraDocumentLoader->findWidget(VIDEO_PRE_CAPTURE_VIEW2);
-    mVideoPrecaptureView2 = qobject_cast<CxuiVideoPrecaptureView2 *> (widget);
-    CX_DEBUG_ASSERT(mVideoPrecaptureView2);
-    mVideoPrecaptureView2->construct(&mMainWindow, &mEngine, mCameraDocumentLoader);
-
-    // add view to main window
-    mMainWindow.addView(mVideoPrecaptureView2);
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-// ---------------------------------------------------------------------------
 // CxuiViewManager::createStillPostcaptureView
 //
 // ---------------------------------------------------------------------------
@@ -365,44 +348,20 @@
     CX_DEBUG_ENTER_FUNCTION();
     CX_DEBUG(("CxuiViewManager::getPrecaptureView() mode=%d, camera index=%d", mode, camera));
 
-#ifdef FORCE_SECONDARY_CAMERA
-        // 2nd camera forced: always use 1st camera view
-        CX_DEBUG(("CxuiViewManager::getPrecaptureView() forcing primary camera view"));
-        camera = Cxe::PrimaryCameraIndex;
-#endif // FORCE_SECONDARY_CAMERA
+    CX_DEBUG_ASSERT(camera == Cxe::PrimaryCameraIndex);
 
     if (mode == ImageMode) {
-
         CX_DEBUG(("CxuiViewManager::getPrecaptureView() image mode"));
-        if (camera == Cxe::PrimaryCameraIndex) {
-            CX_DEBUG(("CxuiViewManager::getPrecaptureView() primary camera"));
-            if(!mStillPrecaptureView) {
-                createStillPrecaptureView();
-            }
-            return mStillPrecaptureView;
-        } else {
-            CX_DEBUG(("CxuiViewManager::getPrecaptureView() secondary camera"));
-            if(!mStillPrecaptureView2) {
-                createStillPrecaptureView2();
-            }
-            return mStillPrecaptureView2;
+        if(!mStillPrecaptureView) {
+            createStillPrecaptureView();
         }
+        return mStillPrecaptureView;
     } else {
-
         CX_DEBUG(("CxuiViewManager::getPrecaptureView() video mode"));
-        if (camera == Cxe::PrimaryCameraIndex) {
-            CX_DEBUG(("CxuiViewManager::getPrecaptureView() primary camera"));
-            if(!mVideoPrecaptureView) {
-                createVideoPrecaptureView();
-            }
-            return mVideoPrecaptureView;
-        } else {
-            CX_DEBUG(("CxuiViewManager::getPrecaptureView() secondary camera"));
-            if(!mVideoPrecaptureView2) {
-                createVideoPrecaptureView2();
-            }
-            return mVideoPrecaptureView2;
+        if(!mVideoPrecaptureView) {
+            createVideoPrecaptureView();
         }
+        return mVideoPrecaptureView;
     }
 }
 
@@ -431,9 +390,6 @@
     // connecting all necessary signals for postcapture view
     connectPostCaptureSignals();
 
-    //@todo: refactor postcapture view to new focus and state handling as agreed with package owner
-    connect(this, SIGNAL(focusGained()), mPostcaptureView, SLOT(startTimers()), Qt::UniqueConnection);
-
     CX_DEBUG_EXIT_FUNCTION();
 }
 
@@ -463,6 +419,7 @@
 
     // connecting necessary pre-capture view signals
     connectPreCaptureSignals();
+    emit startStandbyTimer();
 
     CX_DEBUG_EXIT_FUNCTION();
 }
@@ -509,87 +466,23 @@
 //
 bool CxuiViewManager::eventFilter(QObject *object, QEvent *event)
 {
+    Q_UNUSED(object)
+
     bool eventWasConsumed = false;
 
     switch (event->type())
     {
     case QEvent::KeyPress:
     case QEvent::KeyRelease:
-        eventWasConsumed = mKeyHandler.handleKeyEvent(event);
-        break;
-    case QEvent::WindowActivate:
-        if (object == &mMainWindow) {
-            CX_DEBUG(("CxuiViewManager - window activated"));
-            // If we gained focus and keyguard is off.
-            if (!mFocused) {
-                mFocused = true;
-                if (mKeyLockState == EKeyguardNotActive) {
-                    aboutToGainFocus();
-                }
-            }
-        }
-        break;
-    case QEvent::WindowDeactivate:
-        if (object == &mMainWindow)
-        {
-            CX_DEBUG(("CxuiViewManager - window de-activated"));
-            if (mFocused) {
-                mFocused = false;
-                aboutToLooseFocus();
-            }
-        }
+        eventWasConsumed = mKeyHandler->handleKeyEvent(event);
         break;
     }
-
     // No need to call base class implementation, because we derive from QObject directly.
     // QObject::eventFilter() implementation always returns false.
     return eventWasConsumed;
 }
 
 // ---------------------------------------------------------------------------
-// CxuiViewManager::startEventMonitors
-//
-// ---------------------------------------------------------------------------
-//
-void CxuiViewManager::startEventMonitors()
-{
-    CX_DEBUG_ENTER_FUNCTION();
-    bool ok = false;
-
-    mSettingsManager = new XQSettingsManager(this);
-    ok = connect(mSettingsManager, SIGNAL(valueChanged(XQSettingsKey, QVariant)),
-                 this,               SLOT(eventMonitor(XQSettingsKey, QVariant)));
-    CX_DEBUG_ASSERT(ok);
-
-    // Keyguard status (locked / unlocked)
-    XQSettingsKey keyguard(XQSettingsKey::TargetPublishAndSubscribe,
-                           KPSUidAvkonDomain.iUid,
-                           KAknKeyguardStatus);
-
-    QVariant value = mSettingsManager->readItemValue(keyguard);
-    if (value == QVariant::Int) {
-        mKeyLockState = value.toInt();
-    }
-    ok = mSettingsManager->startMonitoring(keyguard);
-    CX_DEBUG_ASSERT(ok);
-
-    // Battery status (ok / low / empty)
-    XQSettingsKey battery(XQSettingsKey::TargetPublishAndSubscribe,
-                          KPSUidHWRMPowerState.iUid,
-                          KHWRMBatteryStatus);
-    value = mSettingsManager->readItemValue(battery);
-    if (value == QVariant::Int) {
-        mBatteryStatus = value.toInt();
-    }
-    ok = mSettingsManager->startMonitoring(battery);
-    CX_DEBUG_ASSERT(ok);
-
-    CX_DEBUG_EXIT_FUNCTION();
-}
-
-
-
-// ---------------------------------------------------------------------------
 // CxuiViewManager::connectCaptureKeySignals
 //
 // ---------------------------------------------------------------------------
@@ -599,17 +492,17 @@
     CX_DEBUG_ENTER_FUNCTION();
 
     // Disconnect all existing capture key signals
-    mKeyHandler.disconnect();
+    mKeyHandler->disconnect();
 
     QObject *currentView = mMainWindow.currentView();
 
     if (currentView) {
         // If the view class does not implement the named slot, the connect will fail
         // and output some warnings as debug prints. This is by design.
-        connect(&mKeyHandler, SIGNAL(autofocusKeyPressed()),  currentView, SLOT(handleAutofocusKeyPressed()));
-        connect(&mKeyHandler, SIGNAL(autofocusKeyReleased()), currentView, SLOT(handleAutofocusKeyReleased()));
-        connect(&mKeyHandler, SIGNAL(captureKeyPressed()),    currentView, SLOT(handleCaptureKeyPressed()));
-        connect(&mKeyHandler, SIGNAL(captureKeyReleased()),   currentView, SLOT(handleCaptureKeyReleased()));
+        connect(mKeyHandler, SIGNAL(autofocusKeyPressed()),  currentView, SLOT(handleAutofocusKeyPressed()));
+        connect(mKeyHandler, SIGNAL(autofocusKeyReleased()), currentView, SLOT(handleAutofocusKeyReleased()));
+        connect(mKeyHandler, SIGNAL(captureKeyPressed()),    currentView, SLOT(handleCaptureKeyPressed()));
+        connect(mKeyHandler, SIGNAL(captureKeyReleased()),   currentView, SLOT(handleCaptureKeyReleased()));
     }
 
     CX_DEBUG_EXIT_FUNCTION();
@@ -642,10 +535,12 @@
         connect(this, SIGNAL(focusGained()),  mStandbyHandler, SLOT(handleMouseEvent()), Qt::UniqueConnection);
 
         // connecting key events to standby.
-        connect(&mKeyHandler, SIGNAL(autofocusKeyPressed()),  mStandbyHandler, SLOT(stopTimer()), Qt::UniqueConnection);
-        connect(&mKeyHandler, SIGNAL(autofocusKeyReleased()), mStandbyHandler, SLOT(startTimer()), Qt::UniqueConnection);
-        connect(&mKeyHandler, SIGNAL(captureKeyPressed()),    mStandbyHandler, SLOT(startTimer()), Qt::UniqueConnection);
-        connect(&mKeyHandler, SIGNAL(captureKeyReleased()),   mStandbyHandler, SLOT(startTimer()), Qt::UniqueConnection);
+        connect(mKeyHandler, SIGNAL(autofocusKeyPressed()),  mStandbyHandler, SLOT(stopTimer()), Qt::UniqueConnection);
+        connect(mKeyHandler, SIGNAL(autofocusKeyReleased()), mStandbyHandler, SLOT(startTimer()), Qt::UniqueConnection);
+        connect(mKeyHandler, SIGNAL(captureKeyPressed()),    mStandbyHandler, SLOT(startTimer()), Qt::UniqueConnection);
+        connect(mKeyHandler, SIGNAL(captureKeyReleased()),   mStandbyHandler, SLOT(startTimer()), Qt::UniqueConnection);
+        connect(this, SIGNAL(disableStandbyTimer()), mStandbyHandler, SLOT(stopTimer()), Qt::UniqueConnection);
+        connect(this, SIGNAL(startStandbyTimer()), mStandbyHandler, SLOT(startTimer()), Qt::UniqueConnection);
 
         // connecting pre-capture view signals to standby.
         connect(currentView, SIGNAL(startStandbyTimer()), mStandbyHandler, SLOT(startTimer()), Qt::UniqueConnection);
@@ -656,6 +551,10 @@
         // connecting precapture view signals to viewmanager slots
         connect(currentView, SIGNAL(changeToPostcaptureView()), this, SLOT(changeToPostcaptureView()), Qt::UniqueConnection);
         connect(currentView, SIGNAL(changeToPrecaptureView()),  this, SLOT(changeToPrecaptureView()), Qt::UniqueConnection);
+
+        //connecting scene modes signal
+        connect(currentView, SIGNAL(showScenesView()), this, SLOT(showScenesView()), Qt::UniqueConnection);
+
         connect(currentView, SIGNAL(switchCamera()), this, SLOT(switchCamera()), Qt::UniqueConnection);
 
         // connecting error signals from precapture view to errormanager.
@@ -679,6 +578,7 @@
     QObject *currentView = mMainWindow.currentView();
     if (currentView == mPostcaptureView) {
         // connecting view manager focus events to pre-capture views
+        connect(this, SIGNAL(focusGained()),  currentView, SLOT(startTimers()), Qt::UniqueConnection);
         connect(this, SIGNAL(focusLost()),    currentView, SLOT(handleFocusLost()), Qt::UniqueConnection);
         connect(currentView, SIGNAL(changeToPrecaptureView()), mStandbyHandler, SLOT(startTimer()), Qt::UniqueConnection);
 
@@ -699,7 +599,7 @@
     CX_DEBUG_ENTER_FUNCTION();
 
     // Disconnect all existing capture key signals
-    mKeyHandler.disconnect();
+    mKeyHandler->disconnect();
 
     disconnect(SIGNAL(focusGained()));
     disconnect(SIGNAL(focusLost()));
@@ -708,6 +608,40 @@
     CX_DEBUG_EXIT_FUNCTION();
 }
 
+/*!
+* Raise application to foreground if it's currently (fully) in background.
+*/
+void CxuiViewManager::toForeground()
+{
+    CX_DEBUG_ENTER_FUNCTION();
+
+    if (mApplicationMonitor
+     && mApplicationMonitor->foregroundState() == CxuiApplicationFrameworkMonitor::ForegroundFullyLost) {
+        // Bring to foreground and gain focus.
+        CX_DEBUG(("CxuiViewManager - fully in background, bringing to foreground now."));
+        mMainWindow.raise();
+        mMainWindow.activateWindow();
+    }
+
+    CX_DEBUG_EXIT_FUNCTION();
+}
+
+/*!
+* Handle change in foreground state.
+*/
+void CxuiViewManager::handleForegroundStateChanged(CxuiApplicationFrameworkMonitor::ForegroundState state)
+{
+    switch (state) {
+    case CxuiApplicationFrameworkMonitor::ForegroundPartiallyLost:
+        break;
+    case CxuiApplicationFrameworkMonitor::ForegroundFullyLost:
+        aboutToLooseFocus();
+        break;
+    case CxuiApplicationFrameworkMonitor::ForegroundOwned:
+        aboutToGainFocus();
+        break;
+    }
+}
 
 // ---------------------------------------------------------------------------
 // CxuiViewManager::aboutToLooseFocus()
@@ -721,6 +655,10 @@
     emit focusLost();
     disconnectSignals();
 
+    // We do not stop listening to capture key events even if we go to background,
+    // as capture key brings us back to foreground.
+    connect(mKeyHandler, SIGNAL(captureKeyPressed()), this, SLOT(toForeground()));
+
     CX_DEBUG_EXIT_FUNCTION();
 }
 
@@ -734,6 +672,9 @@
 {
     CX_DEBUG_ENTER_FUNCTION();
 
+    // Disconnect capture key event and bringing us to foreground connection (if there is one).
+    disconnect(mKeyHandler, SIGNAL(captureKeyPressed()), this, SLOT(toForeground()));
+
     // we are getting the focus.
     if (mMainWindow.currentView() != mPostcaptureView) {
         connectPreCaptureSignals();
@@ -741,68 +682,21 @@
         connectPostCaptureSignals();
     }
 
+    if (mKeyHandler) {
+        mKeyHandler->listenKeys(true);
+    }
     emit focusGained();
 
     CX_DEBUG_EXIT_FUNCTION();
 }
 
-
-// ---------------------------------------------------------------------------
-// CxuiViewManager::eventMonitor
-//
-// ---------------------------------------------------------------------------
-//
-void CxuiViewManager::eventMonitor( const XQSettingsKey& key, const QVariant& value )
+/*!
+* Handle battery emptying
+*/
+void CxuiViewManager::handleBatteryEmpty()
 {
     CX_DEBUG_ENTER_FUNCTION();
-
-    if (key.uid() == KPSUidAvkonDomain.iUid && key.key() == KAknKeyguardStatus) {
-        CX_DEBUG(("new Keyguard value = %d, mKeyLockState = %d", value.toInt(), mKeyLockState));
-        if (mSettingsManager->error() == XQSettingsManager::NoError) {
-            // New key guard state
-            int newKeyLockState = value.toInt();
-
-            // Check if the keylock value has actually changed
-            bool keylockValueChanged = (newKeyLockState != mKeyLockState);
-            mKeyLockState = newKeyLockState;
-
-            // Ignore unlock events when on background
-            bool unlockedOnBackground = (!mFocused && newKeyLockState == EKeyguardNotActive);
-
-            if (keylockValueChanged &&
-                !unlockedOnBackground) {
-                // Key lock value changed and we need to handle it
-                if (mKeyLockState == EKeyguardNotActive) {
-                    // All other keylock states are handled as a active in S60 code
-                    aboutToGainFocus();
-                } else {
-                    mFocused = false;
-                    aboutToLooseFocus();
-                }
-            }
-        } else {
-            // Error from settings manager - ignore
-            CX_DEBUG(("mSettingsManager indicated error %d for key guard status", mSettingsManager->error()));
-        }
-    } else if (key.uid() == KPSUidHWRMPowerState.iUid && key.key() == KHWRMBatteryStatus ) {
-        CX_DEBUG(("new battery status = %d, mBatteryStatus = %d", value.toInt(), mBatteryStatus));
-
-        if (mSettingsManager->error() == XQSettingsManager::NoError) {
-
-            // If status changed, check if battery is going empty.
-            const int newState = value.toInt();
-            if( newState != mBatteryStatus ) {
-                mBatteryStatus = newState;
-
-                // Notify that battery is almost empty,
-                // need to stop any recordings etc.
-                if( mBatteryStatus == EBatteryStatusEmpty ) {
-                    emit batteryEmpty();
-                }
-            }
-        }
-    }
-
+    emit batteryEmpty();
     CX_DEBUG_EXIT_FUNCTION();
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxui/src/cxuizoomslider.cpp	Thu May 13 21:30:19 2010 +0300
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <QGraphicsSceneMouseEvent>
+#include "cxuizoomslider.h"
+
+/*!
+    \class CxuiZoomSlider
+    \brief CxuiZoomSlider is a camera specific slider that is derived from HbSlider
+
+    CxuiZoomslider has been created so that we are able to control and filter user
+    mouse press events. All mouse press events that happen in slider rect are
+    accepted in this class so that they won't be given any other components.
+    This has to be done to prevent the slider to dismiss when accidentally 
+    missing e.g.slider thumb touch area (camera view underneath will get the 
+    event and hide the slider). 
+    
+*/
+
+CxuiZoomSlider::CxuiZoomSlider(QGraphicsItem *parentItem)
+: HbSlider(parentItem)
+{
+
+}
+
+
+CxuiZoomSlider::~CxuiZoomSlider()
+{
+
+}
+
+
+/*
+* CxuiZoomSlider::mousePressEvent()
+*/
+void CxuiZoomSlider::mousePressEvent(QGraphicsSceneMouseEvent *event)
+{
+    HbSlider::mousePressEvent(event);
+    
+    // accept event so that it will not be given to the components
+    // underneath this slider
+    event->accept();
+}
--- a/camerauis/cameraxui/cxui/src/main.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/src/main.cpp	Thu May 13 21:30:19 2010 +0300
@@ -14,33 +14,35 @@
 * Description:
 *
 */
+
+#include <coemain.h>
+#include <eikenv.h>
 #include <QApplication>
 #include <QGraphicsProxyWidget>
-#include <hbapplication.h>
+// needed for localization
+#include <QTranslator>
+#include <QLocale>
 #include <hbmainwindow.h>
-#include <coemain.h>
-#include <eikenv.h>
+#include <xqserviceutil.h>
 
 #include "cxeengine.h"
 #include "cxecameradevicecontrol.h"
-#include "cxuistillprecaptureview.h"
-#include "cxuivideoprecaptureview.h"
-#include "cxuicapturekeyhandler.h"
+#include "cxuiapplication.h"
 #include "cxuiviewmanager.h"
 #include "cxutils.h"
+#include "cxuiserviceprovider.h"
+
 #include "OstTraceDefinitions.h"
 #ifdef OST_TRACE_COMPILER_IN_USE
 #include "mainTraces.h"
 #endif
 
-// needed for localization
-#include <QTranslator>
-#include <QLocale>
+using namespace Cxe;
 
-#include "cxuiserviceprovider.h"
-#include <xqserviceutil.h>
-
-using namespace Cxe;
+// CONSTANTS
+const QString TRANSLATIONS_PATH = "z:/resource/qt/translations/";
+const QString TRANSLATIONS_FILE_NAME = "camera_";
+const QString COMMON_TRANSLATIONS_FILE_NAME = "common_";
 
 int main(int argc, char *argv[])
 {
@@ -49,37 +51,16 @@
 
     Q_INIT_RESOURCE(cxui);
 
-    OstTrace0( camerax_performance, DUP7__MAIN, "msg: e_CX_HBAPP_CREATION 1" );
-    HbApplication app(argc, argv);
-    OstTrace0( camerax_performance, DUP8__MAIN, "msg: e_CX_HBAPP_CREATION 0" );
-
-    // Load the language specific localization files: application + common
-    QTranslator translator;
-    QString lang = QLocale::system().name();
-    QString path = "z:/resource/qt/translations/";
-
-    CX_DEBUG(("CxUI: loading translation"));
-    bool ret = false;
-    ret = translator.load(path + "camera_" + lang);
-    CX_DEBUG(("load ok=%d", ret));
-    app.installTranslator( &translator );
-
-    QTranslator commonTranslator;
-    commonTranslator.load(path + "common_" + lang);
-    app.installTranslator(&commonTranslator);
-
-    OstTrace0( camerax_performance, DUP11__MAIN, "msg: e_CX_HBMAINWINDOW_CREATION 1" );
-    HbMainWindow mainWindow(0, Hb::WindowFlagTransparent |
-                               Hb::WindowFlagNoBackground);
-    mainWindow.setAttribute(Qt::WA_NoBackground);
-    OstTrace0( camerax_performance, DUP12__MAIN, "msg: e_CX_HBMAINWINDOW_CREATION 0" );
+    OstTrace0( camerax_performance, DUP1__MAIN, "msg: e_CX_HBAPP_CREATION 1" );
+    CxuiApplication app(argc, argv);
+    OstTrace0( camerax_performance, DUP2__MAIN, "msg: e_CX_HBAPP_CREATION 0" );
 
     // Creating and initializing engine as early as possible.
     // Reserve and power on can then proceed in parallel with
     // ui construction.
-    OstTrace0( camerax_performance, DUP1__MAIN, "msg: e_CX_CREATE_ENGINE 1" );
+    OstTrace0( camerax_performance, DUP7__MAIN, "msg: e_CX_CREATE_ENGINE 1" );
     CxeEngine *eng = CxeEngine::createEngine();
-    OstTrace0( camerax_performance, DUP2__MAIN, "msg: e_CX_CREATE_ENGINE 0" );
+    OstTrace0( camerax_performance, DUP8__MAIN, "msg: e_CX_CREATE_ENGINE 0" );
 
     if (XQServiceUtil::isService()) {
         // Embedded mode.  Engine is inited to correct mode
@@ -89,42 +70,65 @@
         CX_DEBUG(("CxUI: done"));
     } else {
         // Normal mode. Init engine now.
-        OstTrace0( camerax_performance, DUP5__MAIN, "msg: e_CX_INIT_ENGINE 1" );
-        eng->initMode(Cxe::ImageMode);
-        OstTrace0( camerax_performance, DUP6__MAIN, "msg: e_CX_INIT_ENGINE 0" );
+        OstTrace0( camerax_performance, DUP9__MAIN, "msg: e_CX_INIT_ENGINE 1" );
+		 //! @todo temporarily commented as part of a hack to change the startup sequence
+         // to avoid GOOM issues
+        //eng->initMode(Cxe::ImageMode);
+        OstTrace0( camerax_performance, DUP10__MAIN, "msg: e_CX_INIT_ENGINE 0" );
     }
 
-    // If the parent of the engine is set to be the
-    // HbApplication, then for some reason the engine won't be deleted
-    // on shutdown (or at least there will be no traces visible of it)
-    //eng->setParent(&app); // HbApplication will now own the engine
-
-    CxuiCaptureKeyHandler keyHandler(*eng);
+    // Load the language specific localization files: application + common
+    OstTrace0( camerax_performance, DUP3__MAIN, "msg: e_CX_LOAD_TRANSLATIONS 1" );
+    QTranslator translator;
+    QString lang = QLocale::system().name();
 
-    OstTrace0( camerax_performance, DUP3__MAIN, "msg: e_CX_CREATE_VIEW_MANAGER 1" );
-    CxuiViewManager viewManager(mainWindow, *eng, keyHandler);
-    OstTrace0( camerax_performance, DUP4__MAIN, "msg: e_CX_CREATE_VIEW_MANAGER 0" );
+    CX_DEBUG(("CxUI: loading translation"));
+    bool ret = false;
+    ret = translator.load(TRANSLATIONS_PATH + TRANSLATIONS_FILE_NAME + lang);
+    CX_DEBUG(("load ok=%d", ret));
+    app.installTranslator( &translator );
 
-    // Setting the viewmanager as the parent of the engine fixes the deletion issue
-    eng->setParent(&viewManager);
+    QTranslator commonTranslator;
+    CX_DEBUG(("CxUI: loading common translation"));
+    ret = false;
+    ret = commonTranslator.load(TRANSLATIONS_PATH + COMMON_TRANSLATIONS_FILE_NAME + lang);
+    CX_DEBUG(("load ok=%d", ret));
+    app.installTranslator(&commonTranslator);
+    OstTrace0( camerax_performance, DUP4__MAIN, "msg: e_CX_LOAD_TRANSLATIONS 0" );
 
-    OstTrace0( camerax_performance, DUP17__MAIN, "msg: e_CX_HBMAINWINDOWORIENT 1" );
-    mainWindow.setOrientation(Qt::Horizontal);
-    OstTrace0( camerax_performance, DUP18__MAIN, "msg: e_CX_HBMAINWINDOWORIENT 0" );
+    OstTrace0( camerax_performance, DUP5__MAIN, "msg: e_CX_MAINWINDOW_CREATION 1" );
+    HbMainWindow *mainWindow = new HbMainWindow(0, Hb::WindowFlagTransparent |
+                                                   Hb::WindowFlagNoBackground);
+    mainWindow->setAttribute(Qt::WA_NoBackground);
+    OstTrace0( camerax_performance, DUP6__MAIN, "msg: e_CX_MAINWINDOW_CREATION 0" );
+
+    OstTrace0( camerax_performance, DUP11__MAIN, "msg: e_CX_CREATE_VIEW_MANAGER 1" );
+    CxuiViewManager *viewManager = new CxuiViewManager(app, *mainWindow, *eng);
+    OstTrace0( camerax_performance, DUP12__MAIN, "msg: e_CX_CREATE_VIEW_MANAGER 0" );
 
-    OstTrace0( camerax_performance, DUP13__MAIN, "msg: e_CX_MAINWINDOW_FULLSCREEN 1" );
-    mainWindow.showFullScreen();
-    OstTrace0( camerax_performance, DUP14__MAIN, "msg: e_CX_MAINWINDOW_FULLSCREEN 0" );
+    OstTrace0( camerax_performance, DUP13__MAIN, "msg: e_CX_MAINWINDOW_SETORIENTATION 1" );
+    mainWindow->setOrientation(Qt::Horizontal);
+    OstTrace0( camerax_performance, DUP14__MAIN, "msg: e_CX_MAINWINDOW_SETORIENTATION 0" );
+
+    OstTrace0( camerax_performance, DUP15__MAIN, "msg: e_CX_MAINWINDOW_FULLSCREEN 1" );
+    mainWindow->showFullScreen();
+    OstTrace0( camerax_performance, DUP16__MAIN, "msg: e_CX_MAINWINDOW_FULLSCREEN 0" );
 
-    OstTrace0( camerax_performance, DUP15__MAIN, "msg: e_CX_PREPAREWINDOW 1" );
-    viewManager.prepareWindow();
-
-    OstTrace0( camerax_performance, DUP16__MAIN, "msg: e_CX_PREPAREWINDOW 0" );
-
+    OstTrace0( camerax_performance, DUP17__MAIN, "msg: e_CX_PREPAREWINDOW 1" );
+    viewManager->prepareWindow();
+    OstTrace0( camerax_performance, DUP18__MAIN, "msg: e_CX_PREPAREWINDOW 0" );
+    //! @todo initMode call added here as a temporary hack to change the startup sequence
+	// in order to avoid GOOM issues
+	  User::After(2000000);
+    eng->initMode(Cxe::ImageMode);
     int returnValue = app.exec();
 
     // delete service provider instance
     CxuiServiceProvider::destroy();
 
+    delete viewManager;
+    delete mainWindow;
+    delete eng;
+
     return returnValue;
 }
--- a/camerauis/cameraxui/cxui/traces/OstTraceDefinitions.h	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/traces/OstTraceDefinitions.h	Thu May 13 21:30:19 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -11,7 +11,7 @@
 *
 * Contributors:
 *
-* Description:
+* Description: 
 *
 */
 #ifndef __OSTTRACEDEFINITIONS_H__
--- a/camerauis/cameraxui/cxui/tsrc/cxuitest.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/tsrc/cxuitest.pro	Thu May 13 21:30:19 2010 +0300
@@ -30,7 +30,7 @@
                ./cxui \
                ../traces
 QT += testlib
-HB += hbcore hbwidgets hbtools hbfeedback hbutils
+HB += hbcore hbwidgets hbutils hbfeedback
 CONFIG += qtestlib hb symbian_test
 LIBS += -lcxengine \
         -lcommonui \
--- a/camerauis/cameraxui/cxui/tsrc/cxuitestbat.pro	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/tsrc/cxuitestbat.pro	Thu May 13 21:30:19 2010 +0300
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
 # This component and the accompanying materials are made available
 # under the terms of "Eclipse Public License v1.0"
@@ -35,7 +35,7 @@
 
 QT += testlib
 CONFIG += qtestlib hb symbian_test
-HB += hbcore hbwidgets hbtools hbfeedback hbutils
+HB += hbcore hbwidgets hbfeedback hbutils
 
 LIBS += -lcxengine \
         -lcommonui \
@@ -53,9 +53,7 @@
     cxuiautofocusreticule.cpp \
     cxuiprecaptureview.cpp \
     cxuivideoprecaptureview.cpp \
-    cxuivideoprecaptureview2.cpp \
     cxuistillprecaptureview.cpp \
-    cxuistillprecaptureview2.cpp \
     cxuipostcaptureview.cpp \
     cxuicapturekeyhandler.cpp \
     cxuiviewmanager.cpp \
@@ -65,8 +63,6 @@
     cxuisettingradiobuttonlist.cpp \
     cxuisettingscenemoderadiobuttonlist.cpp \
     cxuiscenelabel.cpp \
-    cxuisettingbutton.cpp \
-    cxuisettingbuttoncontainer.cpp \
     cxuiselftimer.cpp \
 	cxuierrormanager.cpp \
     cxuistandby.cpp
@@ -75,21 +71,17 @@
     cxuiautofocusreticule.h \
     cxuiprecaptureview.h \
     cxuistillprecaptureview.h \
-    cxuistillprecaptureview2.h \
     cxuivideoprecaptureview.h \
-    cxuivideoprecaptureview2.h \
     cxuipostcaptureview.h \
     cxuicapturekeyhandler.h \
     cxuiviewmanager.h \
     cxuienums.h \
     cxuidocumentloader.h \
     cxuidisplaypropertyhandler.h \
-	cxuisettingbutton.h \
 	cxuisettingslider.h \
     cxuisettingradiobuttonlist.h \
     cxuisettingscenemoderadiobuttonlist.h \
     cxuiscenelabel.h \
-	cxuisettingbuttoncontainer.h \
     cxuiselftimer.h \
 	cxuierrormanager.h \
     cxuistandby.h \