Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qquickmediaplayer.cpp
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
5#include <QtQml/qqmlcontext.h>
6
8
10{
11 connect(this, &QMediaPlayer::positionChanged, this, &QQuickMediaPlayer::onPositionChanged);
12 connect(this, &QMediaPlayer::durationChanged, this, &QQuickMediaPlayer::onDurationChanged);
14 &QQuickMediaPlayer::onMediaStatusChanged);
15}
16
18{
19 if (m_source == source)
20 return;
21 m_source = source;
22 m_wasMediaLoaded = false;
23 const QQmlContext *context = qmlContext(this);
24 setSource(context ? context->resolvedUrl(source) : source);
26}
27
29{
30 return m_source;
31}
32
37
39{
40 return static_cast<int>(position());
41}
42
44{
45 return static_cast<int>(duration());
46}
47
48void QQuickMediaPlayer::onPositionChanged(qint64 position)
49{
50 emit qmlPositionChanged(static_cast<int>(position));
51}
52
53void QQuickMediaPlayer::onDurationChanged(qint64 duration)
54{
55 emit qmlDurationChanged(static_cast<int>(duration));
56}
57
58void QQuickMediaPlayer::onMediaStatusChanged(QMediaPlayer::MediaStatus status)
59{
60 if (status != QMediaPlayer::LoadedMedia || std::exchange(m_wasMediaLoaded, true))
61 return;
62
63 // run with QueuedConnection to make the user able to handle the media status change
64 // by themselves, otherwise play() might change the status in the handler.
65 auto tryAutoPlay = [this]() {
66 if (m_autoPlay && mediaStatus() == QMediaPlayer::LoadedMedia)
67 play();
68 };
69
70 if (m_autoPlay)
72}
73
83{
84 return m_autoPlay;
85}
86
88{
89 if (std::exchange(m_autoPlay, autoPlay) != autoPlay)
91}
92
94
95#include "moc_qquickmediaplayer_p.cpp"
The QMediaPlayer class allows the playing of a media files.
void setSource(const QUrl &source)
\qmlproperty url QtMultimedia::MediaPlayer::source
void durationChanged(qint64 duration)
Signals the duration of the content has changed to duration, expressed in milliseconds.
MediaStatus mediaStatus
the status of the current media stream.
void positionChanged(qint64 position)
Signals the position of the content has changed to position, expressed in milliseconds.
MediaStatus
\qmlproperty enumeration QtMultimedia::MediaPlayer::playbackState
void play()
\qmlmethod QtMultimedia::MediaPlayer::play()
void mediaStatusChanged(QMediaPlayer::MediaStatus status)
Signals that the status of the current media has changed.
\inmodule QtCore
Definition qobject.h:103
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
Definition qobject.cpp:2960
The QQmlContext class defines a context within a QML engine.
Definition qqmlcontext.h:25
void qmlDurationChanged(int duration)
void autoPlayChanged(bool autoPlay)
void qmlSetSource(const QUrl &source)
void setAutoPlay(bool autoPlay)
void qmlPositionChanged(int position)
QQuickMediaPlayer(QObject *parent=nullptr)
void qmlSourceChanged(const QUrl &source)
void setQmlPosition(int position)
\inmodule QtCore
Definition qurl.h:94
Combined button and popup list for selecting options.
@ QueuedConnection
static void * context
n void setPosition(void) \n\
GLsizei GLsizei GLchar * source
QQmlContext * qmlContext(const QObject *obj)
Definition qqml.cpp:75
static qreal position(const QQuickItem *item, QQuickAnchors::Anchor anchorLine)
#define emit
long long qint64
Definition qtypes.h:60
static bool invokeMethod(QObject *obj, const char *member, Qt::ConnectionType, QGenericReturnArgument ret, QGenericArgument val0=QGenericArgument(nullptr), QGenericArgument val1=QGenericArgument(), QGenericArgument val2=QGenericArgument(), QGenericArgument val3=QGenericArgument(), QGenericArgument val4=QGenericArgument(), QGenericArgument val5=QGenericArgument(), QGenericArgument val6=QGenericArgument(), QGenericArgument val7=QGenericArgument(), QGenericArgument val8=QGenericArgument(), QGenericArgument val9=QGenericArgument())
\threadsafe This is an overloaded member function, provided for convenience. It differs from the abov...