• Kai Koehne's avatar
    Automatically register the latest import version · 871a097d
    Kai Koehne authored
    
    This follows what was done in d28c9f6a for Qt Quick Controls 2.
    The latest import version (e.g. 2.11 in Qt 5.11) will automatically be
    registered whenever the Qt version is bumped.
    
    This avoids needing to wait until a new type is added (or a new
    revision is added to an existing type) before being able to use the
    newest Qt Quick version.
    
    Change-Id: Ib14052fdf2a4cfa7b71f739fe00ce9a95dadb0a0
    Reviewed-by: default avatarShawn Rutledge <shawn.rutledge@qt.io>
    871a097d
multimedia.cpp 8.11 KiB
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part 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$
****************************************************************************/
#include <QtQml/qqmlextensionplugin.h>
#include <QtQml/qqml.h>
#include <QtQml/qqmlengine.h>
#include <QtQml/qqmlcomponent.h>
#include "qsoundeffect.h"
#include <private/qdeclarativevideooutput_p.h>
#include "qabstractvideofilter.h"
#include "qdeclarativemultimediaglobal_p.h"
#include "qdeclarativemediametadata_p.h"
#include "qdeclarativeaudio_p.h"
#include "qdeclarativeradio_p.h"
#include "qdeclarativeradiodata_p.h"
#include "qdeclarativeplaylist_p.h"
#include "qdeclarativecamera_p.h"
#include "qdeclarativecamerapreviewprovider_p.h"
#include "qdeclarativecameraexposure_p.h"
#include "qdeclarativecameraflash_p.h"
#include "qdeclarativecamerafocus_p.h"
#include "qdeclarativecameraimageprocessing_p.h"
#include "qdeclarativecameraviewfinder_p.h"
#include "qdeclarativetorch_p.h"
QML_DECLARE_TYPE(QSoundEffect)
QT_BEGIN_NAMESPACE
static QObject *multimedia_global_object(QQmlEngine *qmlEngine, QJSEngine *jsEngine)
    Q_UNUSED(qmlEngine)
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
return new QDeclarativeMultimediaGlobal(jsEngine); } class QMultimediaDeclarativeModule : public QQmlExtensionPlugin { Q_OBJECT Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: QMultimediaDeclarativeModule(QObject *parent = 0) : QQmlExtensionPlugin(parent) { } void registerTypes(const char *uri) override { Q_ASSERT(QLatin1String(uri) == QLatin1String("QtMultimedia")); // 5.0 types qmlRegisterType<QSoundEffect>(uri, 5, 0, "SoundEffect"); qmlRegisterType<QDeclarativeAudio>(uri, 5, 0, "Audio"); qmlRegisterType<QDeclarativeAudio>(uri, 5, 0, "MediaPlayer"); qmlRegisterType<QDeclarativeVideoOutput>(uri, 5, 0, "VideoOutput"); qmlRegisterType<QDeclarativeRadio>(uri, 5, 0, "Radio"); qmlRegisterType<QDeclarativeRadioData>(uri, 5, 0, "RadioData"); qmlRegisterType<QDeclarativeCamera>(uri, 5, 0, "Camera"); qmlRegisterType<QDeclarativeTorch>(uri, 5, 0, "Torch"); qmlRegisterUncreatableType<QDeclarativeCameraCapture>(uri, 5, 0, "CameraCapture", trUtf8("CameraCapture is provided by Camera")); qmlRegisterUncreatableType<QDeclarativeCameraRecorder>(uri, 5, 0, "CameraRecorder", trUtf8("CameraRecorder is provided by Camera")); qmlRegisterUncreatableType<QDeclarativeCameraExposure>(uri, 5, 0, "CameraExposure", trUtf8("CameraExposure is provided by Camera")); qmlRegisterUncreatableType<QDeclarativeCameraFocus>(uri, 5, 0, "CameraFocus", trUtf8("CameraFocus is provided by Camera")); qmlRegisterUncreatableType<QDeclarativeCameraFlash>(uri, 5, 0, "CameraFlash", trUtf8("CameraFlash is provided by Camera")); qmlRegisterUncreatableType<QDeclarativeCameraImageProcessing>(uri, 5, 0, "CameraImageProcessing", trUtf8("CameraImageProcessing is provided by Camera")); // 5.2 types qmlRegisterType<QDeclarativeVideoOutput, 2>(uri, 5, 2, "VideoOutput"); // 5.3 types // Nothing changed, but adding "import QtMultimedia 5.3" in QML will fail unless at // least one type is registered for that version. qmlRegisterType<QSoundEffect>(uri, 5, 3, "SoundEffect"); // 5.4 types qmlRegisterSingletonType<QDeclarativeMultimediaGlobal>(uri, 5, 4, "QtMultimedia", multimedia_global_object); qmlRegisterType<QDeclarativeCamera, 1>(uri, 5, 4, "Camera"); qmlRegisterUncreatableType<QDeclarativeCameraViewfinder>(uri, 5, 4, "CameraViewfinder", trUtf8("CameraViewfinder is provided by Camera")); // 5.5 types qmlRegisterUncreatableType<QDeclarativeCameraImageProcessing, 1>(uri, 5, 5, "CameraImageProcessing", trUtf8("CameraImageProcessing is provided by Camera")); qmlRegisterType<QDeclarativeCamera, 2>(uri, 5, 5, "Camera"); // 5.6 types qmlRegisterType<QDeclarativeAudio, 1>(uri, 5, 6, "Audio"); qmlRegisterType<QDeclarativeAudio, 1>(uri, 5, 6, "MediaPlayer"); qmlRegisterType<QDeclarativePlaylist>(uri, 5, 6, "Playlist"); qmlRegisterType<QDeclarativePlaylistItem>(uri, 5, 6, "PlaylistItem"); // 5.7 types qmlRegisterType<QDeclarativePlaylist, 1>(uri, 5, 7, "Playlist"); qmlRegisterUncreatableType<QDeclarativeCameraImageProcessing, 2>(uri, 5, 7, "CameraImageProcessing", trUtf8("CameraImageProcessing is provided by Camera")); // 5.8 types (nothing new, re-register one of the types) qmlRegisterType<QSoundEffect>(uri, 5, 8, "SoundEffect"); // 5.9 types qmlRegisterType<QDeclarativeAudio, 2>(uri, 5, 9, "Audio");
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
qmlRegisterType<QDeclarativeAudio, 2>(uri, 5, 9, "MediaPlayer"); qmlRegisterUncreatableType<QDeclarativeCameraCapture, 1>(uri, 5, 9, "CameraCapture", trUtf8("CameraCapture is provided by Camera")); qmlRegisterUncreatableType<QDeclarativeCameraFlash, 1>(uri, 5, 9, "CameraFlash", trUtf8("CameraFlash is provided by Camera")); // 5.11 types qmlRegisterType<QDeclarativeAudio, 3>(uri, 5, 11, "Audio"); qmlRegisterType<QDeclarativeAudio, 3>(uri, 5, 11, "MediaPlayer"); qmlRegisterUncreatableType<QDeclarativeCameraFocus, 1>(uri, 5, 11, "CameraFocus", trUtf8("CameraFocus is provided by Camera")); qmlRegisterUncreatableType<QDeclarativeCameraExposure, 1>(uri, 5, 11, "CameraExposure", trUtf8("CameraExposure is provided by Camera")); qmlRegisterUncreatableType<QDeclarativeCameraImageProcessing, 3>(uri, 5, 11, "CameraImageProcessing", trUtf8("CameraImageProcessing is provided by Camera")); qmlRegisterType<QDeclarativeMediaMetaData>(); qmlRegisterType<QAbstractVideoFilter>(); // Auto-increment the import to stay in sync with ALL future QtQuick minor versions from 5.11 onward qmlRegisterModule(uri, 5, QT_VERSION_MINOR); } void initializeEngine(QQmlEngine *engine, const char *uri) override { Q_UNUSED(uri); engine->addImageProvider("camera", new QDeclarativeCameraPreviewProvider); } }; QT_END_NAMESPACE #include "multimedia.moc"