--- 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 ¤tScene, 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 \