summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/declarative-radio/view.qml2
-rw-r--r--src/imports/multimedia/Video.qml22
-rw-r--r--src/imports/multimedia/qdeclarativeaudio.cpp35
-rw-r--r--src/imports/multimedia/qdeclarativeaudio_p.h14
-rw-r--r--src/imports/multimedia/qdeclarativecamera.cpp37
-rw-r--r--src/imports/multimedia/qdeclarativecamera_p.h15
-rw-r--r--src/imports/multimedia/qdeclarativemediabase.cpp27
-rw-r--r--src/imports/multimedia/qdeclarativemediabase_p.h3
-rw-r--r--src/imports/multimedia/qdeclarativeradio.cpp38
-rw-r--r--src/imports/multimedia/qdeclarativeradio_p.h15
-rw-r--r--src/imports/multimedia/qdeclarativeradiodata.cpp35
-rw-r--r--src/imports/multimedia/qdeclarativeradiodata_p.h19
-rw-r--r--src/multimedia/camera/qcamera.cpp14
-rw-r--r--src/multimedia/camera/qcamera.h1
-rw-r--r--src/multimedia/controls/controls.pri8
-rw-r--r--src/multimedia/controls/qmediaavailabilitycontrol.cpp109
-rw-r--r--src/multimedia/controls/qmediaavailabilitycontrol.h78
-rw-r--r--src/multimedia/controls/qradiodatacontrol.cpp12
-rw-r--r--src/multimedia/controls/qradiodatacontrol.h3
-rw-r--r--src/multimedia/controls/qradiotunercontrol.cpp14
-rw-r--r--src/multimedia/controls/qradiotunercontrol.h3
-rw-r--r--src/multimedia/playback/qmediaplayer.cpp11
-rw-r--r--src/multimedia/playback/qmediaplayer.h2
-rw-r--r--src/multimedia/qmediaobject.cpp36
-rw-r--r--src/multimedia/qmediaobject.h4
-rw-r--r--src/multimedia/qmediaobject_p.h4
-rw-r--r--src/multimedia/radio/qradiodata.cpp21
-rw-r--r--src/multimedia/radio/qradiodata.h1
-rw-r--r--src/multimedia/radio/qradiotuner.cpp22
-rw-r--r--src/multimedia/radio/qradiotuner.h1
-rw-r--r--src/multimedia/recording/qmediarecorder.cpp60
-rw-r--r--src/multimedia/recording/qmediarecorder.h5
-rw-r--r--src/multimedia/recording/qmediarecorder_p.h3
-rw-r--r--tests/auto/unit/qmediaobject/qmediaobject.pro1
-rw-r--r--tests/auto/unit/qmediaobject/tst_qmediaobject.cpp80
-rw-r--r--tests/auto/unit/qmediarecorder/tst_qmediarecorder.cpp60
-rw-r--r--tests/auto/unit/qmultimedia_common/mock.pri3
-rw-r--r--tests/auto/unit/qmultimedia_common/mockavailabilitycontrol.h75
-rw-r--r--tests/auto/unit/qmultimedia_common/mockmediarecorderservice.h8
-rw-r--r--tests/auto/unit/qmultimedia_common/mockradiodatacontrol.h9
-rw-r--r--tests/auto/unit/qmultimedia_common/mockradiotunercontrol.h9
41 files changed, 764 insertions, 155 deletions
diff --git a/examples/declarative-radio/view.qml b/examples/declarative-radio/view.qml
index d77202362..bf582e400 100644
--- a/examples/declarative-radio/view.qml
+++ b/examples/declarative-radio/view.qml
@@ -72,7 +72,7 @@ Rectangle {
height: 200
verticalAlignment: Text.AlignVCenter
- text: (radio.isAvailable() ? "No Signal " : "No Radio Found")
+ text: (radio.availability == Radio.Available ? "No Signal " : "No Radio Found")
}
}
diff --git a/src/imports/multimedia/Video.qml b/src/imports/multimedia/Video.qml
index bef20a94b..861d291cc 100644
--- a/src/imports/multimedia/Video.qml
+++ b/src/imports/multimedia/Video.qml
@@ -193,6 +193,28 @@ Item {
property alias errorString: player.errorString
/*!
+ \qmlproperty enumeration Video::availability
+
+ Returns the availability state of the video element.
+
+ This is one of:
+ \table
+ \header \li Value \li Description
+ \row \li MediaPlayer.Available
+ \li The video player is available to use.
+ \row \li MediaPlayer.Busy
+ \li The video player is usually available, but some other
+ process is utilizing the hardware necessary to play media.
+ \row \li MediaPlayer.Unavailable
+ \li There are no supported video playback facilities.
+ \row \li MediaPlayer.ResourceMissing
+ \li There is one or more resources missing, so the video player cannot
+ be used. It may be possible to try again at a later time.
+ \endtable
+ */
+ property alias availability: player.availability
+
+ /*!
\qmlproperty bool Video::hasAudio
This property holds whether the current media has audio content.
diff --git a/src/imports/multimedia/qdeclarativeaudio.cpp b/src/imports/multimedia/qdeclarativeaudio.cpp
index 6d5661009..e1ab6e8b8 100644
--- a/src/imports/multimedia/qdeclarativeaudio.cpp
+++ b/src/imports/multimedia/qdeclarativeaudio.cpp
@@ -42,6 +42,7 @@
#include "qdeclarativeaudio_p.h"
#include <qmediaplayercontrol.h>
+#include <qmediaavailabilitycontrol.h>
QT_BEGIN_NAMESPACE
@@ -152,6 +153,11 @@ void QDeclarativeAudio::_q_error(int errorCode, const QString &errorString)
emit errorChanged();
}
+void QDeclarativeAudio::_q_availabilityChanged(QtMultimedia::AvailabilityError)
+{
+ emit availabilityChanged(availability());
+}
+
QDeclarativeAudio::QDeclarativeAudio(QObject *parent)
: QObject(parent)
@@ -164,6 +170,35 @@ QDeclarativeAudio::~QDeclarativeAudio()
}
/*!
+ \qmlproperty enumeration QtMultimedia5::Audio::availability
+
+ Returns the availability state of the media player.
+
+ This is one of:
+ \table
+ \header \li Value \li Description
+ \row \li Available
+ \li The media player is available to use.
+ \row \li Busy
+ \li The media player is usually available, but some other
+ process is utilizing the hardware necessary to play media.
+ \row \li Unavailable
+ \li There are no supported media playback facilities.
+ \row \li ResourceMissing
+ \li There is one or more resources missing, so the media player cannot
+ be used. It may be possible to try again at a later time.
+ \endtable
+ */
+QDeclarativeAudio::Availability QDeclarativeAudio::availability() const
+{
+ if (!m_playerControl)
+ return Unavailable;
+ if (m_availabilityControl)
+ return Availability(m_availabilityControl->availability());
+ return Available;
+}
+
+/*!
\qmlmethod QtMultimedia5::Audio::play()
Starts playback of the media.
diff --git a/src/imports/multimedia/qdeclarativeaudio_p.h b/src/imports/multimedia/qdeclarativeaudio_p.h
index 942832894..6d2497fac 100644
--- a/src/imports/multimedia/qdeclarativeaudio_p.h
+++ b/src/imports/multimedia/qdeclarativeaudio_p.h
@@ -87,10 +87,12 @@ class QDeclarativeAudio : public QObject, public QDeclarativeMediaBase, public Q
Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged)
Q_PROPERTY(QDeclarativeMediaMetaData *metaData READ metaData CONSTANT)
Q_PROPERTY(QObject *mediaObject READ mediaObject NOTIFY mediaObjectChanged SCRIPTABLE false DESIGNABLE false)
+ Q_PROPERTY(Availability availability READ availability NOTIFY availabilityChanged)
Q_ENUMS(Status)
Q_ENUMS(Error)
Q_ENUMS(Loop)
Q_ENUMS(PlaybackState)
+ Q_ENUMS(Availability)
Q_INTERFACES(QDeclarativeParserStatus)
public:
enum Status
@@ -128,6 +130,13 @@ public:
StoppedState = QMediaPlayer::StoppedState
};
+ enum Availability {
+ Available = QtMultimedia::NoError,
+ Busy = QtMultimedia::BusyError,
+ Unavailable = QtMultimedia::ServiceMissingError,
+ ResourceMissing = QtMultimedia::ResourceError
+ };
+
QDeclarativeAudio(QObject *parent = 0);
~QDeclarativeAudio();
@@ -143,6 +152,8 @@ public:
QObject *mediaObject() { return m_mediaObject; }
+ Availability availability() const;
+
public Q_SLOTS:
void play();
void pause();
@@ -175,6 +186,8 @@ Q_SIGNALS:
void seekableChanged();
void playbackRateChanged();
+ void availabilityChanged(Availability availability);
+
void errorChanged();
void error(QDeclarativeAudio::Error error, const QString &errorString);
@@ -182,6 +195,7 @@ Q_SIGNALS:
private Q_SLOTS:
void _q_error(int, const QString &);
+ void _q_availabilityChanged(QtMultimedia::AvailabilityError);
private:
Q_DISABLE_COPY(QDeclarativeAudio)
diff --git a/src/imports/multimedia/qdeclarativecamera.cpp b/src/imports/multimedia/qdeclarativecamera.cpp
index b6d2583d9..60aae9145 100644
--- a/src/imports/multimedia/qdeclarativecamera.cpp
+++ b/src/imports/multimedia/qdeclarativecamera.cpp
@@ -68,6 +68,11 @@ void QDeclarativeCamera::_q_updateState(QCamera::State state)
emit cameraStateChanged(QDeclarativeCamera::State(state));
}
+void QDeclarativeCamera::_q_availabilityChanged(QtMultimedia::AvailabilityError error)
+{
+ emit availabilityChanged(Availability(error));
+}
+
/*!
\qmlclass Camera QDeclarativeCamera
\brief The Camera element allows you to access viewfinder frames, and take photos and movies.
@@ -176,6 +181,9 @@ QDeclarativeCamera::QDeclarativeCamera(QObject *parent) :
connect(m_camera, SIGNAL(lockStatusChanged(QCamera::LockStatus,QCamera::LockChangeReason)), this, SIGNAL(lockStatusChanged()));
connect(m_camera, SIGNAL(stateChanged(QCamera::State)), this, SLOT(_q_updateState(QCamera::State)));
+ // Note we map availabilityError->availability
+ connect(m_camera, SIGNAL(availabilityErrorChanged(QtMultimedia::AvailabilityError)), this, SLOT(_q_availabilityChanged(QtMultimedia::AvailabilityError)));
+
connect(m_camera->focus(), SIGNAL(opticalZoomChanged(qreal)), this, SIGNAL(opticalZoomChanged(qreal)));
connect(m_camera->focus(), SIGNAL(digitalZoomChanged(qreal)), this, SIGNAL(digitalZoomChanged(qreal)));
connect(m_camera->focus(), SIGNAL(maximumOpticalZoomChanged(qreal)), this, SIGNAL(maximumOpticalZoomChanged(qreal)));
@@ -218,6 +226,35 @@ QString QDeclarativeCamera::errorString() const
}
/*!
+ \qmlproperty enumeration QtMultimedia5::Camera::availability
+
+ Returns the availability state of the camera.
+
+ This is one of:
+
+ \table
+ \header \li Value \li Description
+ \row \li Available
+ \li The camera is available to use
+ \row \li Busy
+ \li The camera is usually available to use, but is currently busy.
+ This can happen when some other process needs to use the camera
+ hardware.
+ \row \li Unavailable
+ \li The camera is not available to use (there may be no camera
+ hardware)
+ \row \li ResourceMissing
+ \li There is one or more resources missing, so the camera cannot
+ be used. It may be possible to try again at a later time.
+ \endtable
+ */
+QDeclarativeCamera::Availability QDeclarativeCamera::availability() const
+{
+ return Availability(m_camera->availabilityError());
+}
+
+
+/*!
\qmlproperty enumeration QtMultimedia5::Camera::captureMode
\table
diff --git a/src/imports/multimedia/qdeclarativecamera_p.h b/src/imports/multimedia/qdeclarativecamera_p.h
index 30604c6da..8ac99574b 100644
--- a/src/imports/multimedia/qdeclarativecamera_p.h
+++ b/src/imports/multimedia/qdeclarativecamera_p.h
@@ -84,6 +84,8 @@ class QDeclarativeCamera : public QObject, public QDeclarativeParserStatus
Q_PROPERTY(LockStatus lockStatus READ lockStatus NOTIFY lockStatusChanged)
Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged)
+ Q_PROPERTY(Availability availability READ availability NOTIFY availabilityChanged)
+
Q_PROPERTY(qreal opticalZoom READ opticalZoom WRITE setOpticalZoom NOTIFY opticalZoomChanged)
Q_PROPERTY(qreal maximumOpticalZoom READ maximumOpticalZoom NOTIFY maximumOpticalZoomChanged)
Q_PROPERTY(qreal digitalZoom READ digitalZoom WRITE setDigitalZoom NOTIFY digitalZoomChanged)
@@ -109,6 +111,8 @@ class QDeclarativeCamera : public QObject, public QDeclarativeParserStatus
Q_ENUMS(FocusMode)
Q_ENUMS(FocusPointMode)
Q_ENUMS(FocusAreaStatus)
+ Q_ENUMS(Availability)
+
public:
enum CaptureMode {
CaptureStillImage = QCamera::CaptureStillImage,
@@ -193,6 +197,12 @@ public:
FocusAreaFocused = QCameraFocusZone::Focused
};
+ enum Availability {
+ Available = QtMultimedia::NoError,
+ Busy = QtMultimedia::BusyError,
+ Unavailable = QtMultimedia::ServiceMissingError,
+ ResourceMissing = QtMultimedia::ResourceError
+ };
QDeclarativeCamera(QObject *parent = 0);
~QDeclarativeCamera();
@@ -220,6 +230,8 @@ public:
qreal opticalZoom() const;
qreal digitalZoom() const;
+ Availability availability() const;
+
public Q_SLOTS:
void setCaptureMode(CaptureMode mode);
@@ -250,9 +262,12 @@ Q_SIGNALS:
void mediaObjectChanged();
+ void availabilityChanged(Availability availability);
+
private Q_SLOTS:
void _q_updateState(QCamera::State);
void _q_error(int, const QString &);
+ void _q_availabilityChanged(QtMultimedia::AvailabilityError);
protected:
void classBegin();
diff --git a/src/imports/multimedia/qdeclarativemediabase.cpp b/src/imports/multimedia/qdeclarativemediabase.cpp
index a1f80f2b4..934464c22 100644
--- a/src/imports/multimedia/qdeclarativemediabase.cpp
+++ b/src/imports/multimedia/qdeclarativemediabase.cpp
@@ -49,6 +49,7 @@
#include <qmediaservice.h>
#include <private/qmediaserviceprovider_p.h>
#include <qmetadatareadercontrol.h>
+#include <qmediaavailabilitycontrol.h>
#include "qdeclarativemediametadata_p.h"
@@ -98,6 +99,22 @@ public:
void stop() {}
};
+class QDeclarativeMediaBaseAvailabilityControl : public QMediaAvailabilityControl
+{
+public:
+ QDeclarativeMediaBaseAvailabilityControl(bool available)
+ : m_available(available)
+ {
+ }
+
+ QtMultimedia::AvailabilityError availability() const
+ {
+ return m_available ? QtMultimedia::NoError : QtMultimedia::ServiceMissingError;
+ }
+
+private:
+ bool m_available;
+};
class QDeclarativeMediaBaseMetaDataControl : public QMetaDataReaderControl
{
@@ -211,6 +228,7 @@ QDeclarativeMediaBase::QDeclarativeMediaBase()
, m_mediaProvider(0)
, m_metaDataControl(0)
, m_animation(0)
+ , m_availabilityControl(0)
, m_playbackState(QMediaPlayer::StoppedState)
, m_status(QMediaPlayer::NoMedia)
, m_error(QMediaPlayer::ServiceMissingError)
@@ -245,9 +263,12 @@ void QDeclarativeMediaBase::setObject(QObject *object, const QByteArray &type)
m_metaDataControl = qobject_cast<QMetaDataReaderControl *>(
m_mediaService->requestControl(QMetaDataReaderControl_iid));
m_mediaObject = new QDeclarativeMediaBaseObject(m_mediaService);
+ m_availabilityControl = m_mediaService->requestControl<QMediaAvailabilityControl*>();
}
}
+ bool realPlayer = m_playerControl;
+
if (m_playerControl) {
QObject::connect(m_playerControl, SIGNAL(stateChanged(QMediaPlayer::State)),
object, SLOT(_q_statusChanged()));
@@ -281,6 +302,12 @@ void QDeclarativeMediaBase::setObject(QObject *object, const QByteArray &type)
if (!m_metaDataControl)
m_metaDataControl = new QDeclarativeMediaBaseMetaDataControl(object);
+ if (!m_availabilityControl)
+ m_availabilityControl = new QDeclarativeMediaBaseAvailabilityControl(realPlayer);
+
+ QObject::connect(m_availabilityControl, SIGNAL(availabilityChanged(QtMultimedia::AvailabilityError)),
+ object, SLOT(_q_availabilityChanged(QtMultimedia::AvailabilityError)));
+
m_metaData.reset(new QDeclarativeMediaMetaData(m_metaDataControl));
QObject::connect(m_metaDataControl, SIGNAL(metaDataChanged()),
diff --git a/src/imports/multimedia/qdeclarativemediabase_p.h b/src/imports/multimedia/qdeclarativemediabase_p.h
index 78c3524e2..bbf1c24c8 100644
--- a/src/imports/multimedia/qdeclarativemediabase_p.h
+++ b/src/imports/multimedia/qdeclarativemediabase_p.h
@@ -67,6 +67,7 @@ class QMediaServiceProvider;
class QMetaDataReaderControl;
class QDeclarativeMediaBaseAnimation;
class QDeclarativeMediaMetaData;
+class QMediaAvailabilityControl;
class QDeclarativeMediaBase
{
@@ -174,6 +175,8 @@ protected:
QDeclarativeMediaBaseAnimation *m_animation;
QScopedPointer<QDeclarativeMediaMetaData> m_metaData;
+ QMediaAvailabilityControl *m_availabilityControl;
+
QMediaPlayer::State m_playbackState;
QMediaPlayer::MediaStatus m_status;
QMediaPlayer::Error m_error;
diff --git a/src/imports/multimedia/qdeclarativeradio.cpp b/src/imports/multimedia/qdeclarativeradio.cpp
index c029cae12..1c7ea4cae 100644
--- a/src/imports/multimedia/qdeclarativeradio.cpp
+++ b/src/imports/multimedia/qdeclarativeradio.cpp
@@ -112,6 +112,9 @@ QDeclarativeRadio::QDeclarativeRadio(QObject *parent) :
connect(m_radioTuner, SIGNAL(stationFound(int, QString)), this, SIGNAL(stationFound(int, QString)));
connect(m_radioTuner, SIGNAL(antennaConnectedChanged(bool)), this, SIGNAL(antennaConnectedChanged(bool)));
+ // Note we map availabilityError->availability
+ connect(m_radioTuner, SIGNAL(availabilityErrorChanged(QtMultimedia::AvailabilityError)), this, SLOT(_q_availabilityChanged(QtMultimedia::AvailabilityError)));
+
connect(m_radioTuner, SIGNAL(error(QRadioTuner::Error)), this, SLOT(_q_error(QRadioTuner::Error)));
}
@@ -306,13 +309,33 @@ bool QDeclarativeRadio::isAntennaConnected() const
}
/*!
- \qmlmethod bool QtMultimedia5::Radio::isAvailable()
+ \qmlproperty enumeration QtMultimedia5::Radio::availability
+
+ Returns the availability state of the radio.
+
+ This is one of:
- Returns whether the radio is ready to use.
+ \table
+ \header \li Value \li Description
+ \row \li Available
+ \li The radio is available to use
+ \row \li Busy
+ \li The radio is usually available to use, but is currently busy.
+ This can happen when some other process needs to use the audio
+ hardware.
+ \row \li Unavailable
+ \li The radio is not available to use (there may be no radio
+ hardware)
+ \row \li ResourceMissing
+ \li There is one or more resources missing, so the radio cannot
+ be used. It may be possible to try again at a later time. This
+ can occur if there is no antenna connected - see the \l antennaConnected
+ property as well.
+ \endtable
*/
-bool QDeclarativeRadio::isAvailable() const
+QDeclarativeRadio::Availability QDeclarativeRadio::availability() const
{
- return m_radioTuner->isAvailable();
+ return Availability(m_radioTuner->availabilityError());
}
void QDeclarativeRadio::setBand(QDeclarativeRadio::Band band)
@@ -462,7 +485,7 @@ void QDeclarativeRadio::tuneUp()
/*!
\qmlmethod QtMultimedia5::Radio::start()
- Starts the radio. If the radio is available, as determined by the \l isAvailable method,
+ Starts the radio. If the radio is available, as determined by the \l availability property,
this will result in the \l state becoming \c ActiveState.
*/
void QDeclarativeRadio::start()
@@ -496,6 +519,11 @@ void QDeclarativeRadio::_q_error(QRadioTuner::Error errorCode)
emit errorChanged();
}
+void QDeclarativeRadio::_q_availabilityChanged(QtMultimedia::AvailabilityError error)
+{
+ emit availabilityChanged(Availability(error));
+}
+
/*!
\qmlsignal QtMultimedia5::Radio::stationFound(int frequency, string stationId)
diff --git a/src/imports/multimedia/qdeclarativeradio_p.h b/src/imports/multimedia/qdeclarativeradio_p.h
index d16f2488e..6444e8489 100644
--- a/src/imports/multimedia/qdeclarativeradio_p.h
+++ b/src/imports/multimedia/qdeclarativeradio_p.h
@@ -76,11 +76,13 @@ class QDeclarativeRadio : public QObject
Q_PROPERTY(int minimumFrequency READ minimumFrequency NOTIFY bandChanged)
Q_PROPERTY(int maximumFrequency READ maximumFrequency NOTIFY bandChanged)
Q_PROPERTY(bool antennaConnected READ isAntennaConnected NOTIFY antennaConnectedChanged)
+ Q_PROPERTY(Availability availability READ availability NOTIFY availabilityChanged)
Q_ENUMS(State)
Q_ENUMS(Band)
Q_ENUMS(Error)
Q_ENUMS(StereoMode)
Q_ENUMS(SearchMode)
+ Q_ENUMS(Availability)
public:
enum State {
@@ -114,6 +116,13 @@ public:
SearchGetStationId = QRadioTuner::SearchGetStationId
};
+ enum Availability {
+ Available = QtMultimedia::NoError,
+ Busy = QtMultimedia::BusyError,
+ Unavailable = QtMultimedia::ServiceMissingError,
+ ResourceMissing = QtMultimedia::ResourceError
+ };
+
QDeclarativeRadio(QObject *parent = 0);
~QDeclarativeRadio();
@@ -134,7 +143,8 @@ public:
bool isAntennaConnected() const;
- Q_INVOKABLE bool isAvailable() const;
+ Q_INVOKABLE bool isAvailable() const {return availability() == Available;}
+ Availability availability() const;
public Q_SLOTS:
void setBand(QDeclarativeRadio::Band band);
@@ -165,6 +175,8 @@ Q_SIGNALS:
void stationFound(int frequency, QString stationId);
void antennaConnectedChanged(bool connectionStatus);
+ void availabilityChanged(Availability availability);
+
void errorChanged();
void error(QDeclarativeRadio::Error errorCode);
@@ -172,6 +184,7 @@ private Q_SLOTS:
void _q_stateChanged(QRadioTuner::State state);
void _q_bandChanged(QRadioTuner::Band band);
void _q_error(QRadioTuner::Error errorCode);
+ void _q_availabilityChanged(QtMultimedia::AvailabilityError);
private:
Q_DISABLE_COPY(QDeclarativeRadio)
diff --git a/src/imports/multimedia/qdeclarativeradiodata.cpp b/src/imports/multimedia/qdeclarativeradiodata.cpp
index ccc36629e..530601011 100644
--- a/src/imports/multimedia/qdeclarativeradiodata.cpp
+++ b/src/imports/multimedia/qdeclarativeradiodata.cpp
@@ -112,6 +112,9 @@ QDeclarativeRadioData::QDeclarativeRadioData(QObject *parent) :
connect(m_radioData, SIGNAL(alternativeFrequenciesEnabledChanged(bool)), this,
SIGNAL(alternativeFrequenciesEnabledChanged(bool)));
+ // Note we map availabilityError->availability
+ connect(m_radioData, SIGNAL(availabilityErrorChanged(QtMultimedia::AvailabilityError)), this, SLOT(_q_availabilityChanged(QtMultimedia::AvailabilityError)));
+
connect(m_radioData, SIGNAL(error(QRadioData::Error)), this, SLOT(_q_error(QRadioData::Error)));
}
@@ -120,15 +123,32 @@ QDeclarativeRadioData::~QDeclarativeRadioData()
}
/*!
- \qmlmethod bool QtMultimedia5::RadioData::isAvailable()
+ \qmlproperty enumeration QtMultimedia5::RadioData::availability
- Returns whether the radio data element is ready to use.
- */
-bool QDeclarativeRadioData::isAvailable() const
+ Returns the availability state of the radio data interface.
+
+ This is one of:
+
+ \table
+ \header \li Value \li Description
+ \row \li Available
+ \li The radio data interface is available to use
+ \row \li Busy
+ \li The radio data interface is usually available to use, but is currently busy.
+ \row \li Unavailable
+ \li The radio data interface is not available to use (there may be no radio
+ hardware)
+ \row \li ResourceMissing
+ \li There is one or more resources missing, so the radio cannot
+ be used. It may be possible to try again at a later time.
+ \endtable
+ */
+QDeclarativeRadioData::Availability QDeclarativeRadioData::availability() const
{
- return m_radioData->isAvailable();
+ return Availability(m_radioData->availabilityError());
}
+
/*!
\qmlproperty string QtMultimedia5::RadioData::stationId
@@ -265,4 +285,9 @@ void QDeclarativeRadioData::_q_error(QRadioData::Error errorCode)
emit errorChanged();
}
+void QDeclarativeRadioData::_q_availabilityChanged(QtMultimedia::AvailabilityError error)
+{
+ emit availabilityChanged(Availability(error));
+}
+
QT_END_NAMESPACE
diff --git a/src/imports/multimedia/qdeclarativeradiodata_p.h b/src/imports/multimedia/qdeclarativeradiodata_p.h
index 74763a0a2..66eb505c9 100644
--- a/src/imports/multimedia/qdeclarativeradiodata_p.h
+++ b/src/imports/multimedia/qdeclarativeradiodata_p.h
@@ -70,8 +70,10 @@ class QDeclarativeRadioData : public QObject
Q_PROPERTY(QString radioText READ radioText NOTIFY radioTextChanged)
Q_PROPERTY(bool alternativeFrequenciesEnabled READ alternativeFrequenciesEnabled
WRITE setAlternativeFrequenciesEnabled NOTIFY alternativeFrequenciesEnabledChanged)
+ Q_PROPERTY(Availability availability READ availability NOTIFY availabilityChanged)
Q_ENUMS(Error)
Q_ENUMS(ProgramType)
+ Q_ENUMS(Availability)
public:
@@ -130,14 +132,19 @@ public:
ReligiousTalk = QRadioData::ReligiousTalk,
Personality = QRadioData::Personality,
Public = QRadioData::Public,
- College = QRadioData::College,
+ College = QRadioData::College
+ };
+
+ enum Availability {
+ Available = QtMultimedia::NoError,
+ Busy = QtMultimedia::BusyError,
+ Unavailable = QtMultimedia::ServiceMissingError,
+ ResourceMissing = QtMultimedia::ResourceError
};
QDeclarativeRadioData(QObject *parent = 0);
~QDeclarativeRadioData();
- Q_INVOKABLE bool isAvailable() const;
-
QString stationId() const;
QDeclarativeRadioData::ProgramType programType() const;
QString programTypeName() const;
@@ -145,6 +152,9 @@ public:
QString radioText() const;
bool alternativeFrequenciesEnabled() const;
+ Q_INVOKABLE bool isAvailable() const {return availability() == Available;}
+ Availability availability() const;
+
public Q_SLOTS:
void setAlternativeFrequenciesEnabled(bool enabled);
@@ -156,12 +166,15 @@ Q_SIGNALS:
void radioTextChanged(QString radioText);
void alternativeFrequenciesEnabledChanged(bool enabled);
+ void availabilityChanged(Availability availability);
+
void errorChanged();
void error(QDeclarativeRadioData::Error errorCode);
private Q_SLOTS:
void _q_programTypeChanged(QRadioData::ProgramType programType);
void _q_error(QRadioData::Error errorCode);
+ void _q_availabilityChanged(QtMultimedia::AvailabilityError);
private:
Q_DISABLE_COPY(QDeclarativeRadioData)
diff --git a/src/multimedia/camera/qcamera.cpp b/src/multimedia/camera/qcamera.cpp
index 730a27fb3..580808c03 100644
--- a/src/multimedia/camera/qcamera.cpp
+++ b/src/multimedia/camera/qcamera.cpp
@@ -409,19 +409,9 @@ QCamera::~QCamera()
}
}
-
/*!
- Return true if the camera service is ready to use.
+ Returns the availability state of the camera service.
*/
-bool QCamera::isAvailable() const
-{
- return availabilityError() == QtMultimedia::NoError;
-}
-
-/*!
- Returns the error state of the camera service.
-*/
-
QtMultimedia::AvailabilityError QCamera::availabilityError() const
{
Q_D(const QCamera);
@@ -434,7 +424,7 @@ QtMultimedia::AvailabilityError QCamera::availabilityError() const
if (d->error != QCamera::NoError)
return QtMultimedia::ResourceError;
- return QtMultimedia::NoError;
+ return QMediaObject::availabilityError();
}
diff --git a/src/multimedia/camera/qcamera.h b/src/multimedia/camera/qcamera.h
index c2a7c4277..a48bbc9b5 100644
--- a/src/multimedia/camera/qcamera.h
+++ b/src/multimedia/camera/qcamera.h
@@ -150,7 +150,6 @@ public:
static QList<QByteArray> availableDevices();
static QString deviceDescription(const QByteArray &device);
- bool isAvailable() const;
QtMultimedia::AvailabilityError availabilityError() const;
State state() const;
diff --git a/src/multimedia/controls/controls.pri b/src/multimedia/controls/controls.pri
index 99c9631d1..919e2055c 100644
--- a/src/multimedia/controls/controls.pri
+++ b/src/multimedia/controls/controls.pri
@@ -33,7 +33,8 @@ PUBLIC_HEADERS += \
controls/qvideoencodercontrol.h \
controls/qvideorenderercontrol.h \
controls/qmediaaudioprobecontrol.h \
- controls/qmediavideoprobecontrol.h
+ controls/qmediavideoprobecontrol.h \
+ controls/qmediaavailabilitycontrol.h
PRIVATE_HEADERS += \
controls/qaudiodecodercontrol_p.h
@@ -71,4 +72,7 @@ SOURCES += \
controls/qvideorenderercontrol.cpp \
controls/qmediaaudioprobecontrol.cpp \
controls/qmediavideoprobecontrol.cpp \
- controls/qaudiodecodercontrol_p.cpp
+ controls/qaudiodecodercontrol_p.cpp \
+ controls/qmediaavailabilitycontrol.cpp
+
+
diff --git a/src/multimedia/controls/qmediaavailabilitycontrol.cpp b/src/multimedia/controls/qmediaavailabilitycontrol.cpp
new file mode 100644
index 000000000..76f615049
--- /dev/null
+++ b/src/multimedia/controls/qmediaavailabilitycontrol.cpp
@@ -0,0 +1,109 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qmediaavailabilitycontrol.h"
+#include "qmediacontrol_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QMediaAvailabilityControl
+
+ \brief The QMediaAvailabilityControl class supplies a control for reporting availability of a service.
+
+ \inmodule QtMultimedia
+
+ \ingroup multimedia
+ \ingroup multimedia_control
+
+ An instance of QMediaObject (or its derived classes) can report any changes
+ in availability via this control.
+
+ The interface name of QMediaAvailabilityControl is \c com.nokia.Qt.QMediaAvailabilityControl/1.0 as
+ defined in QMediaAvailabilityControl_iid.
+
+ \sa QMediaService::requestControl(), QMediaObject
+*/
+
+/*!
+ \macro QMediaAvailabilityControl_iid
+
+ \c com.nokia.Qt.QMediaAvailabilityControl/1.0
+
+ Defines the interface name of the QMediaAvailabilityControl class.
+
+ \relates QMediaAvailabilityControl
+*/
+
+/*!
+ Constructs an availability control object with \a parent.
+*/
+QMediaAvailabilityControl::QMediaAvailabilityControl(QObject *parent)
+ : QMediaControl(*new QMediaControlPrivate, parent)
+{
+}
+
+/*!
+ Destruct the availability control object.
+*/
+QMediaAvailabilityControl::~QMediaAvailabilityControl()
+{
+}
+
+
+/*!
+ \fn QtMultimedia::AvailabilityError QMediaAvailabilityControl::availability() const
+
+ Returns the current availability of this instance of the media service.
+ If the availability changes at run time (for example, some other media
+ client takes all media resources) the availabilityChanges() signal
+ should be emitted.
+*/
+
+
+/*!
+ \fn void QMediaAvailabilityControl::availabilityChanged(QtMultimedia::AvailabilityError availability)
+
+ Signal emitted when the current \a availability value changed.
+*/
+
+#include "moc_qmediaavailabilitycontrol.cpp"
+QT_END_NAMESPACE
diff --git a/src/multimedia/controls/qmediaavailabilitycontrol.h b/src/multimedia/controls/qmediaavailabilitycontrol.h
new file mode 100644
index 000000000..4b0b8a024
--- /dev/null
+++ b/src/multimedia/controls/qmediaavailabilitycontrol.h
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QMEDIAAVAILABILITYCONTROL_H
+#define QMEDIAAVAILABILITYCONTROL_H
+
+#include <qmediacontrol.h>
+#include <qmediaobject.h>
+#include <qtmedianamespace.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Multimedia)
+
+class Q_MULTIMEDIA_EXPORT QMediaAvailabilityControl : public QMediaControl
+{
+ Q_OBJECT
+
+public:
+ ~QMediaAvailabilityControl();
+
+ virtual QtMultimedia::AvailabilityError availability() const = 0;
+
+signals:
+ void availabilityChanged(QtMultimedia::AvailabilityError availability);
+
+protected:
+ QMediaAvailabilityControl(QObject* parent = 0);
+};
+
+#define QMediaAvailabilityControl_iid "com.nokia.Qt.QMediaAvailabilityControl/1.0"
+Q_MEDIA_DECLARE_CONTROL(QMediaAvailabilityControl, QMediaAvailabilityControl_iid)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QMEDIAAVAILABILITYCONTROL_H
diff --git a/src/multimedia/controls/qradiodatacontrol.cpp b/src/multimedia/controls/qradiodatacontrol.cpp
index 845b4a759..19656f6ec 100644
--- a/src/multimedia/controls/qradiodatacontrol.cpp
+++ b/src/multimedia/controls/qradiodatacontrol.cpp
@@ -94,18 +94,6 @@ QRadioDataControl::~QRadioDataControl()
}
/*!
- \fn bool QRadioDataControl::isAvailable() const
-
- Returns true if the radio service is ready to use.
-*/
-
-/*!
- \fn QtMultimedia::AvailabilityError QRadioDataControl::availabilityError() const
-
- Returns the error state of the radio service.
-*/
-
-/*!
\fn QRadioData::Error QRadioDataControl::error() const
Returns the error state of a radio data.
diff --git a/src/multimedia/controls/qradiodatacontrol.h b/src/multimedia/controls/qradiodatacontrol.h
index c44c6a193..11723f8c8 100644
--- a/src/multimedia/controls/qradiodatacontrol.h
+++ b/src/multimedia/controls/qradiodatacontrol.h
@@ -59,9 +59,6 @@ class Q_MULTIMEDIA_EXPORT QRadioDataControl : public QMediaControl
public:
~QRadioDataControl();
- virtual bool isAvailable() const = 0;
- virtual QtMultimedia::AvailabilityError availabilityError() const = 0;
-
virtual QString stationId() const = 0;
virtual QRadioData::ProgramType programType() const = 0;
virtual QString programTypeName() const = 0;
diff --git a/src/multimedia/controls/qradiotunercontrol.cpp b/src/multimedia/controls/qradiotunercontrol.cpp
index c86a0a1cc..c0f3cc146 100644
--- a/src/multimedia/controls/qradiotunercontrol.cpp
+++ b/src/multimedia/controls/qradiotunercontrol.cpp
@@ -100,18 +100,6 @@ QRadioTunerControl::~QRadioTunerControl()
}
/*!
- \fn bool QRadioTunerControl::isAvailable() const
-
- Returns true if the radio service is ready to use.
-*/
-
-/*!
- \fn QtMultimedia::AvailabilityError QRadioTunerControl::availabilityError() const
-
- Returns the error state of the radio service.
-*/
-
-/*!
\fn QRadioTuner::State QRadioTunerControl::state() const
Returns the current radio tuner state.
@@ -235,7 +223,7 @@ QRadioTunerControl::~QRadioTunerControl()
*/
/*!
- \fn bool QRadioTunerControl::antennaConnected() const
+ \fn bool QRadioTunerControl::isAntennaConnected() const
Identifies if there is an antenna connected to the device.
diff --git a/src/multimedia/controls/qradiotunercontrol.h b/src/multimedia/controls/qradiotunercontrol.h
index 354e9c2f1..2e64fbfaa 100644
--- a/src/multimedia/controls/qradiotunercontrol.h
+++ b/src/multimedia/controls/qradiotunercontrol.h
@@ -59,9 +59,6 @@ class Q_MULTIMEDIA_EXPORT QRadioTunerControl : public QMediaControl
public:
~QRadioTunerControl();
- virtual bool isAvailable() const = 0;
- virtual QtMultimedia::AvailabilityError availabilityError() const = 0;
-
virtual QRadioTuner::State state() const = 0;
virtual QRadioTuner::Band band() const = 0;
diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp
index de7806086..0375f5e93 100644
--- a/src/multimedia/playback/qmediaplayer.cpp
+++ b/src/multimedia/playback/qmediaplayer.cpp
@@ -778,6 +778,17 @@ void QMediaPlayer::setVideoOutput(QAbstractVideoSurface *surface)
}
}
+/*! \reimp */
+QtMultimedia::AvailabilityError QMediaPlayer::availabilityError() const
+{
+ Q_D(const QMediaPlayer);
+
+ if (!d->control)
+ return QtMultimedia::ServiceMissingError;
+
+ return QMediaObject::availabilityError();
+}
+
// Enums
/*!
\enum QMediaPlayer::State
diff --git a/src/multimedia/playback/qmediaplayer.h b/src/multimedia/playback/qmediaplayer.h
index bf5002406..eed09b566 100644
--- a/src/multimedia/playback/qmediaplayer.h
+++ b/src/multimedia/playback/qmediaplayer.h
@@ -158,6 +158,8 @@ public:
QNetworkConfiguration currentNetworkConfiguration() const;
+ QtMultimedia::AvailabilityError availabilityError() const;
+
public Q_SLOTS:
void play();
void pause();
diff --git a/src/multimedia/qmediaobject.cpp b/src/multimedia/qmediaobject.cpp
index b957e9573..3e5773cf1 100644
--- a/src/multimedia/qmediaobject.cpp
+++ b/src/multimedia/qmediaobject.cpp
@@ -47,7 +47,7 @@
#include <qmediaservice.h>
#include <qmetadatareadercontrol.h>
#include <qmediabindableinterface.h>
-
+#include <qmediaavailabilitycontrol.h>
QT_BEGIN_NAMESPACE
@@ -64,6 +64,17 @@ void QMediaObjectPrivate::_q_notify()
}
}
+void QMediaObjectPrivate::_q_availabilityChanged()
+{
+ Q_Q(QMediaObject);
+
+ // Really this should not always emit, but
+ // we can't really tell from here (isAvailable
+ // may not have changed, or the mediaobject's overridden
+ // availabilityError() may not have changed).
+ q->availabilityErrorChanged(q->availabilityError());
+ q->availabilityChanged(q->isAvailable());
+}
/*!
\class QMediaObject
@@ -104,7 +115,13 @@ QMediaObject::~QMediaObject()
QtMultimedia::AvailabilityError QMediaObject::availabilityError() const
{
- return d_func()->service == 0 ? QtMultimedia::ServiceMissingError : QtMultimedia::NoError;
+ if (d_func()->service == 0)
+ return QtMultimedia::ServiceMissingError;
+
+ if (d_func()->availabilityControl)
+ return d_func()->availabilityControl->availability();
+
+ return QtMultimedia::NoError;
}
/*!
@@ -113,7 +130,7 @@ QtMultimedia::AvailabilityError QMediaObject::availabilityError() const
bool QMediaObject::isAvailable() const
{
- return d_func()->service != 0;
+ return availabilityError() == QtMultimedia::NoError;
}
/*!
@@ -216,7 +233,7 @@ QMediaObject::QMediaObject(QObject *parent, QMediaService *service):
d->service = service;
- setupMetaData();
+ setupControls();
}
/*!
@@ -237,7 +254,7 @@ QMediaObject::QMediaObject(QMediaObjectPrivate &dd, QObject *parent,
d->service = service;
- setupMetaData();
+ setupControls();
}
/*!
@@ -360,7 +377,7 @@ QStringList QMediaObject::availableMetaData() const
*/
-void QMediaObject::setupMetaData()
+void QMediaObject::setupControls()
{
Q_D(QMediaObject);
@@ -377,6 +394,13 @@ void QMediaObject::setupMetaData()
SIGNAL(metaDataAvailableChanged(bool)),
SIGNAL(metaDataAvailableChanged(bool)));
}
+
+ d->availabilityControl = d->service->requestControl<QMediaAvailabilityControl*>();
+ if (d->availabilityControl) {
+ connect(d->availabilityControl,
+ SIGNAL(availabilityChanged(QtMultimedia::AvailabilityError)),
+ SLOT(_q_availabilityChanged()));
+ }
}
}
diff --git a/src/multimedia/qmediaobject.h b/src/multimedia/qmediaobject.h
index f1805da17..3c67dd69f 100644
--- a/src/multimedia/qmediaobject.h
+++ b/src/multimedia/qmediaobject.h
@@ -90,6 +90,7 @@ Q_SIGNALS:
void metaDataChanged(const QString &key, const QVariant &value);
void availabilityChanged(bool available);
+ void availabilityErrorChanged(QtMultimedia::AvailabilityError error);
protected:
QMediaObject(QObject *parent, QMediaService *service);
@@ -101,10 +102,11 @@ protected:
QMediaObjectPrivate *d_ptr;
private:
- void setupMetaData();
+ void setupControls();
Q_DECLARE_PRIVATE(QMediaObject)
Q_PRIVATE_SLOT(d_func(), void _q_notify())
+ Q_PRIVATE_SLOT(d_func(), void _q_availabilityChanged())
};
diff --git a/src/multimedia/qmediaobject_p.h b/src/multimedia/qmediaobject_p.h
index 310dd0492..33f713403 100644
--- a/src/multimedia/qmediaobject_p.h
+++ b/src/multimedia/qmediaobject_p.h
@@ -67,6 +67,7 @@ QT_MODULE(Multimedia)
class QMetaDataReaderControl;
+class QMediaAvailabilityControl;
#define Q_DECLARE_NON_CONST_PUBLIC(Class) \
inline Class* q_func() { return static_cast<Class *>(q_ptr); } \
@@ -82,9 +83,12 @@ public:
virtual ~QMediaObjectPrivate() {}
void _q_notify();
+ void _q_availabilityChanged();
QMediaService *service;
QMetaDataReaderControl *metaDataControl;
+ QMediaAvailabilityControl *availabilityControl;
+
QTimer* notifyTimer;
QSet<int> notifyProperties;
diff --git a/src/multimedia/radio/qradiodata.cpp b/src/multimedia/radio/qradiodata.cpp
index 7ea099c28..30a495a1a 100644
--- a/src/multimedia/radio/qradiodata.cpp
+++ b/src/multimedia/radio/qradiodata.cpp
@@ -133,29 +133,16 @@ QRadioData::~QRadioData()
}
/*!
- Returns true if the radio data service is ready to use.
-*/
-bool QRadioData::isAvailable() const
-{
- Q_D(const QRadioData);
-
- if (d->control != 0)
- return d_func()->control->isAvailable();
- else
- return false;
-}
-
-/*!
- Returns the availability error state.
+ Returns the availability of the radio data service.
*/
QtMultimedia::AvailabilityError QRadioData::availabilityError() const
{
Q_D(const QRadioData);
- if (d->control != 0)
- return d_func()->control->availabilityError();
- else
+ if (d->control == 0)
return QtMultimedia::ServiceMissingError;
+
+ return QMediaObject::availabilityError();
}
/*!
diff --git a/src/multimedia/radio/qradiodata.h b/src/multimedia/radio/qradiodata.h
index c6c07ade0..03c503134 100644
--- a/src/multimedia/radio/qradiodata.h
+++ b/src/multimedia/radio/qradiodata.h
@@ -90,7 +90,6 @@ public:
QRadioData(QObject *parent = 0);
~QRadioData();
- bool isAvailable() const;
QtMultimedia::AvailabilityError availabilityError() const;
QString stationId() const;
diff --git a/src/multimedia/radio/qradiotuner.cpp b/src/multimedia/radio/qradiotuner.cpp
index 30b77ebd8..e847d05e0 100644
--- a/src/multimedia/radio/qradiotuner.cpp
+++ b/src/multimedia/radio/qradiotuner.cpp
@@ -149,25 +149,17 @@ QRadioTuner::~QRadioTuner()
}
/*!
- Returns true if the radio tuner service is ready to use.
-*/
-bool QRadioTuner::isAvailable() const
-{
- if (d_func()->control != NULL)
- return d_func()->control->isAvailable();
- else
- return false;
-}
-
-/*!
- Returns the availability error state.
+ Returns the availability of the radio tuner.
*/
QtMultimedia::AvailabilityError QRadioTuner::availabilityError() const
{
- if (d_func()->control != NULL)
- return d_func()->control->availabilityError();
- else
+ if (d_func()->control == 0)
return QtMultimedia::ServiceMissingError;
+
+ if (!d_func()->control->isAntennaConnected())
+ return QtMultimedia::ResourceError;
+
+ return QMediaObject::availabilityError();
}
/*!
diff --git a/src/multimedia/radio/qradiotuner.h b/src/multimedia/radio/qradiotuner.h
index 46c6cfeb1..059d54098 100644
--- a/src/multimedia/radio/qradiotuner.h
+++ b/src/multimedia/radio/qradiotuner.h
@@ -86,7 +86,6 @@ public:
QRadioTuner(QObject *parent = 0);
~QRadioTuner();
- bool isAvailable() const;
QtMultimedia::AvailabilityError availabilityError() const;
State state() const;
diff --git a/src/multimedia/recording/qmediarecorder.cpp b/src/multimedia/recording/qmediarecorder.cpp
index d1f3bdd1a..d57ca0b3e 100644
--- a/src/multimedia/recording/qmediarecorder.cpp
+++ b/src/multimedia/recording/qmediarecorder.cpp
@@ -50,6 +50,7 @@
#include <qaudioencodercontrol.h>
#include <qvideoencodercontrol.h>
#include <qmediacontainercontrol.h>
+#include <qmediaavailabilitycontrol.h>
#include <qcamera.h>
#include <qcameracontrol.h>
@@ -99,6 +100,7 @@ QMediaRecorderPrivate::QMediaRecorderPrivate():
audioControl(0),
videoControl(0),
metaDataControl(0),
+ availabilityControl(0),
notifyTimer(0),
state(QMediaRecorder::StoppedState),
error(QMediaRecorder::NoError)
@@ -143,6 +145,7 @@ void QMediaRecorderPrivate::_q_serviceDestroyed()
audioControl = 0;
videoControl = 0;
metaDataControl = 0;
+ availabilityControl = 0;
}
void QMediaRecorderPrivate::_q_updateActualLocation(const QUrl &location)
@@ -179,6 +182,19 @@ void QMediaRecorderPrivate::_q_applySettings()
}
}
+void QMediaRecorderPrivate::_q_availabilityChanged(QtMultimedia::AvailabilityError error)
+{
+ Q_Q(QMediaRecorder);
+ Q_UNUSED(error);
+
+ // Really this should not always emit, but
+ // we can't really tell from here (isAvailable
+ // may not have changed, or the mediaobject's overridden
+ // availabilityError() may not have changed).
+ q->availabilityErrorChanged(q->availabilityError());
+ q->availabilityChanged(q->isAvailable());
+}
+
void QMediaRecorderPrivate::restartCamera()
{
//restart camera if it can't apply new settings in the Active state
@@ -299,6 +315,11 @@ bool QMediaRecorder::setMediaObject(QMediaObject *object)
service->releaseControl(d->metaDataControl);
}
+ if (d->availabilityControl) {
+ disconnect(d->availabilityControl, SIGNAL(availabilityChanged(QtMultimedia::AvailabilityError)),
+ this, SLOT(_q_availabilityChanged(QtMultimedia::AvailabilityError)));
+ service->releaseControl(d->availabilityControl);
+ }
}
}
@@ -307,6 +328,7 @@ bool QMediaRecorder::setMediaObject(QMediaObject *object)
d->audioControl = 0;
d->videoControl = 0;
d->metaDataControl = 0;
+ d->availabilityControl = 0;
d->mediaObject = object;
@@ -344,6 +366,12 @@ bool QMediaRecorder::setMediaObject(QMediaObject *object)
}
}
+ d->availabilityControl = service->requestControl<QMediaAvailabilityControl*>();
+ if (d->availabilityControl) {
+ connect(d->availabilityControl, SIGNAL(availabilityChanged(QtMultimedia::AvailabilityError)),
+ this, SLOT(_q_availabilityChanged(QtMultimedia::AvailabilityError)));
+ }
+
connect(d->control, SIGNAL(stateChanged(QMediaRecorder::State)),
this, SLOT(_q_stateChanged(QMediaRecorder::State)));
@@ -399,24 +427,28 @@ bool QMediaRecorder::setMediaObject(QMediaObject *object)
/*!
Returns true if media recorder service ready to use.
+
+ \sa availabilityChanged()
*/
bool QMediaRecorder::isAvailable() const
{
- if (d_func()->control != NULL)
- return true;
- else
- return false;
+ return availabilityError() == QtMultimedia::NoError;
}
/*!
Returns the availability error code.
+
+ \sa availabilityErrorChanged()
*/
QtMultimedia::AvailabilityError QMediaRecorder::availabilityError() const
{
- if (d_func()->control != NULL)
- return QtMultimedia::NoError;
- else
+ if (d_func()->control == NULL)
return QtMultimedia::ServiceMissingError;
+
+ if (d_func()->availabilityControl)
+ return d_func()->availabilityControl->availability();
+
+ return QtMultimedia::NoError;
}
QUrl QMediaRecorder::outputLocation() const
@@ -767,7 +799,7 @@ void QMediaRecorder::setEncodingSettings(const QAudioEncoderSettings &audio,
Start recording.
This is an asynchronous call, with signal
- stateCahnged(QMediaRecorder::RecordingState) being emitted when recording
+ stateChanged(QMediaRecorder::RecordingState) being emitted when recording
started, otherwise the error() signal is emitted.
*/
@@ -852,6 +884,18 @@ void QMediaRecorder::stop()
*/
/*!
+ \fn QMediaRecorder::availableChanged(bool available)
+
+ Signals that the media recorder is now available (if \a available is true), or not.
+*/
+
+/*!
+ \fn QMediaRecorder::availabilityErrorChanged(QtMultimedia::AvailabilityError availability)
+
+ Signals that the service availability has changed to \a availability.
+*/
+
+/*!
\fn QMediaRecorder::mutedChanged(bool muted)
Signals that the \a muted state has changed. If true the recording is being muted.
diff --git a/src/multimedia/recording/qmediarecorder.h b/src/multimedia/recording/qmediarecorder.h
index 1aac73cf2..84a6eca63 100644
--- a/src/multimedia/recording/qmediarecorder.h
+++ b/src/multimedia/recording/qmediarecorder.h
@@ -42,6 +42,7 @@
#ifndef QMEDIARECORDER_H
#define QMEDIARECORDER_H
+#include <qtmedianamespace.h>
#include <qmediaobject.h>
#include <qmediaencodersettings.h>
#include <qmediabindableinterface.h>
@@ -173,6 +174,9 @@ Q_SIGNALS:
void metaDataChanged();
void metaDataChanged(const QString &key, const QVariant &value);
+ void availabilityChanged(bool available);
+ void availabilityErrorChanged(QtMultimedia::AvailabilityError error);
+
protected:
QMediaRecorder(QMediaRecorderPrivate &dd, QMediaObject *mediaObject, QObject *parent = 0);
bool setMediaObject(QMediaObject *object);
@@ -188,6 +192,7 @@ private:
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())
+ Q_PRIVATE_SLOT(d_func(), void _q_availabilityChanged(QtMultimedia::AvailabilityError))
};
QT_END_NAMESPACE
diff --git a/src/multimedia/recording/qmediarecorder_p.h b/src/multimedia/recording/qmediarecorder_p.h
index b899665eb..03919ef19 100644
--- a/src/multimedia/recording/qmediarecorder_p.h
+++ b/src/multimedia/recording/qmediarecorder_p.h
@@ -53,6 +53,7 @@ class QMediaContainerControl;
class QAudioEncoderControl;
class QVideoEncoderControl;
class QMetaDataWriterControl;
+class QMediaAvailabilityControl;
class QTimer;
class QMediaRecorderPrivate
@@ -73,6 +74,7 @@ public:
QAudioEncoderControl *audioControl;
QVideoEncoderControl *videoControl;
QMetaDataWriterControl *metaDataControl;
+ QMediaAvailabilityControl *availabilityControl;
bool settingsChanged;
@@ -90,6 +92,7 @@ public:
void _q_notify();
void _q_updateNotifyInterval(int ms);
void _q_applySettings();
+ void _q_availabilityChanged(QtMultimedia::AvailabilityError error);
QMediaRecorder *q_ptr;
};
diff --git a/tests/auto/unit/qmediaobject/qmediaobject.pro b/tests/auto/unit/qmediaobject/qmediaobject.pro
index e84e5c745..71a22ee62 100644
--- a/tests/auto/unit/qmediaobject/qmediaobject.pro
+++ b/tests/auto/unit/qmediaobject/qmediaobject.pro
@@ -3,5 +3,6 @@ TARGET = tst_qmediaobject
QT += multimedia-private testlib
include (../qmultimedia_common/mockrecorder.pri)
+include (../qmultimedia_common/mock.pri)
SOURCES += tst_qmediaobject.cpp
diff --git a/tests/auto/unit/qmediaobject/tst_qmediaobject.cpp b/tests/auto/unit/qmediaobject/tst_qmediaobject.cpp
index 3887463c0..977037dd8 100644
--- a/tests/auto/unit/qmediaobject/tst_qmediaobject.cpp
+++ b/tests/auto/unit/qmediaobject/tst_qmediaobject.cpp
@@ -53,12 +53,17 @@
#include "mockmediarecorderservice.h"
#include "mockmediaserviceprovider.h"
#include "mockmetadatareadercontrol.h"
+#include "mockavailabilitycontrol.h"
-class QtTestMetaDataService : public QMediaService
+class QtTestMediaObjectService : public QMediaService
{
Q_OBJECT
public:
- QtTestMetaDataService(QObject *parent = 0):QMediaService(parent), metaDataRef(0), hasMetaData(true)
+ QtTestMediaObjectService(QObject *parent = 0, MockAvailabilityControl *availability = 0)
+ : QMediaService(parent)
+ , availabilityControl(availability)
+ , metaDataRef(0)
+ , hasMetaData(true)
{
}
@@ -66,6 +71,8 @@ public:
{
if (hasMetaData && qstrcmp(iid, QMetaDataReaderControl_iid) == 0)
return &metaData;
+ else if (qstrcmp(iid, QMediaAvailabilityControl_iid) == 0)
+ return availabilityControl;
else
return 0;
}
@@ -75,6 +82,7 @@ public:
}
MockMetaDataReaderControl metaData;
+ MockAvailabilityControl *availabilityControl;
int metaDataRef;
bool hasMetaData;
};
@@ -329,7 +337,7 @@ void tst_QMediaObject::nullMetaDataControl()
const QString titleKey(QLatin1String("Title"));
const QString title(QLatin1String("Host of Seraphim"));
- QtTestMetaDataService service;
+ QtTestMediaObjectService service;
service.hasMetaData = false;
QtTestMediaObject object(&service);
@@ -345,7 +353,7 @@ void tst_QMediaObject::nullMetaDataControl()
void tst_QMediaObject::isMetaDataAvailable()
{
- QtTestMetaDataService service;
+ QtTestMediaObjectService service;
service.metaData.setMetaDataAvailable(false);
QtTestMediaObject object(&service);
@@ -367,7 +375,7 @@ void tst_QMediaObject::isMetaDataAvailable()
void tst_QMediaObject::metaDataChanged()
{
- QtTestMetaDataService service;
+ QtTestMediaObjectService service;
QtTestMediaObject object(&service);
QSignalSpy changedSpy(&object, SIGNAL(metaDataChanged()));
@@ -408,7 +416,7 @@ void tst_QMediaObject::metaData()
QFETCH(QString, title);
QFETCH(QString, genre);
- QtTestMetaDataService service;
+ QtTestMediaObjectService service;
service.metaData.populateMetaData();
QtTestMediaObject object(&service);
@@ -430,20 +438,64 @@ void tst_QMediaObject::metaData()
void tst_QMediaObject::availability()
{
- QtTestMediaObject nullObject(0);
- QCOMPARE(nullObject.isAvailable(), false);
- QCOMPARE(nullObject.availabilityError(), QtMultimedia::ServiceMissingError);
+ {
+ QtTestMediaObject nullObject(0);
+ QCOMPARE(nullObject.isAvailable(), false);
+ QCOMPARE(nullObject.availabilityError(), QtMultimedia::ServiceMissingError);
+ }
- QtTestMetaDataService service;
- QtTestMediaObject object(&service);
- QCOMPARE(object.isAvailable(), true);
- QCOMPARE(object.availabilityError(), QtMultimedia::NoError);
+ {
+ QtTestMediaObjectService service;
+ QtTestMediaObject object(&service);
+ QCOMPARE(object.isAvailable(), true);
+ QCOMPARE(object.availabilityError(), QtMultimedia::NoError);
+ }
+
+ {
+ MockAvailabilityControl available(QtMultimedia::NoError);
+ QtTestMediaObjectService service(0, &available);
+ QtTestMediaObject object(&service);
+ QSignalSpy availabilitySpy(&object, SIGNAL(availabilityChanged(bool)));
+ QSignalSpy availabilityErrorSpy(&object, SIGNAL(availabilityChanged(bool)));
+
+ QCOMPARE(object.isAvailable(), true);
+ QCOMPARE(object.availabilityError(), QtMultimedia::NoError);
+
+ available.setAvailability(QtMultimedia::BusyError);
+ QCOMPARE(object.isAvailable(), false);
+ QCOMPARE(object.availabilityError(), QtMultimedia::BusyError);
+ QCOMPARE(availabilitySpy.count(), 1);
+ QCOMPARE(availabilityErrorSpy.count(), 1);
+
+ available.setAvailability(QtMultimedia::NoError);
+ QCOMPARE(object.isAvailable(), true);
+ QCOMPARE(object.availabilityError(), QtMultimedia::NoError);
+ QCOMPARE(availabilitySpy.count(), 2);
+ QCOMPARE(availabilityErrorSpy.count(), 2);
+ }
+
+ {
+ MockAvailabilityControl available(QtMultimedia::BusyError);
+ QtTestMediaObjectService service(0, &available);
+ QtTestMediaObject object(&service);
+ QSignalSpy availabilitySpy(&object, SIGNAL(availabilityChanged(bool)));
+ QSignalSpy availabilityErrorSpy(&object, SIGNAL(availabilityChanged(bool)));
+
+ QCOMPARE(object.isAvailable(), false);
+ QCOMPARE(object.availabilityError(), QtMultimedia::BusyError);
+
+ available.setAvailability(QtMultimedia::NoError);
+ QCOMPARE(object.isAvailable(), true);
+ QCOMPARE(object.availabilityError(), QtMultimedia::NoError);
+ QCOMPARE(availabilitySpy.count(), 1);
+ QCOMPARE(availabilityErrorSpy.count(), 1);
+ }
}
void tst_QMediaObject::service()
{
// Create the mediaobject with service.
- QtTestMetaDataService service;
+ QtTestMediaObjectService service;
QtTestMediaObject mediaObject1(&service);
// Get service and Compare if it equal to the service passed as an argument in mediaObject1.
diff --git a/tests/auto/unit/qmediarecorder/tst_qmediarecorder.cpp b/tests/auto/unit/qmediarecorder/tst_qmediarecorder.cpp
index 220bb20c9..b26164d0c 100644
--- a/tests/auto/unit/qmediarecorder/tst_qmediarecorder.cpp
+++ b/tests/auto/unit/qmediarecorder/tst_qmediarecorder.cpp
@@ -1059,17 +1059,55 @@ void tst_QMediaRecorder::testAudioSettingsDestructor()
/* availabilityError() API test. */
void tst_QMediaRecorder::testAvailabilityError()
{
- MockMediaRecorderService service(0, 0);
- MockMediaObject object(0, &service);
- QMediaRecorder recorder(&object);
- QCOMPARE(recorder.availabilityError(), QtMultimedia::ServiceMissingError);
-
- MockMediaRecorderControl recorderControl(0);
- MockMediaRecorderService service1(0, &recorderControl);
- service1.mockMetaDataControl->populateMetaData();
- MockMediaObject object1(0, &service1);
- QMediaRecorder recorder1(&object1);
- QCOMPARE(recorder1.availabilityError(), QtMultimedia::NoError);
+ {
+ MockMediaRecorderService service(0, 0);
+ MockMediaObject object(0, &service);
+ QMediaRecorder recorder(&object);
+ QCOMPARE(recorder.availabilityError(), QtMultimedia::ServiceMissingError);
+ QCOMPARE(recorder.isAvailable(), false);
+ }
+ {
+ MockMediaRecorderControl recorderControl(0);
+ MockMediaRecorderService service1(0, &recorderControl);
+ service1.mockMetaDataControl->populateMetaData();
+ MockMediaObject object1(0, &service1);
+ QMediaRecorder recorder1(&object1);
+ QCOMPARE(recorder1.availabilityError(), QtMultimedia::NoError);
+ QCOMPARE(recorder1.isAvailable(), true);
+ }
+ {
+ MockMediaRecorderControl recorderControl(0);
+ MockMediaRecorderService service1(0, &recorderControl, 0);
+ service1.mockMetaDataControl->populateMetaData();
+ MockMediaObject object1(0, &service1);
+ QMediaRecorder recorder1(&object1);
+
+ QCOMPARE(recorder1.availabilityError(), QtMultimedia::NoError);
+ QCOMPARE(recorder1.isAvailable(), true);
+ }
+ {
+ MockMediaRecorderControl recorderControl(0);
+ MockAvailabilityControl availability(QtMultimedia::NoError);
+ MockMediaRecorderService service1(0, &recorderControl, &availability);
+ service1.mockMetaDataControl->populateMetaData();
+ MockMediaObject object1(0, &service1);
+ QMediaRecorder recorder1(&object1);
+
+ QSignalSpy spy(&object1, SIGNAL(availabilityErrorChanged(QtMultimedia::AvailabilityError)));
+
+ QCOMPARE(recorder1.availabilityError(), QtMultimedia::NoError);
+ QCOMPARE(recorder1.isAvailable(), true);
+
+ availability.setAvailability(QtMultimedia::BusyError);
+ QCOMPARE(recorder1.availabilityError(), QtMultimedia::BusyError);
+ QCOMPARE(recorder1.isAvailable(), false);
+ QCOMPARE(spy.count(), 1);
+
+ availability.setAvailability(QtMultimedia::NoError);
+ QCOMPARE(recorder1.availabilityError(), QtMultimedia::NoError);
+ QCOMPARE(recorder1.isAvailable(), true);
+ QCOMPARE(spy.count(), 2);
+ }
}
/* isAvailable() API test. */
diff --git a/tests/auto/unit/qmultimedia_common/mock.pri b/tests/auto/unit/qmultimedia_common/mock.pri
index 8b8f3e7fa..269981a86 100644
--- a/tests/auto/unit/qmultimedia_common/mock.pri
+++ b/tests/auto/unit/qmultimedia_common/mock.pri
@@ -4,4 +4,5 @@ INCLUDEPATH += $$PWD \
HEADERS *= \
../qmultimedia_common/mockmediaserviceprovider.h \
../qmultimedia_common/mockmediaservice.h \
- ../qmultimedia_common/mockmediaobject.h
+ ../qmultimedia_common/mockmediaobject.h \
+ ../qmultimedia_common/mockavailabilitycontrol.h
diff --git a/tests/auto/unit/qmultimedia_common/mockavailabilitycontrol.h b/tests/auto/unit/qmultimedia_common/mockavailabilitycontrol.h
new file mode 100644
index 000000000..9e449da10
--- /dev/null
+++ b/tests/auto/unit/qmultimedia_common/mockavailabilitycontrol.h
@@ -0,0 +1,75 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#ifndef MOCKAVAILABILITYCONTROL_H
+#define MOCKAVAILABILITYCONTROL_H
+
+#include <qmediaavailabilitycontrol.h>
+
+class MockAvailabilityControl : public QMediaAvailabilityControl
+{
+ Q_OBJECT
+
+public:
+ MockAvailabilityControl(QtMultimedia::AvailabilityError available)
+ : m_availability(available)
+ {
+
+ }
+
+ QtMultimedia::AvailabilityError availability() const
+ {
+ return m_availability;
+ }
+
+ void setAvailability(QtMultimedia::AvailabilityError availability)
+ {
+ if (m_availability != availability) {
+ m_availability = availability;
+ emit availabilityChanged(availability);
+ }
+ }
+
+ QtMultimedia::AvailabilityError m_availability;
+};
+
+#endif // MOCKAVAILABILITYCONTROL_H
diff --git a/tests/auto/unit/qmultimedia_common/mockmediarecorderservice.h b/tests/auto/unit/qmultimedia_common/mockmediarecorderservice.h
index bce8c42c9..7d2307316 100644
--- a/tests/auto/unit/qmultimedia_common/mockmediarecorderservice.h
+++ b/tests/auto/unit/qmultimedia_common/mockmediarecorderservice.h
@@ -50,14 +50,16 @@
#include "mockaudioendpointselector.h"
#include "mockmediacontainercontrol.h"
#include "mockmetadatawritercontrol.h"
+#include "mockavailabilitycontrol.h"
class MockMediaRecorderService : public QMediaService
{
Q_OBJECT
public:
- MockMediaRecorderService(QObject *parent = 0, QMediaControl *control = 0):
+ MockMediaRecorderService(QObject *parent = 0, QMediaControl *control = 0, MockAvailabilityControl *availability = 0):
QMediaService(parent),
mockControl(control),
+ mockAvailabilityControl(availability),
hasControls(true)
{
mockAudioEndpointSelector = new MockAudioEndpointSelector(parent);
@@ -81,6 +83,8 @@ public:
return mockVideoEncoderControl;
if (hasControls && qstrcmp(name, QMetaDataWriterControl_iid) == 0)
return mockMetaDataControl;
+ if (hasControls && qstrcmp(name, QMediaAvailabilityControl_iid) == 0)
+ return mockAvailabilityControl;
return 0;
}
@@ -95,6 +99,8 @@ public:
QMediaContainerControl *mockFormatControl;
QVideoEncoderControl *mockVideoEncoderControl;
MockMetaDataWriterControl *mockMetaDataControl;
+ MockAvailabilityControl *mockAvailabilityControl;
+
bool hasControls;
};
diff --git a/tests/auto/unit/qmultimedia_common/mockradiodatacontrol.h b/tests/auto/unit/qmultimedia_common/mockradiodatacontrol.h
index 45bec9e42..35e482ff3 100644
--- a/tests/auto/unit/qmultimedia_common/mockradiodatacontrol.h
+++ b/tests/auto/unit/qmultimedia_common/mockradiodatacontrol.h
@@ -57,15 +57,6 @@ public:
using QRadioDataControl::error;
- bool isAvailable() const
- {
- return true;
- }
- QtMultimedia::AvailabilityError availabilityError() const
- {
- return QtMultimedia::NoError;
- }
-
QRadioData::Error error() const
{
return m_err;
diff --git a/tests/auto/unit/qmultimedia_common/mockradiotunercontrol.h b/tests/auto/unit/qmultimedia_common/mockradiotunercontrol.h
index 5b1fe7a09..226cd94e0 100644
--- a/tests/auto/unit/qmultimedia_common/mockradiotunercontrol.h
+++ b/tests/auto/unit/qmultimedia_common/mockradiotunercontrol.h
@@ -66,15 +66,6 @@ public:
return m_active ? QRadioTuner::ActiveState : QRadioTuner::StoppedState;
}
- bool isAvailable() const
- {
- return true;
- }
- QtMultimedia::AvailabilityError availabilityError() const
- {
- return QtMultimedia::NoError;
- }
-
QRadioTuner::Band band() const
{
return m_band;