/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QtQml module 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 #include #include #include #include #include #include QT_BEGIN_NAMESPACE bool QQmlValueTypeProvider::initValueType(int type, QVariant& dst) { const QMetaType metaType(type); if (!metaType.isValid()) return false; dst = QVariant(QMetaType(type)); return true; } bool QQmlValueTypeProvider::createValueType(int type, const QJSValue &s, QVariant &data) { const QQmlType qmlType = QQmlMetaType::qmlType(type, QQmlMetaType::TypeIdCategory::MetaType); if (auto valueTypeFunction = qmlType.createValueTypeFunction()) { QVariant result = valueTypeFunction(s); if (result.userType() == type) { data = std::move(result); return true; } } return false; } bool QQmlValueTypeProvider::equalValueType(int type, const void *lhs, const QVariant& rhs) { Q_ASSERT(lhs); return QMetaType(type).equals(lhs, rhs.constData()); } bool QQmlValueTypeProvider::readValueType(const QVariant& src, void *dst, int type) { Q_ASSERT(dst); const QMetaType dstType(type); if (!dstType.isValid() || (src.metaType() == dstType && dstType.equals(src.constData(), dst))) return false; dstType.destruct(dst); dstType.construct(dst, src.metaType() == dstType ? src.constData() : nullptr); return true; } bool QQmlValueTypeProvider::writeValueType(int type, const void *src, QVariant& dst) { Q_ASSERT(src); const QMetaType srcType(type); if (!srcType.isValid() || (dst.metaType() == srcType && srcType.equals(src, dst.constData()))) return false; dst = QVariant(srcType, src); return true; } Q_GLOBAL_STATIC(QQmlValueTypeProvider, valueTypeProvider) Q_AUTOTEST_EXPORT QQmlValueTypeProvider *QQml_valueTypeProvider() { return valueTypeProvider(); } QQmlColorProvider::~QQmlColorProvider() {} QVariant QQmlColorProvider::colorFromString(const QString &, bool *ok) { if (ok) *ok = false; return QVariant(); } unsigned QQmlColorProvider::rgbaFromString(const QString &, bool *ok) { if (ok) *ok = false; return 0; } QVariant QQmlColorProvider::fromRgbF(double, double, double, double) { return QVariant(); } QVariant QQmlColorProvider::fromHslF(double, double, double, double) { return QVariant(); } QVariant QQmlColorProvider::fromHsvF(double, double, double, double) { return QVariant(); } QVariant QQmlColorProvider::lighter(const QVariant &, qreal) { return QVariant(); } QVariant QQmlColorProvider::darker(const QVariant &, qreal) { return QVariant(); } QVariant QQmlColorProvider::alpha(const QVariant &, qreal) { return QVariant(); } QVariant QQmlColorProvider::tint(const QVariant &, const QVariant &) { return QVariant(); } static QQmlColorProvider *colorProvider = nullptr; Q_QML_PRIVATE_EXPORT QQmlColorProvider *QQml_setColorProvider(QQmlColorProvider *newProvider) { QQmlColorProvider *old = colorProvider; colorProvider = newProvider; return old; } static QQmlColorProvider **getColorProvider(void) { if (colorProvider == nullptr) { qWarning() << "Warning: QQml_colorProvider: no color provider has been set!"; static QQmlColorProvider nullColorProvider; colorProvider = &nullColorProvider; } return &colorProvider; } Q_AUTOTEST_EXPORT QQmlColorProvider *QQml_colorProvider(void) { static QQmlColorProvider **providerPtr = getColorProvider(); return *providerPtr; } QQmlGuiProvider::~QQmlGuiProvider() {} QQmlApplication *QQmlGuiProvider::application(QObject *parent) { return new QQmlApplication(parent); } QStringList QQmlGuiProvider::fontFamilies() { return QStringList(); } bool QQmlGuiProvider::openUrlExternally(const QUrl &) { return false; } QObject *QQmlGuiProvider::inputMethod() { // We don't have any input method code by default QObject *o = new QObject(); o->setObjectName(QStringLiteral("No inputMethod available")); QQmlEngine::setObjectOwnership(o, QQmlEngine::JavaScriptOwnership); return o; } QObject *QQmlGuiProvider::styleHints() { QObject *o = new QObject(); o->setObjectName(QStringLiteral("No styleHints available")); QQmlEngine::setObjectOwnership(o, QQmlEngine::JavaScriptOwnership); return o; } QString QQmlGuiProvider::pluginName() const { return QString(); } static QQmlGuiProvider *guiProvider = nullptr; Q_QML_PRIVATE_EXPORT QQmlGuiProvider *QQml_setGuiProvider(QQmlGuiProvider *newProvider) { QQmlGuiProvider *old = guiProvider; guiProvider = newProvider; return old; } static QQmlGuiProvider **getGuiProvider(void) { if (guiProvider == nullptr) { static QQmlGuiProvider nullGuiProvider; //Still provides an application with no GUI support guiProvider = &nullGuiProvider; } return &guiProvider; } Q_AUTOTEST_EXPORT QQmlGuiProvider *QQml_guiProvider(void) { static QQmlGuiProvider **providerPtr = getGuiProvider(); return *providerPtr; } //Docs in qqmlengine.cpp QQmlApplication::QQmlApplication(QObject *parent) : QObject(*(new QQmlApplicationPrivate),parent) { connect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), this, SIGNAL(aboutToQuit())); connect(QCoreApplication::instance(), SIGNAL(applicationNameChanged()), this, SIGNAL(nameChanged())); connect(QCoreApplication::instance(), SIGNAL(applicationVersionChanged()), this, SIGNAL(versionChanged())); connect(QCoreApplication::instance(), SIGNAL(organizationNameChanged()), this, SIGNAL(organizationChanged())); connect(QCoreApplication::instance(), SIGNAL(organizationDomainChanged()), this, SIGNAL(domainChanged())); } QQmlApplication::QQmlApplication(QQmlApplicationPrivate &dd, QObject *parent) : QObject(dd, parent) { connect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), this, SIGNAL(aboutToQuit())); connect(QCoreApplication::instance(), SIGNAL(applicationNameChanged()), this, SIGNAL(nameChanged())); connect(QCoreApplication::instance(), SIGNAL(applicationVersionChanged()), this, SIGNAL(versionChanged())); connect(QCoreApplication::instance(), SIGNAL(organizationNameChanged()), this, SIGNAL(organizationChanged())); connect(QCoreApplication::instance(), SIGNAL(organizationDomainChanged()), this, SIGNAL(domainChanged())); } QStringList QQmlApplication::args() { Q_D(QQmlApplication); if (!d->argsInit) { d->argsInit = true; d->args = QCoreApplication::arguments(); } return d->args; } QString QQmlApplication::name() const { return QCoreApplication::instance()->applicationName(); } QString QQmlApplication::version() const { return QCoreApplication::instance()->applicationVersion(); } QString QQmlApplication::organization() const { return QCoreApplication::instance()->organizationName(); } QString QQmlApplication::domain() const { return QCoreApplication::instance()->organizationDomain(); } void QQmlApplication::setName(const QString &arg) { QCoreApplication::instance()->setApplicationName(arg); } void QQmlApplication::setVersion(const QString &arg) { QCoreApplication::instance()->setApplicationVersion(arg); } void QQmlApplication::setOrganization(const QString &arg) { QCoreApplication::instance()->setOrganizationName(arg); } void QQmlApplication::setDomain(const QString &arg) { QCoreApplication::instance()->setOrganizationDomain(arg); } QT_END_NAMESPACE #include "moc_qqmlglobal_p.cpp"