File indexing completed on 2024-05-12 16:14:33

0001 /*
0002  *   SPDX-FileCopyrightText: 2019 David Edmundson <davidedmundson@kde.org>
0003  *
0004  *   SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #include <QQmlExtensionPlugin>
0008 #include <QQmlEngine>
0009 
0010 #include "timeinputvalidator.h"
0011 #include "yearmodel.h"
0012 #include "monthmodel.h"
0013 #include "infinitecalendarviewmodel.h"
0014 
0015 #ifdef Q_OS_ANDROID
0016 #include "androidintegration.h"
0017 
0018 using namespace KirigamiAddonsDateAndTime;
0019 #endif
0020 
0021 class KirigamiAddonsDataAndTimePlugin : public QQmlExtensionPlugin
0022 {
0023     Q_OBJECT
0024     Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
0025 
0026 public:
0027     KirigamiAddonsDataAndTimePlugin() = default;
0028     ~KirigamiAddonsDataAndTimePlugin() = default;
0029     void initializeEngine(QQmlEngine *engine, const char *uri) override;
0030     void registerTypes(const char *uri) override;
0031 };
0032 
0033 void KirigamiAddonsDataAndTimePlugin::initializeEngine(QQmlEngine *engine, const char *uri)
0034 {
0035     Q_UNUSED(engine)
0036     Q_UNUSED(uri)
0037 }
0038 
0039 void KirigamiAddonsDataAndTimePlugin::registerTypes(const char *uri)
0040 {
0041     qmlRegisterType<YearModel>(uri, 0, 1, "YearModel");
0042     qmlRegisterType<MonthModel>(uri, 0, 1, "MonthModel");
0043     qmlRegisterType<TimeInputValidator>(uri, 0, 1, "TimeInputValidator");
0044     qmlRegisterType<InfiniteCalendarViewModel>(uri, 0, 1, "InfiniteCalendarViewModel");
0045 
0046 #ifdef Q_OS_ANDROID
0047     qmlRegisterSingletonType<AndroidIntegration>(uri, 0, 1, "AndroidIntegration", [](QQmlEngine*, QJSEngine*) -> QObject* {
0048         QQmlEngine::setObjectOwnership(&AndroidIntegration::instance(), QQmlEngine::CppOwnership);
0049         return &AndroidIntegration::instance();
0050     });
0051 #endif
0052 }
0053 
0054 #include "plugin.moc"