[OpenDocString] kdeconnect-kde (cpp)
kdeconnectdeclarativeplugin.cpp
QObject *createDBusResponse()
{
    return new DBusAsyncResponse();
}
createDBusResponse creates a DBusResponse object.
void KdeConnectDeclarativePlugin::registerTypes(const char *uri)
{
    qmlRegisterType(uri, 1, 0, "DevicesModel");
    qmlRegisterType(uri, 1, 0, "NotificationsModel");
    qmlRegisterType(uri, 1, 0, "RemoteCommandsModel");
    qmlRegisterType(uri, 1, 0, "DBusAsyncResponse");
    qmlRegisterType(uri, 1, 0, "DevicesSortProxyModel");
    qmlRegisterType(uri, 1, 0, "DevicesPluginFilterProxyModel");
    qmlRegisterType(uri, 1, 0, "RemoteSinksModel");
    qmlRegisterType(uri, 1, 0, "PluginModel");
    qmlRegisterType(uri, 1, 0, "KdeConnectPluginConfig");
    qmlRegisterType(uri, 1, 0, "CommandsModel");
    qmlRegisterUncreatableType(uri, 1, 0, "MprisDbusInterface", QStringLiteral("You're not supposed to instantiate interfaces"));
    qmlRegisterUncreatableType(uri, 1, 0, "LockDeviceDbusInterface", QStringLiteral("You're not supposed to instantiate interfaces"));
    qmlRegisterUncreatableType(uri,
                                                               1,
                                                               0,
                                                               "FindMyPhoneDbusInterface",
                                                               QStringLiteral("You're not supposed to instantiate interfaces"));
    qmlRegisterUncreatableType(uri,
                                                            1,
                                                            0,
                                                            "RemoteKeyboardDbusInterface",
                                                            QStringLiteral("You're not supposed to instantiate interfaces"));
    qmlRegisterUncreatableType(uri, 1, 0, "DeviceDbusInterface", QStringLiteral("You're not supposed to instantiate interfaces"));
    qmlRegisterUncreatableType(uri,
                                                            1,
                                                            0,
                                                            "RemoteCommandsDbusInterface",
                                                            QStringLiteral("You're not supposed to instantiate interfaces"));
    qmlRegisterUncreatableType(uri,
                                                                1,
                                                                0,
                                                                "RemoteSystemVolumeInterface",
                                                                QStringLiteral("You're not supposed to instantiate interfaces"));
    qmlRegisterUncreatableType(uri, 1, 0, "ShareDbusInterface", QStringLiteral("You're not supposed to instantiate interfaces"));
    qmlRegisterUncreatableType(uri, 1, 0, "PhotoDbusInterface", QStringLiteral("You're not supposed to instantiate interfaces"));
    qmlRegisterUncreatableType(uri, 1, 0, "BigscreenDbusInterface", QStringLiteral("You're not supposed to instantiate interfaces"));
    qmlRegisterSingletonType(uri, 1, 0, "DaemonDbusInterface", [](QQmlEngine *, QJSEngine *) -> QObject * {
        return new DaemonDbusInterface;
    });
    qmlRegisterSingletonType("org.kde.kdeconnect", 1, 0, "PointerLocker", [](QQmlEngine *, QJSEngine *) -> QObject * {
        AbstractPointerLocker *ret;
#if WITH_WAYLAND
        if (qGuiApp->platformName() == QLatin1String("wayland"))
            ret = new PointerLockerWayland;
        else
#endif
            ret = new PointerLockerQt;
        return ret;
    });

    qmlRegisterSingletonType(uri, 1, 0, "OpenConfig", [](QQmlEngine *, QJSEngine *) -> QObject * {
        return new OpenConfig;
    });

#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
    qmlRegisterAnonymousType(uri, 1);
#else
    qmlRegisterType();
#endif

    registerFactory(uri, "DeviceDbusInterfaceFactory");
    registerFactory(uri, "DeviceBatteryDbusInterfaceFactory");
    registerFactory(uri, "DeviceConnectivityReportDbusInterfaceFactory");
    registerFactory(uri, "FindMyPhoneDbusInterfaceFactory");
    registerFactory(uri, "SftpDbusInterfaceFactory");
    registerFactory(uri, "RemoteKeyboardDbusInterfaceFactory");
    registerFactory(uri, "MprisDbusInterfaceFactory");
    registerFactory(uri, "RemoteControlDbusInterfaceFactory");
    registerFactory(uri, "LockDeviceDbusInterfaceFactory");
    registerFactory(uri, "SmsDbusInterfaceFactory");
    registerFactory(uri, "RemoteCommandsDbusInterfaceFactory");
    registerFactory(uri, "ShareDbusInterfaceFactory");
    registerFactory(uri, "PhotoDbusInterfaceFactory");
    registerFactory(uri, "RemoteSystemVolumeDbusInterfaceFactory");
    registerFactory(uri, "BigscreenDbusInterfaceFactory");
    registerFactory(uri, "VirtualmonitorDbusInterfaceFactory");
}
This registers all types of objects, like objects and factories. It allows to register objects of any type, like objects and methods that are not supposed to be instantiated.
void KdeConnectDeclarativePlugin::initializeEngine(QQmlEngine *engine, const char *uri)
{
    QQmlExtensionPlugin::initializeEngine(engine, uri);

    engine->rootContext()->setContextProperty(QStringLiteral("DBusResponseFactory"), new ObjectFactory(engine, createDBusResponse));

    engine->rootContext()->setContextProperty(QStringLiteral("DBusResponseWaiter"), DBusResponseWaiter::instance());
}
This method is responsible for setting up the engine object within a KdeConnectDeclarativePlugin instance and its root context. It sets the DBusResponseFactory and DBusResponseWaiter objects to the root context object. It also sets the DBusResponseWaiter instance to the DBusResponseWaiter singleton instance.