diff options
author | Tobias Koenig <tobias.koenig.qnx@kdab.com> | 2013-02-26 12:00:43 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-03-19 13:33:43 +0100 |
commit | 18dbfc2538cb88164894cbc413740c3831f93e1d (patch) | |
tree | 22b934460cdf0b5447ef4e62c32b24d31b822dc8 /src/imports/multimedia/qdeclarativevideooutput.cpp | |
parent | 954bb7b9603e6049ef3b22ddd5fad2b324d937c3 (diff) |
Add autoOrientation property to QDeclarativeVideoOutput
The autoOrientation property is a flag to switch on/off
automatic rotation of the video output, depending on the
current screen orientation, to always show the output
upright. This is useful when the VideoOutput is used as
viewfinder for a Camera.
Change-Id: I72753888592dc59c9adaa3343bfec8b168343229
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
Reviewed-by: Andy Nichols <andy.nichols@digia.com>
Diffstat (limited to 'src/imports/multimedia/qdeclarativevideooutput.cpp')
-rw-r--r-- | src/imports/multimedia/qdeclarativevideooutput.cpp | 50 |
1 files changed, 49 insertions, 1 deletions
diff --git a/src/imports/multimedia/qdeclarativevideooutput.cpp b/src/imports/multimedia/qdeclarativevideooutput.cpp index 1b4b9cd5b..fc17a20fa 100644 --- a/src/imports/multimedia/qdeclarativevideooutput.cpp +++ b/src/imports/multimedia/qdeclarativevideooutput.cpp @@ -43,6 +43,7 @@ #include "qdeclarativevideooutput_render_p.h" #include "qdeclarativevideooutput_window_p.h" +#include <private/qvideooutputorientationhandler_p.h> #include <QtMultimedia/qmediaobject.h> #include <QtMultimedia/qmediaservice.h> @@ -127,7 +128,9 @@ QDeclarativeVideoOutput::QDeclarativeVideoOutput(QQuickItem *parent) : m_sourceType(NoSource), m_fillMode(PreserveAspectFit), m_geometryDirty(true), - m_orientation(0) + m_orientation(0), + m_autoOrientation(false), + m_screenOrientationHandler(0) { setFlag(ItemHasContents, true); } @@ -349,6 +352,12 @@ void QDeclarativeVideoOutput::_q_updateGeometry() if (m_contentRect != oldContentRect) emit contentRectChanged(); } + +void QDeclarativeVideoOutput::_q_screenOrientationChanged(int orientation) +{ + setOrientation(orientation); +} + /*! \qmlproperty int QtMultimedia5::VideoOutput::orientation @@ -411,6 +420,45 @@ void QDeclarativeVideoOutput::setOrientation(int orientation) } /*! + \qmlproperty int QtMultimedia5::VideoOutput::autoOrientation + + This property allows you to enable and disable auto orientation + of the video stream, so that its orientation always matches + the orientation of the screen. If \c autoOrientation is enabled, + the \c orientation property is overwritten. + + By default \c autoOrientation is disabled. + + \since QtMultimedia 5.1 +*/ +bool QDeclarativeVideoOutput::autoOrientation() const +{ + return m_autoOrientation; +} + +void QDeclarativeVideoOutput::setAutoOrientation(bool autoOrientation) +{ + if (autoOrientation == m_autoOrientation) + return; + + m_autoOrientation = autoOrientation; + if (m_autoOrientation) { + m_screenOrientationHandler = new QVideoOutputOrientationHandler(this); + connect(m_screenOrientationHandler, SIGNAL(orientationChanged(int)), + this, SLOT(_q_screenOrientationChanged(int))); + + _q_screenOrientationChanged(m_screenOrientationHandler->currentOrientation()); + } else { + disconnect(m_screenOrientationHandler, SIGNAL(orientationChanged(int)), + this, SLOT(_q_screenOrientationChanged(int))); + m_screenOrientationHandler->deleteLater(); + m_screenOrientationHandler = 0; + } + + emit autoOrientationChanged(); +} + +/*! \qmlproperty rectangle QtMultimedia5::VideoOutput::contentRect This property holds the item coordinates of the area that |