diff options
Diffstat (limited to 'tests/auto/unit/qmultimedia_common/mockcameracontrol.h')
-rw-r--r-- | tests/auto/unit/qmultimedia_common/mockcameracontrol.h | 88 |
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; }; |