void QDeclarativeMediaBase::setObject(QObject *object) { m_qmlObject = object; if ((m_mediaProvider = QMediaServiceProvider::defaultServiceProvider()) != 0) { if ((m_mediaService = m_mediaProvider->requestService(Q_MEDIASERVICE_MEDIAPLAYER)) != 0) { m_playerControl = qobject_cast<QMediaPlayerControl *>( m_mediaService->requestControl(QMediaPlayerControl_iid)); m_metaDataControl = qobject_cast<QMetaDataReaderControl *>( m_mediaService->requestControl(QMetaDataReaderControl_iid)); m_mediaObject = new QDeclarativeMediaBaseObject(m_mediaService); } } if (m_playerControl) { QObject::connect(m_playerControl, SIGNAL(stateChanged(QMediaPlayer::State)), object, SLOT(_q_statusChanged())); QObject::connect(m_playerControl, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), object, SLOT(_q_statusChanged())); QObject::connect(m_playerControl, SIGNAL(mediaChanged(QMediaContent)), object, SIGNAL(sourceChanged())); QObject::connect(m_playerControl, SIGNAL(durationChanged(qint64)), object, SIGNAL(durationChanged())); QObject::connect(m_playerControl, SIGNAL(positionChanged(qint64)), object, SIGNAL(positionChanged())); QObject::connect(m_playerControl, SIGNAL(volumeChanged(int)), object, SIGNAL(volumeChanged())); QObject::connect(m_playerControl, SIGNAL(mutedChanged(bool)), object, SIGNAL(mutedChanged())); QObject::connect(m_playerControl, SIGNAL(bufferStatusChanged(int)), object, SIGNAL(bufferProgressChanged())); QObject::connect(m_playerControl, SIGNAL(seekableChanged(bool)), object, SIGNAL(seekableChanged())); QObject::connect(m_playerControl, SIGNAL(playbackRateChanged(qreal)), object, SIGNAL(playbackRateChanged())); QObject::connect(m_playerControl, SIGNAL(error(int,QString)), object, SLOT(_q_error(int,QString))); m_animation = new QDeclarativeMediaBaseAnimation(this); m_error = QMediaPlayer::NoError; } else { m_playerControl = new QDeclarativeMediaBasePlayerControl(object); } if (!m_metaDataControl) m_metaDataControl = new QDeclarativeMediaBaseMetaDataControl(object); m_metaData.reset(new QDeclarativeMediaMetaData(m_metaDataControl)); QObject::connect(m_metaDataControl, SIGNAL(metaDataChanged()), m_metaData.data(), SIGNAL(metaDataChanged())); }
void QDeclarativeAudio::classBegin() { m_player = new QMediaPlayer(this); connect(m_player, SIGNAL(stateChanged(QMediaPlayer::State)), this, SLOT(_q_statusChanged())); connect(m_player, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), this, SLOT(_q_statusChanged())); connect(m_player, SIGNAL(mediaChanged(QMediaContent)), this, SIGNAL(sourceChanged())); connect(m_player, SIGNAL(durationChanged(qint64)), this, SIGNAL(durationChanged())); connect(m_player, SIGNAL(positionChanged(qint64)), this, SIGNAL(positionChanged())); connect(m_player, SIGNAL(volumeChanged(int)), this, SIGNAL(volumeChanged())); connect(m_player, SIGNAL(mutedChanged(bool)), this, SIGNAL(mutedChanged())); connect(m_player, SIGNAL(bufferStatusChanged(int)), this, SIGNAL(bufferProgressChanged())); connect(m_player, SIGNAL(seekableChanged(bool)), this, SIGNAL(seekableChanged())); connect(m_player, SIGNAL(playbackRateChanged(qreal)), this, SIGNAL(playbackRateChanged())); connect(m_player, SIGNAL(error(QMediaPlayer::Error)), this, SLOT(_q_error(QMediaPlayer::Error))); connect(m_player, SIGNAL(audioAvailableChanged(bool)), this, SIGNAL(hasAudioChanged())); connect(m_player, SIGNAL(videoAvailableChanged(bool)), this, SIGNAL(hasVideoChanged())); m_error = m_player->availability() == QMultimedia::ServiceMissing ? QMediaPlayer::ServiceMissingError : QMediaPlayer::NoError; connect(m_player, SIGNAL(availabilityChanged(QMultimedia::AvailabilityStatus)), this, SLOT(_q_availabilityChanged(QMultimedia::AvailabilityStatus))); m_metaData.reset(new QDeclarativeMediaMetaData(m_player)); connect(m_player, SIGNAL(metaDataChanged()), m_metaData.data(), SIGNAL(metaDataChanged())); emit mediaObjectChanged(); }