From: Mohammed Sameer Date: Thu, 27 Dec 2012 04:25:40 +0000 (+0200) Subject: Disable viewfinder in settings pages X-Git-Url: http://cgit.sxemacs.org/?p=harmattan%2Fcameraplus;a=commitdiff_plain;h=6be6d68dcb479c31c11baf14f81ff8539c618394 Disable viewfinder in settings pages --- diff --git a/imports/camera.cpp b/imports/camera.cpp index 03bf053..36815bd 100644 --- a/imports/camera.cpp +++ b/imports/camera.cpp @@ -73,6 +73,7 @@ Camera::Camera(QDeclarativeItem *parent) : 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() { @@ -412,5 +413,13 @@ VideoMute *Camera::videoMute() const { } 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); } diff --git a/imports/camera.h b/imports/camera.h index a826828..d34b7ed 100644 --- a/imports/camera.h +++ b/imports/camera.h @@ -80,6 +80,8 @@ class Camera : public QDeclarativeItem { 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: @@ -138,6 +140,9 @@ public: QRectF renderArea() const; QSizeF videoResolution() const; + bool isRenderingEnabled() const; + void setRenderingEnabled(bool enabled); + signals: void deviceCountChanged(); void deviceIdChanged(); @@ -166,6 +171,7 @@ signals: void videoMuteChanged(); void videoTorchChanged(); + void renderingEnabledChanged(); protected: void geometryChanged(const QRectF& newGeometry, const QRectF& oldGeometry); diff --git a/lib/qtcamgraphicsviewfinder.cpp b/lib/qtcamgraphicsviewfinder.cpp index 0cd418e..5dbbdf8 100644 --- a/lib/qtcamgraphicsviewfinder.cpp +++ b/lib/qtcamgraphicsviewfinder.cpp @@ -53,6 +53,7 @@ public: QtCamConfig *conf; QtCamDevice *dev; QtCamGraphicsViewfinder *q_ptr; + bool enabled; }; QtCamGraphicsViewfinder::QtCamGraphicsViewfinder(QtCamConfig *config, QGraphicsItem *parent) : @@ -61,6 +62,7 @@ QtCamGraphicsViewfinder::QtCamGraphicsViewfinder(QtCamConfig *config, QGraphicsI d_ptr->dev = 0; d_ptr->renderer = 0; d_ptr->q_ptr = this; + d_ptr->enabled = true; } QtCamGraphicsViewfinder::~QtCamGraphicsViewfinder() { @@ -112,7 +114,7 @@ void QtCamGraphicsViewfinder::paint(QPainter *painter, const QStyleOptionGraphic painter->fillRect(boundingRect(), Qt::black); - if (!d_ptr->renderer) { + if (!d_ptr->renderer || !d_ptr->enabled) { return; } @@ -130,11 +132,15 @@ void QtCamGraphicsViewfinder::resizeEvent(QGraphicsSceneResizeEvent *event) { } void QtCamGraphicsViewfinder::updateRequested() { - update(); + if (d_ptr->enabled) { + update(); + } } void QtCamGraphicsViewfinder::stop() { d_ptr->resetBackend(); + + setRenderingEnabled(true); } QRectF QtCamGraphicsViewfinder::renderArea() const { @@ -152,3 +158,15 @@ QSizeF QtCamGraphicsViewfinder::videoResolution() 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(); + } +} diff --git a/lib/qtcamgraphicsviewfinder.h b/lib/qtcamgraphicsviewfinder.h index e9db5b8..4a0257f 100644 --- a/lib/qtcamgraphicsviewfinder.h +++ b/lib/qtcamgraphicsviewfinder.h @@ -46,9 +46,13 @@ public: 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); diff --git a/qml/CameraPage.qml b/qml/CameraPage.qml index 5363a60..98503cf 100644 --- a/qml/CameraPage.qml +++ b/qml/CameraPage.qml @@ -38,6 +38,7 @@ Page { property bool modesVisible: true property bool standbyVisible: true property bool focusReticleVisible: true + property bool enableViewfinder: true property alias previewAnimationRunning: preview.animationRunning @@ -52,8 +53,15 @@ Page { } 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; + } } } diff --git a/qml/ImageSettingsPage.qml b/qml/ImageSettingsPage.qml index 1c3b472..a54d797 100644 --- a/qml/ImageSettingsPage.qml +++ b/qml/ImageSettingsPage.qml @@ -31,7 +31,7 @@ CameraPage { id: page controlsVisible: false policyMode: CameraResources.Image - needsPipeline: false + enableViewfinder: false standbyVisible: !Qt.application.active Rectangle { diff --git a/qml/VideoSettingsPage.qml b/qml/VideoSettingsPage.qml index 7fdb402..3e62440 100644 --- a/qml/VideoSettingsPage.qml +++ b/qml/VideoSettingsPage.qml @@ -31,7 +31,7 @@ CameraPage { id: page controlsVisible: false policyMode: CameraResources.Video - needsPipeline: false + enableViewfinder: false standbyVisible: !Qt.application.active Rectangle { diff --git a/qml/main.qml b/qml/main.qml index 3400488..936b7f1 100644 --- a/qml/main.qml +++ b/qml/main.qml @@ -31,7 +31,6 @@ import QtMobility.location 1.2 // 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.