summaryrefslogtreecommitdiffstats
path: root/src/multimediaquick/qquickmediaplayer_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimediaquick/qquickmediaplayer_p.h')
-rw-r--r--src/multimediaquick/qquickmediaplayer_p.h86
1 files changed, 34 insertions, 52 deletions
diff --git a/src/multimediaquick/qquickmediaplayer_p.h b/src/multimediaquick/qquickmediaplayer_p.h
index 1c2d553d9..be2ad6b12 100644
--- a/src/multimediaquick/qquickmediaplayer_p.h
+++ b/src/multimediaquick/qquickmediaplayer_p.h
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the plugins of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QQUICKMEDIAPLAYER_H
#define QQUICKMEDIAPLAYER_H
@@ -53,8 +17,8 @@
#include <QMediaPlayer>
#include <QtQml/qqml.h>
-#include <QtQml/qqmlcontext.h>
#include <qtmultimediaquickexports.h>
+#include <qurl.h>
#include <private/qglobal_p.h>
QT_BEGIN_NAMESPACE
@@ -62,30 +26,48 @@ QT_BEGIN_NAMESPACE
class Q_MULTIMEDIAQUICK_EXPORT QQuickMediaPlayer : public QMediaPlayer
{
Q_OBJECT
- Q_PROPERTY(QUrl source READ qmlSource WRITE qmlSetSource NOTIFY sourceChanged)
+ Q_PROPERTY(QUrl source READ qmlSource WRITE qmlSetSource NOTIFY qmlSourceChanged FINAL)
+
+ // qml doesn't support qint64, so we have to convert to the supported type.
+ // Int is expected to be enough for actual purposes.
+ Q_PROPERTY(int duration READ qmlDuration NOTIFY qmlDurationChanged FINAL)
+ Q_PROPERTY(int position READ qmlPosition WRITE setQmlPosition NOTIFY qmlPositionChanged FINAL)
+ Q_PROPERTY(bool autoPlay READ autoPlay WRITE setAutoPlay NOTIFY autoPlayChanged FINAL)
+
QML_NAMED_ELEMENT(MediaPlayer)
public:
- QQuickMediaPlayer(QObject *parent = nullptr) : QMediaPlayer(parent) {}
+ QQuickMediaPlayer(QObject *parent = nullptr);
+
+ void qmlSetSource(const QUrl &source);
+
+ QUrl qmlSource() const;
- void qmlSetSource(const QUrl &source)
- {
- if (m_source == source)
- return;
+ void setQmlPosition(int position);
- m_source = source;
- const QQmlContext *context = qmlContext(this);
- setSource(context ? context->resolvedUrl(source) : source);
- emit sourceChanged(source);
- }
+ int qmlPosition() const;
- QUrl qmlSource() const { return m_source; }
+ int qmlDuration() const;
+
+ bool autoPlay() const;
+
+ void setAutoPlay(bool autoPlay);
+
+private:
+ void onPositionChanged(qint64 position);
+ void onDurationChanged(qint64 position);
+ void onMediaStatusChanged(QMediaPlayer::MediaStatus status);
Q_SIGNALS:
- void sourceChanged(const QUrl &source);
+ void qmlSourceChanged(const QUrl &source);
+ void qmlPositionChanged(int position);
+ void qmlDurationChanged(int duration);
+ void autoPlayChanged(bool autoPlay);
private:
QUrl m_source;
+ bool m_autoPlay = false;
+ bool m_wasMediaLoaded = false;
};
QT_END_NAMESPACE