summaryrefslogtreecommitdiff
path: root/tests/auto/unit/qmultimedia_common/mockcameracontrol.h
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/unit/qmultimedia_common/mockcameracontrol.h')
-rw-r--r--tests/auto/unit/qmultimedia_common/mockcameracontrol.h88
1 files changed, 83 insertions, 5 deletions
diff --git a/tests/auto/unit/qmultimedia_common/mockcameracontrol.h b/tests/auto/unit/qmultimedia_common/mockcameracontrol.h
index 95e9be7b3..fb686f92f 100644
--- a/tests/auto/unit/qmultimedia_common/mockcameracontrol.h
+++ b/tests/auto/unit/qmultimedia_common/mockcameracontrol.h
@@ -30,6 +30,7 @@
#define MOCKCAMERACONTROL_H
#include "qcameracontrol.h"
+#include <qtimer.h>
class MockCameraControl : public QCameraControl
{
@@ -92,11 +93,6 @@ public:
return mode == QCamera::CaptureStillImage || mode == QCamera::CaptureVideo;
}
- QCamera::LockTypes supportedLocks() const
- {
- return QCamera::LockExposure | QCamera::LockFocus | QCamera::LockWhiteBalance;
- }
-
bool canChangeProperty(PropertyChangeType changeType, QCamera::Status status) const
{
Q_UNUSED(status);
@@ -108,6 +104,66 @@ public:
return m_propertyChangesSupported;
}
+ QCamera::LockTypes supportedLocks() const
+ {
+ return QCamera::LockExposure | QCamera::LockFocus;
+ }
+
+ QCamera::LockStatus lockStatus(QCamera::LockType lock) const
+ {
+ switch (lock) {
+ case QCamera::LockExposure:
+ return m_exposureLock;
+ case QCamera::LockFocus:
+ return m_focusLock;
+ default:
+ return QCamera::Unlocked;
+ }
+ }
+
+ void searchAndLock(QCamera::LockTypes locks)
+ {
+ if (locks & QCamera::LockExposure) {
+ QCamera::LockStatus newStatus = locks & QCamera::LockFocus ? QCamera::Searching : QCamera::Locked;
+
+ if (newStatus != m_exposureLock)
+ emit lockStatusChanged(QCamera::LockExposure,
+ m_exposureLock = newStatus,
+ QCamera::UserRequest);
+ }
+
+ if (locks & QCamera::LockFocus) {
+ emit lockStatusChanged(QCamera::LockFocus,
+ m_focusLock = QCamera::Searching,
+ QCamera::UserRequest);
+
+ QTimer::singleShot(5, this, SLOT(focused()));
+ }
+ }
+
+ void unlock(QCamera::LockTypes locks) {
+ if (locks & QCamera::LockFocus && m_focusLock != QCamera::Unlocked) {
+ emit lockStatusChanged(QCamera::LockFocus,
+ m_focusLock = QCamera::Unlocked,
+ QCamera::UserRequest);
+ }
+
+ if (locks & QCamera::LockExposure && m_exposureLock != QCamera::Unlocked) {
+ emit lockStatusChanged(QCamera::LockExposure,
+ m_exposureLock = QCamera::Unlocked,
+ QCamera::UserRequest);
+ }
+ }
+
+ /* helper method to emit the signal with LockChangeReason */
+ void setLockChangeReason (QCamera::LockChangeReason lockChangeReason)
+ {
+ emit lockStatusChanged(QCamera::NoLock,
+ QCamera::Unlocked,
+ lockChangeReason);
+
+ }
+
/* helper method to emit the signal error */
void setError(QCamera::Error err, QString errorString)
{
@@ -125,6 +181,28 @@ public:
QCamera::CaptureModes m_captureMode;
QCamera::Status m_status;
bool m_propertyChangesSupported;
+
+
+private slots:
+ void focused()
+ {
+ if (m_focusLock == QCamera::Searching) {
+ emit lockStatusChanged(QCamera::LockFocus,
+ m_focusLock = QCamera::Locked,
+ QCamera::UserRequest);
+ }
+
+ if (m_exposureLock == QCamera::Searching) {
+ emit lockStatusChanged(QCamera::LockExposure,
+ m_exposureLock = QCamera::Locked,
+ QCamera::UserRequest);
+ }
+ }
+
+
+private:
+ QCamera::LockStatus m_focusLock = QCamera::Unlocked;
+ QCamera::LockStatus m_exposureLock = QCamera::Unlocked;
};