summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmytro Poplavskiy <dmytro.poplavskiy@nokia.com>2012-02-07 14:34:50 +1000
committerQt by Nokia <qt-info@nokia.com>2012-02-07 06:48:32 +0100
commit96aa2e9af703d50f9f1ef8b3139aa2c1cde233cc (patch)
tree041030a3e862572c9aaef8844516a97ea16bae31
parent00d1e2f65edfb12186a3805a6c0124bb032f5b43 (diff)
Updated declarative camera recorder with C++ API changes.
Added key,value parameters to metadataChanged() signal; Added a separate actualLocation property to desribe the path of recorded file. It may be different from outputLocation when default location is used. Change-Id: I5a4b77833b6458a19ed7e1dcf7e53fc7400cdf21 Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com> Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
-rw-r--r--src/imports/multimedia/qdeclarativecamerarecorder.cpp47
-rw-r--r--src/imports/multimedia/qdeclarativecamerarecorder_p.h11
2 files changed, 46 insertions, 12 deletions
diff --git a/src/imports/multimedia/qdeclarativecamerarecorder.cpp b/src/imports/multimedia/qdeclarativecamerarecorder.cpp
index dc49ba28..f2bb8fb9 100644
--- a/src/imports/multimedia/qdeclarativecamerarecorder.cpp
+++ b/src/imports/multimedia/qdeclarativecamerarecorder.cpp
@@ -64,6 +64,10 @@ QDeclarativeCameraRecorder::QDeclarativeCameraRecorder(QCamera *camera, QObject
SLOT(updateRecorderError(QMediaRecorder::Error)));
connect(m_recorder, SIGNAL(mutedChanged(bool)), SIGNAL(mutedChanged(bool)));
connect(m_recorder, SIGNAL(durationChanged(qint64)), SIGNAL(durationChanged(qint64)));
+ connect(m_recorder, SIGNAL(actualLocationChanged(QUrl)),
+ SLOT(updateActualLocation(QUrl)));
+ connect(m_recorder, SIGNAL(metaDataChanged(QString,QVariant)),
+ SIGNAL(metaDataChanged(QString,QVariant)));
}
QDeclarativeCameraRecorder::~QDeclarativeCameraRecorder()
@@ -242,14 +246,42 @@ void QDeclarativeCameraRecorder::setRecorderState(QDeclarativeCameraRecorder::Re
}
}
+/*!
+ \qmlproperty string CameraRecorder::outputLocation
+ \property QDeclarativeCameraRecorder::outputLocation
+
+ \brief the destination location of media content.
+
+ The location can be relative or empty;
+ in this case the recorder uses the system specific place and file naming scheme.
+*/
+
QString QDeclarativeCameraRecorder::outputLocation() const
{
return m_recorder->outputLocation().toString();
}
-void QDeclarativeCameraRecorder::setOutputLocation(const QUrl &location)
+/*!
+ \qmlproperty string CameraRecorder::actualLocation
+ \property QDeclarativeCameraRecorder::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.
+*/
+
+QString QDeclarativeCameraRecorder::actualLocation() const
{
- m_recorder->setOutputLocation(location);
+ return m_recorder->actualLocation().toString();
+}
+
+void QDeclarativeCameraRecorder::setOutputLocation(const QString &location)
+{
+ if (outputLocation() != location) {
+ m_recorder->setOutputLocation(location);
+ emit outputLocationChanged(outputLocation());
+ }
}
qint64 QDeclarativeCameraRecorder::duration() const
@@ -277,12 +309,6 @@ void QDeclarativeCameraRecorder::updateRecorderState(QMediaRecorder::State state
if (state == QMediaRecorder::PausedState)
state = QMediaRecorder::StoppedState;
- if (state == QMediaRecorder::StoppedState) {
- QString location = outputLocation();
- if (!location.isEmpty())
- emit outputLocationChanged(location);
- }
-
emit recorderStateChanged(RecorderState(state));
}
@@ -292,6 +318,11 @@ void QDeclarativeCameraRecorder::updateRecorderError(QMediaRecorder::Error error
emit error(errorCode);
}
+void QDeclarativeCameraRecorder::updateActualLocation(const QUrl &url)
+{
+ emit actualLocationChanged(url.toString());
+}
+
QT_END_NAMESPACE
#include "moc_qdeclarativecamerarecorder_p.cpp"
diff --git a/src/imports/multimedia/qdeclarativecamerarecorder_p.h b/src/imports/multimedia/qdeclarativecamerarecorder_p.h
index c6315c27..c0599b00 100644
--- a/src/imports/multimedia/qdeclarativecamerarecorder_p.h
+++ b/src/imports/multimedia/qdeclarativecamerarecorder_p.h
@@ -84,6 +84,7 @@ class QDeclarativeCameraRecorder : public QObject
Q_PROPERTY(qint64 duration READ duration NOTIFY durationChanged)
Q_PROPERTY(QString outputLocation READ outputLocation WRITE setOutputLocation NOTIFY outputLocationChanged)
+ Q_PROPERTY(QString actualLocation READ actualLocation NOTIFY actualLocationChanged)
Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged)
Q_PROPERTY(QString errorString READ errorString NOTIFY error)
@@ -101,6 +102,8 @@ public:
QSize captureResolution();
QString outputLocation() const;
+ QString actualLocation() const;
+
qint64 duration() const;
bool isMuted() const;
@@ -118,7 +121,7 @@ public:
int audioSampleRate() const;
public Q_SLOTS:
- void setOutputLocation(const QUrl &location);
+ void setOutputLocation(const QString &location);
void record();
void stop();
@@ -143,12 +146,11 @@ Q_SIGNALS:
void durationChanged(qint64 duration);
void mutedChanged(bool muted);
void outputLocationChanged(const QString &location);
+ void actualLocationChanged(const QString &location);
void error(QMediaRecorder::Error errorCode);
- void metaDataAvailableChanged(bool available);
- void metaDataWritableChanged(bool writable);
- void metaDataChanged();
+ void metaDataChanged(const QString &key, const QVariant &value);
void captureResolutionChanged(const QSize &);
void audioCodecChanged(const QString &codec);
@@ -164,6 +166,7 @@ Q_SIGNALS:
private slots:
void updateRecorderState(QMediaRecorder::State);
void updateRecorderError(QMediaRecorder::Error);
+ void updateActualLocation(const QUrl&);
private:
friend class QDeclarativeCamera;