Added QMediaRecorder::status property

QMediaRecorder::state property represents the user request and
changed synchronously during record(), pause() or stop() calls.

Recorder status is changed asynchronously
and represents the actual status of media recorder.

This also makes API more consistent with QMediaPlayer and QCamera.

Change-Id: I80b4aaa70bb88e555c492908da8c29d0fc5ed5ea
Reviewed-by: Ling Hu <ling.hu@nokia.com>
This commit is contained in:
Dmytro Poplavskiy
2012-05-01 13:10:33 +10:00
committed by Qt by Nokia
parent af932e8653
commit b7935a84d7
12 changed files with 324 additions and 37 deletions

View File

@@ -307,26 +307,50 @@ void tst_QMediaRecorder::testSink()
void tst_QMediaRecorder::testRecord()
{
QSignalSpy stateSignal(capture,SIGNAL(stateChanged(QMediaRecorder::State)));
QSignalSpy statusSignal(capture,SIGNAL(statusChanged(QMediaRecorder::Status)));
QSignalSpy progressSignal(capture, SIGNAL(durationChanged(qint64)));
capture->record();
QCOMPARE(capture->state(), QMediaRecorder::RecordingState);
QCOMPARE(capture->error(), QMediaRecorder::NoError);
QCOMPARE(capture->errorString(), QString());
QTestEventLoop::instance().enterLoop(1);
QCOMPARE(stateSignal.count(), 1);
QCOMPARE(stateSignal.last()[0].value<QMediaRecorder::State>(), QMediaRecorder::RecordingState);
QTestEventLoop::instance().enterLoop(1);
QCOMPARE(capture->status(), QMediaRecorder::RecordingStatus);
QVERIFY(!statusSignal.isEmpty());
QCOMPARE(statusSignal.last()[0].value<QMediaRecorder::Status>(), QMediaRecorder::RecordingStatus);
statusSignal.clear();
QVERIFY(progressSignal.count() > 0);
capture->pause();
QCOMPARE(capture->state(), QMediaRecorder::PausedState);
QTestEventLoop::instance().enterLoop(1);
QCOMPARE(stateSignal.count(), 2);
capture->stop();
QCOMPARE(capture->state(), QMediaRecorder::StoppedState);
QTestEventLoop::instance().enterLoop(1);
QCOMPARE(stateSignal.count(), 3);
mock->stop();
QCOMPARE(capture->status(), QMediaRecorder::PausedStatus);
QVERIFY(!statusSignal.isEmpty());
QCOMPARE(statusSignal.last()[0].value<QMediaRecorder::Status>(), QMediaRecorder::PausedStatus);
statusSignal.clear();
capture->stop();
QCOMPARE(capture->state(), QMediaRecorder::StoppedState);
QCOMPARE(stateSignal.count(), 3);
QTestEventLoop::instance().enterLoop(1);
QCOMPARE(capture->status(), QMediaRecorder::LoadedStatus);
QVERIFY(!statusSignal.isEmpty());
QCOMPARE(statusSignal.last()[0].value<QMediaRecorder::Status>(), QMediaRecorder::LoadedStatus);
statusSignal.clear();
mock->stop();
QCOMPARE(stateSignal.count(), 3);
}
void tst_QMediaRecorder::testMute()

View File

@@ -54,6 +54,7 @@ public:
MockMediaRecorderControl(QObject *parent = 0):
QMediaRecorderControl(parent),
m_state(QMediaRecorder::StoppedState),
m_status(QMediaRecorder::LoadedStatus),
m_position(0),
m_muted(false),
m_settingAppliedCount(0)
@@ -76,6 +77,11 @@ public:
return m_state;
}
QMediaRecorder::Status status() const
{
return m_status;
}
qint64 duration() const
{
return m_position;
@@ -97,8 +103,10 @@ public slots:
void record()
{
m_state = QMediaRecorder::RecordingState;
m_status = QMediaRecorder::RecordingStatus;
m_position=1;
emit stateChanged(m_state);
emit statusChanged(m_status);
emit durationChanged(m_position);
QUrl actualLocation = m_sink.isEmpty() ? QUrl::fromLocalFile("default_name.mp4") : m_sink;
@@ -108,14 +116,18 @@ public slots:
void pause()
{
m_state = QMediaRecorder::PausedState;
m_status = QMediaRecorder::PausedStatus;
emit stateChanged(m_state);
emit statusChanged(m_status);
}
void stop()
{
m_position=0;
m_state = QMediaRecorder::StoppedState;
m_status = QMediaRecorder::LoadedStatus;
emit stateChanged(m_state);
emit statusChanged(m_status);
}
void setMuted(bool muted)
@@ -127,6 +139,7 @@ public slots:
public:
QUrl m_sink;
QMediaRecorder::State m_state;
QMediaRecorder::Status m_status;
qint64 m_position;
bool m_muted;
int m_settingAppliedCount;