Expose camera status to QML Camera element

It's exposed as Camera.cameraStatus property.

Change-Id: Id3b477266d3a666b7a2a61cd4579f0e3f873d3b8
Reviewed-by: Mithra Pattison <mithra.pattison@nokia.com>
Reviewed-by: Ling Hu <ling.hu@nokia.com>
This commit is contained in:
Dmytro Poplavskiy
2012-05-16 13:25:38 +10:00
committed by Qt by Nokia
parent b96ca81108
commit be6d80e57a
2 changed files with 75 additions and 0 deletions

View File

@@ -186,6 +186,7 @@ QDeclarativeCamera::QDeclarativeCamera(QObject *parent) :
connect(m_camera, SIGNAL(captureModeChanged(QCamera::CaptureModes)), this, SIGNAL(captureModeChanged())); connect(m_camera, SIGNAL(captureModeChanged(QCamera::CaptureModes)), this, SIGNAL(captureModeChanged()));
connect(m_camera, SIGNAL(lockStatusChanged(QCamera::LockStatus,QCamera::LockChangeReason)), this, SIGNAL(lockStatusChanged())); connect(m_camera, SIGNAL(lockStatusChanged(QCamera::LockStatus,QCamera::LockChangeReason)), this, SIGNAL(lockStatusChanged()));
connect(m_camera, SIGNAL(stateChanged(QCamera::State)), this, SLOT(_q_updateState(QCamera::State))); connect(m_camera, SIGNAL(stateChanged(QCamera::State)), this, SLOT(_q_updateState(QCamera::State)));
connect(m_camera, SIGNAL(statusChanged(QCamera::Status)), this, SIGNAL(cameraStatusChanged()));
connect(m_camera, SIGNAL(error(QCamera::Error)), this, SLOT(_q_error(QCamera::Error))); connect(m_camera, SIGNAL(error(QCamera::Error)), this, SLOT(_q_error(QCamera::Error)));
// Note we map availabilityError->availability // Note we map availabilityError->availability
@@ -323,6 +324,63 @@ QDeclarativeCamera::State QDeclarativeCamera::cameraState() const
return m_componentComplete ? QDeclarativeCamera::State(m_camera->state()) : m_pendingState; return m_componentComplete ? QDeclarativeCamera::State(m_camera->state()) : m_pendingState;
} }
/*!
\qmlproperty enumeration QtMultimedia5::Camera::cameraStatus
The current status of the camera instance.
\table
\header \li Value \li Description
\row \li ActiveStatus
\li The camera has been started and can produce data,
viewfinder displays video frames.
Depending on backend, changing some camera settings like
capture mode, codecs or resolution in ActiveState may lead
to changing the camera status to LoadedStatus and StartingStatus while
the settings are applied and back to ActiveStatus when the camera is ready.
\row \li StartingStatus
\li The camera is starting in result of state transition to Camera.ActiveState.
The camera service is not ready to capture yet.
\row \li StoppingStatus
\li The camera is stopping in result of state transition from Camera.ActiveState
to Camera.LoadedState or Camera.UnloadedState.
\row \li StandbyStatus
\li The camera is in the power saving standby mode.
The camera may enter standby mode after some time of inactivity
in the Camera.LoadedState state.
\row \li LoadedStatus
\li The camera is loaded and ready to be configured.
This status indicates the camera device is opened and
it's possible to query for supported image and video capture settings,
like resolution, framerate and codecs.
\row \li LoadingStatus
\li The camera device loading in result of state transition from
Camera.UnloadedState to Camera.LoadedState or Camera.ActiveState.
\row \li UnloadingStatus
\li The camera device is unloading in result of state transition from
Camera.LoadedState or Camera.ActiveState to Camera.UnloadedState.
\row \li UnloadedStatus
\li The initial camera status, with camera not loaded.
The camera capabilities including supported capture settings may be unknown.
\row \li UnavailableStatus
\li The camera or camera backend is not available.
\endtable
*/
QDeclarativeCamera::Status QDeclarativeCamera::cameraStatus() const
{
return QDeclarativeCamera::Status(m_camera->status());
}
void QDeclarativeCamera::setCameraState(QDeclarativeCamera::State state) void QDeclarativeCamera::setCameraState(QDeclarativeCamera::State state)
{ {
if (!m_componentComplete) { if (!m_componentComplete) {

View File

@@ -81,6 +81,7 @@ class QDeclarativeCamera : public QObject, public QQmlParserStatus
Q_PROPERTY(CaptureMode captureMode READ captureMode WRITE setCaptureMode NOTIFY captureModeChanged) Q_PROPERTY(CaptureMode captureMode READ captureMode WRITE setCaptureMode NOTIFY captureModeChanged)
Q_PROPERTY(State cameraState READ cameraState WRITE setCameraState NOTIFY cameraStateChanged) Q_PROPERTY(State cameraState READ cameraState WRITE setCameraState NOTIFY cameraStateChanged)
Q_PROPERTY(Status cameraStatus READ cameraStatus NOTIFY cameraStatusChanged)
Q_PROPERTY(LockStatus lockStatus READ lockStatus NOTIFY lockStatusChanged) Q_PROPERTY(LockStatus lockStatus READ lockStatus NOTIFY lockStatusChanged)
Q_PROPERTY(Error errorCode READ errorCode NOTIFY errorChanged) Q_PROPERTY(Error errorCode READ errorCode NOTIFY errorChanged)
Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged) Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged)
@@ -102,6 +103,7 @@ class QDeclarativeCamera : public QObject, public QQmlParserStatus
Q_ENUMS(CaptureMode) Q_ENUMS(CaptureMode)
Q_ENUMS(State) Q_ENUMS(State)
Q_ENUMS(Status)
Q_ENUMS(LockStatus) Q_ENUMS(LockStatus)
Q_ENUMS(Error) Q_ENUMS(Error)
@@ -127,6 +129,19 @@ public:
UnloadedState = QCamera::UnloadedState UnloadedState = QCamera::UnloadedState
}; };
enum Status
{
UnavailableStatus = QCamera::UnavailableStatus,
UnloadedStatus = QCamera::UnloadedStatus,
LoadingStatus = QCamera::LoadingStatus,
UnloadingStatus = QCamera::UnloadingStatus,
LoadedStatus = QCamera::LoadedStatus,
StandbyStatus = QCamera::StandbyStatus,
StartingStatus = QCamera::StartingStatus,
StoppingStatus = QCamera::StoppingStatus,
ActiveStatus = QCamera::ActiveStatus
};
enum LockStatus enum LockStatus
{ {
Unlocked = QCamera::Unlocked, Unlocked = QCamera::Unlocked,
@@ -220,6 +235,7 @@ public:
CaptureMode captureMode() const; CaptureMode captureMode() const;
State cameraState() const; State cameraState() const;
Status cameraStatus() const;
Error errorCode() const; Error errorCode() const;
QString errorString() const; QString errorString() const;
@@ -254,6 +270,7 @@ Q_SIGNALS:
void captureModeChanged(); void captureModeChanged();
void cameraStateChanged(QDeclarativeCamera::State); void cameraStateChanged(QDeclarativeCamera::State);
void cameraStatusChanged();
void lockStatusChanged(); void lockStatusChanged();