5#include <QtQml/qqmlcontext.h>
9QQuickMediaPlayer::QQuickMediaPlayer(QObject *parent) : QMediaPlayer(parent)
11 connect(
this, &QMediaPlayer::mediaStatusChanged,
this,
12 &QQuickMediaPlayer::onMediaStatusChanged);
15void QQuickMediaPlayer::qmlSetSource(
const QUrl &source)
17 if (m_source == source)
20 const QQmlContext *context = qmlContext(
this);
21 setSource(context ? context->resolvedUrl(source) : source);
22 m_wasMediaLoaded =
false;
23 emit qmlSourceChanged(source);
26QUrl QQuickMediaPlayer::qmlSource()
const
31void QQuickMediaPlayer::onMediaStatusChanged(QMediaPlayer::MediaStatus status)
33 if (status != QMediaPlayer::LoadedMedia || std::exchange(m_wasMediaLoaded,
true))
38 auto tryAutoPlay = [
this]() {
39 if (m_autoPlay && mediaStatus() == QMediaPlayer::LoadedMedia)
44 QMetaObject::invokeMethod(
this, tryAutoPlay, Qt::QueuedConnection);
48
49
50
51
52
53
55bool QQuickMediaPlayer::autoPlay()
const
60void QQuickMediaPlayer::setAutoPlay(
bool autoPlay)
62 if (std::exchange(m_autoPlay, autoPlay) != autoPlay)
63 emit autoPlayChanged(autoPlay);
68#include "moc_qquickmediaplayer_p.cpp"
Combined button and popup list for selecting options.