QObject(parent),
m_cam(0),
m_mode(0),
- m_seq(0) {
+ m_seq(0),
+ m_previewEnabled(true) {
}
}
if (m_cam) {
+ QObject::disconnect(m_cam, SIGNAL(prepareForDeviceChange()), this, SLOT(prepareForDeviceChange()));
QObject::disconnect(m_cam, SIGNAL(deviceChanged()), this, SLOT(deviceChanged()));
QObject::disconnect(m_cam, SIGNAL(deviceChanged()), this, SIGNAL(isReadyChanged()));
}
m_cam = camera;
if (m_cam) {
+ QObject::connect(m_cam, SIGNAL(prepareForDeviceChange()), this, SLOT(prepareForDeviceChange()));
QObject::connect(m_cam, SIGNAL(deviceChanged()), this, SLOT(deviceChanged()));
QObject::connect(m_cam, SIGNAL(deviceChanged()), this, SIGNAL(isReadyChanged()));
}
}
void Mode::deviceChanged() {
- if (m_mode) {
- QObject::disconnect(m_mode, SIGNAL(canCaptureChanged()), this, SIGNAL(canCaptureChanged()));
- QObject::disconnect(m_mode, SIGNAL(saved(const QString&)),
- this, SIGNAL(saved(const QString&)));
- QObject::disconnect(m_mode, SIGNAL(previewAvailable(const QImage&, const QString&)),
- this, SLOT(gotPreview(const QImage&, const QString&)));
- QObject::disconnect(m_mode, SIGNAL(activeChanged()), this, SIGNAL(activeChanged()));
- QObject::disconnect(m_mode, SIGNAL(activeChanged()), this, SIGNAL(canCaptureChanged()));
- QObject::disconnect(m_cam->device(), SIGNAL(idleStateChanged(bool)),
- this, SIGNAL(canCaptureChanged()));
- QObject::disconnect(m_cam->device(), SIGNAL(runningStateChanged(bool)),
- this, SIGNAL(canCaptureChanged()));
-
- preChangeMode();
- }
-
if (!m_cam || !m_cam->device()) {
return;
}
QObject::connect(m_cam->device(), SIGNAL(runningStateChanged(bool)),
this, SIGNAL(canCaptureChanged()));
+ setPreviewState();
+
postChangeMode();
}
bool Mode::isReady() const {
return m_mode;
}
+
+void Mode::prepareForDeviceChange() {
+ if (m_mode) {
+ QObject::disconnect(m_mode, SIGNAL(canCaptureChanged()), this, SIGNAL(canCaptureChanged()));
+ QObject::disconnect(m_mode, SIGNAL(saved(const QString&)),
+ this, SIGNAL(saved(const QString&)));
+ QObject::disconnect(m_mode, SIGNAL(previewAvailable(const QImage&, const QString&)),
+ this, SLOT(gotPreview(const QImage&, const QString&)));
+ QObject::disconnect(m_mode, SIGNAL(activeChanged()), this, SIGNAL(activeChanged()));
+ QObject::disconnect(m_mode, SIGNAL(activeChanged()), this, SIGNAL(canCaptureChanged()));
+ QObject::disconnect(m_cam->device(), SIGNAL(idleStateChanged(bool)),
+ this, SIGNAL(canCaptureChanged()));
+ QObject::disconnect(m_cam->device(), SIGNAL(runningStateChanged(bool)),
+ this, SIGNAL(canCaptureChanged()));
+
+ preChangeMode();
+ }
+}
+
+bool Mode::isPreviewEnabled() {
+ return m_previewEnabled;
+}
+
+void Mode::setPreviewEnabled(bool enabled) {
+ if (enabled != m_previewEnabled) {
+ m_previewEnabled = enabled;
+
+ if (m_mode) {
+ setPreviewState();
+ }
+
+ emit enablePreviewChanged();
+ }
+}
+
+void Mode::setPreviewState() {
+ if (m_previewEnabled) {
+ m_mode->enablePreview();
+ }
+ else {
+ m_mode->disablePreview();
+ }
+}