QObject::connect(m_vf, SIGNAL(renderAreaChanged()), this, SIGNAL(renderAreaChanged()));
QObject::connect(m_vf, SIGNAL(videoResolutionChanged()), this, SIGNAL(videoResolutionChanged()));
+ QObject::connect(m_vf, SIGNAL(renderingEnabledChanged()), this, SIGNAL(renderingEnabledChanged()));
}
Camera::~Camera() {
}
VideoTorch *Camera::videoTorch() const {
-return m_videoTorch;
+ return m_videoTorch;
+}
+
+bool Camera::isRenderingEnabled() const {
+ return m_vf->isRenderingEnabled();
+}
+
+void Camera::setRenderingEnabled(bool enabled) {
+ m_vf->setRenderingEnabled(enabled);
}
Q_PROPERTY(VideoMute *videoMute READ videoMute NOTIFY videoMuteChanged);
Q_PROPERTY(VideoTorch *videoTorch READ videoTorch NOTIFY videoTorchChanged);
+ Q_PROPERTY(bool renderingEnabled READ isRenderingEnabled WRITE setRenderingEnabled NOTIFY renderingEnabledChanged);
+
Q_ENUMS(CameraMode);
public:
QRectF renderArea() const;
QSizeF videoResolution() const;
+ bool isRenderingEnabled() const;
+ void setRenderingEnabled(bool enabled);
+
signals:
void deviceCountChanged();
void deviceIdChanged();
void videoMuteChanged();
void videoTorchChanged();
+ void renderingEnabledChanged();
protected:
void geometryChanged(const QRectF& newGeometry, const QRectF& oldGeometry);
QtCamConfig *conf;
QtCamDevice *dev;
QtCamGraphicsViewfinder *q_ptr;
+ bool enabled;
};
QtCamGraphicsViewfinder::QtCamGraphicsViewfinder(QtCamConfig *config, QGraphicsItem *parent) :
d_ptr->dev = 0;
d_ptr->renderer = 0;
d_ptr->q_ptr = this;
+ d_ptr->enabled = true;
}
QtCamGraphicsViewfinder::~QtCamGraphicsViewfinder() {
painter->fillRect(boundingRect(), Qt::black);
- if (!d_ptr->renderer) {
+ if (!d_ptr->renderer || !d_ptr->enabled) {
return;
}
}
void QtCamGraphicsViewfinder::updateRequested() {
- update();
+ if (d_ptr->enabled) {
+ update();
+ }
}
void QtCamGraphicsViewfinder::stop() {
d_ptr->resetBackend();
+
+ setRenderingEnabled(true);
}
QRectF QtCamGraphicsViewfinder::renderArea() const {
return d_ptr->renderer->videoResolution();
}
+
+bool QtCamGraphicsViewfinder::isRenderingEnabled() const {
+ return d_ptr->enabled;
+}
+
+void QtCamGraphicsViewfinder::setRenderingEnabled(bool enabled) {
+ if (d_ptr->enabled != enabled) {
+ d_ptr->enabled = enabled;
+
+ emit renderingEnabledChanged();
+ }
+}
QRectF renderArea() const;
QSizeF videoResolution() const;
+ bool isRenderingEnabled() const;
+ void setRenderingEnabled(bool enabled);
+
signals:
void renderAreaChanged();
void videoResolutionChanged();
+ void renderingEnabledChanged();
protected:
void resizeEvent(QGraphicsSceneResizeEvent *event);
property bool modesVisible: true
property bool standbyVisible: true
property bool focusReticleVisible: true
+ property bool enableViewfinder: true
property alias previewAnimationRunning: preview.animationRunning
}
onStatusChanged: {
- if (status == PageStatus.Active) {
+ if (status == PageStatus.Activating && enableViewfinder) {
+ cam.renderingEnabled = true;
+ }
+ else if (status == PageStatus.Active) {
focusReticle.setRegionOfInterest();
+
+ if (!enableViewfinder) {
+ cam.renderingEnabled = false;
+ }
}
}
id: page
controlsVisible: false
policyMode: CameraResources.Image
- needsPipeline: false
+ enableViewfinder: false
standbyVisible: !Qt.application.active
Rectangle {
id: page
controlsVisible: false
policyMode: CameraResources.Video
- needsPipeline: false
+ enableViewfinder: false
standbyVisible: !Qt.application.active
Rectangle {
// TODO: postcapture
// TODO: flash not ready (battery low or flash not ready message)
// TODO: portrait/landscape
-// TODO: stop viewfinder in settings pages ?
// TODO: grid lines, face tracking
// TODO: select primary/secondary camera.
// TODO: disable debug builds.