summaryrefslogtreecommitdiffstats
path: root/src/multimedia/recording
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/recording')
-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
3 files changed, 45 insertions, 0 deletions
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();