summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDmytro Poplavskiy <dmytro.poplavskiy@nokia.com>2012-01-31 13:20:17 +1000
committerQt by Nokia <qt-info@nokia.com>2012-02-01 08:10:33 +0100
commitba37f73d44269920c904a3110f9090b8c091c118 (patch)
treee37895afcdd32c6603ac0b3c99b01680fa459a63 /src
parenta26bf6c8b6dbf91d0f556dfd41222db2775ba038 (diff)
Added QMediaRecorder::actualLocation property
To report the actual location file was written. Change-Id: Ibb56a720a258a1e5cedceaf0f9bcea73fb93bc96 Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/multimedia/controls/qmediarecordercontrol.cpp11
-rw-r--r--src/multimedia/controls/qmediarecordercontrol.h1
-rw-r--r--src/multimedia/recording/qmediarecorder.cpp37
-rw-r--r--src/multimedia/recording/qmediarecorder.h5
-rw-r--r--src/multimedia/recording/qmediarecorder_p.h3
5 files changed, 56 insertions, 1 deletions
diff --git a/src/multimedia/controls/qmediarecordercontrol.cpp b/src/multimedia/controls/qmediarecordercontrol.cpp
index c6af5bced..6caefd9bb 100644
--- a/src/multimedia/controls/qmediarecordercontrol.cpp
+++ b/src/multimedia/controls/qmediarecordercontrol.cpp
@@ -111,7 +111,9 @@ QMediaRecorderControl::~QMediaRecorderControl()
The \a location can be relative or empty;
in this case the service should use the system specific place and file naming scheme.
- After recording has stated, QMediaRecorderControl::outputLocation() should return the actual output location.
+
+ After recording has started, the backend should report the actual file location
+ with actualLocationChanged() signal.
*/
/*!
@@ -185,6 +187,13 @@ QMediaRecorderControl::~QMediaRecorderControl()
*/
/*!
+ \fn void QMediaRecorderControl::actualLocationChanged(const QUrl &location)
+
+ Signals that the actual media \a location has changed.
+ This signal should be emitted at start of recording.
+*/
+
+/*!
\fn void QMediaRecorderControl::error(int error, const QString &errorString)
Signals that an \a error has occurred. The \a errorString describes the error.
diff --git a/src/multimedia/controls/qmediarecordercontrol.h b/src/multimedia/controls/qmediarecordercontrol.h
index ac952708a..73e5430df 100644
--- a/src/multimedia/controls/qmediarecordercontrol.h
+++ b/src/multimedia/controls/qmediarecordercontrol.h
@@ -78,6 +78,7 @@ Q_SIGNALS:
void stateChanged(QMediaRecorder::State state);
void durationChanged(qint64 position);
void mutedChanged(bool muted);
+ void actualLocationChanged(const QUrl &location);
void error(int error, const QString &errorString);
public Q_SLOTS:
diff --git a/src/multimedia/recording/qmediarecorder.cpp b/src/multimedia/recording/qmediarecorder.cpp
index 879d584c5..2bdb50b74 100644
--- a/src/multimedia/recording/qmediarecorder.cpp
+++ b/src/multimedia/recording/qmediarecorder.cpp
@@ -145,6 +145,14 @@ void QMediaRecorderPrivate::_q_serviceDestroyed()
metaDataControl = 0;
}
+void QMediaRecorderPrivate::_q_updateActualLocation(const QUrl &location)
+{
+ if (actualLocation != location) {
+ actualLocation = location;
+ emit q_func()->actualLocationChanged(actualLocation);
+ }
+}
+
void QMediaRecorderPrivate::_q_notify()
{
emit q_func()->durationChanged(q_func()->duration());
@@ -257,6 +265,9 @@ bool QMediaRecorder::setMediaObject(QMediaObject *object)
disconnect(d->control, SIGNAL(durationChanged(qint64)),
this, SIGNAL(durationChanged(qint64)));
+ disconnect(d->control, SIGNAL(actualLocationChanged(QUrl)),
+ this, SLOT(_q_updateActualLocation(QUrl)));
+
disconnect(d->control, SIGNAL(error(int,QString)),
this, SLOT(_q_error(int,QString)));
}
@@ -338,6 +349,9 @@ bool QMediaRecorder::setMediaObject(QMediaObject *object)
connect(d->control, SIGNAL(durationChanged(qint64)),
this, SIGNAL(durationChanged(qint64)));
+ connect(d->control, SIGNAL(actualLocationChanged(QUrl)),
+ this, SLOT(_q_updateActualLocation(QUrl)));
+
connect(d->control, SIGNAL(error(int,QString)),
this, SLOT(_q_error(int,QString)));
@@ -372,6 +386,14 @@ bool QMediaRecorder::setMediaObject(QMediaObject *object)
*/
/*!
+ \property QMediaRecorder::actualLocation
+ \brief the actual location of the last media content.
+
+ The actual location is usually available after recording starts,
+ and reset when new location is set or new recording starts.
+*/
+
+/*!
Returns true if media recorder service ready to use.
*/
bool QMediaRecorder::isAvailable() const
@@ -401,9 +423,15 @@ QUrl QMediaRecorder::outputLocation() const
bool QMediaRecorder::setOutputLocation(const QUrl &location)
{
Q_D(QMediaRecorder);
+ d->actualLocation.clear();
return d->control ? d->control->setOutputLocation(location) : false;
}
+QUrl QMediaRecorder::actualLocation() const
+{
+ return d_func()->actualLocation;
+}
+
/*!
Returns the current media recorder state.
@@ -743,6 +771,8 @@ void QMediaRecorder::record()
{
Q_D(QMediaRecorder);
+ d->actualLocation.clear();
+
if (d->settingsChanged)
d->_q_applySettings();
@@ -805,6 +835,13 @@ void QMediaRecorder::stop()
*/
/*!
+ \fn QMediaRecorder::actualLocationChanged(const QUrl &location)
+
+ Signals that the actual \a location of the recorded media has changed.
+ This signal is usually emitted when recording starts.
+*/
+
+/*!
\fn QMediaRecorder::error(QMediaRecorder::Error error)
Signals that an \a error has occurred.
diff --git a/src/multimedia/recording/qmediarecorder.h b/src/multimedia/recording/qmediarecorder.h
index 2a8d62fac..3b210ddc6 100644
--- a/src/multimedia/recording/qmediarecorder.h
+++ b/src/multimedia/recording/qmediarecorder.h
@@ -75,6 +75,7 @@ class Q_MULTIMEDIA_EXPORT QMediaRecorder : public QObject, public QMediaBindable
Q_ENUMS(Error)
Q_PROPERTY(qint64 duration READ duration NOTIFY durationChanged)
Q_PROPERTY(QUrl outputLocation READ outputLocation WRITE setOutputLocation)
+ Q_PROPERTY(QUrl actualLocation READ actualLocation NOTIFY actualLocationChanged)
Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged)
Q_PROPERTY(bool metaDataAvailable READ isMetaDataAvailable NOTIFY metaDataAvailableChanged)
Q_PROPERTY(bool metaDataWritable READ isMetaDataWritable NOTIFY metaDataWritableChanged)
@@ -105,6 +106,8 @@ public:
QUrl outputLocation() const;
bool setOutputLocation(const QUrl &location);
+ QUrl actualLocation() const;
+
State state() const;
Error error() const;
@@ -161,6 +164,7 @@ Q_SIGNALS:
void stateChanged(QMediaRecorder::State state);
void durationChanged(qint64 duration);
void mutedChanged(bool muted);
+ void actualLocationChanged(const QUrl &location);
void error(QMediaRecorder::Error error);
@@ -180,6 +184,7 @@ private:
Q_PRIVATE_SLOT(d_func(), void _q_error(int, const QString &))
Q_PRIVATE_SLOT(d_func(), void _q_serviceDestroyed())
Q_PRIVATE_SLOT(d_func(), void _q_notify())
+ Q_PRIVATE_SLOT(d_func(), void _q_updateActualLocation(const QUrl &))
Q_PRIVATE_SLOT(d_func(), void _q_updateNotifyInterval(int))
Q_PRIVATE_SLOT(d_func(), void _q_applySettings())
};
diff --git a/src/multimedia/recording/qmediarecorder_p.h b/src/multimedia/recording/qmediarecorder_p.h
index c868c4705..b899665eb 100644
--- a/src/multimedia/recording/qmediarecorder_p.h
+++ b/src/multimedia/recording/qmediarecorder_p.h
@@ -44,6 +44,7 @@
#include "qmediarecorder.h"
#include "qmediaobject_p.h"
+#include <QtCore/qurl.h>
QT_BEGIN_NAMESPACE
@@ -80,10 +81,12 @@ public:
QMediaRecorder::State state;
QMediaRecorder::Error error;
QString errorString;
+ QUrl actualLocation;
void _q_stateChanged(QMediaRecorder::State state);
void _q_error(int error, const QString &errorString);
void _q_serviceDestroyed();
+ void _q_updateActualLocation(const QUrl &);
void _q_notify();
void _q_updateNotifyInterval(int ms);
void _q_applySettings();