File indexing completed on 2024-05-12 15:32:33

0001 /*
0002  * BluezQt - Asynchronous BlueZ wrapper library
0003  *
0004  * SPDX-FileCopyrightText: 2014 David Rosca <nowrep@gmail.com>
0005  *
0006  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007  */
0008 
0009 #include "bluezqtextensionplugin.h"
0010 #include "declarativeadapter.h"
0011 #include "declarativebattery.h"
0012 #include "declarativedevice.h"
0013 #include "declarativedevicesmodel.h"
0014 #include "declarativeinput.h"
0015 #include "declarativemanager.h"
0016 #include "declarativemediaplayer.h"
0017 #include "device.h"
0018 #include "pendingcall.h"
0019 #include "rfkill.h"
0020 #include "services.h"
0021 
0022 #include <QQmlEngine>
0023 
0024 static QObject *manager_singleton(QQmlEngine *engine, QJSEngine *scriptEngine)
0025 {
0026     Q_UNUSED(engine)
0027     Q_UNUSED(scriptEngine)
0028 
0029     return new DeclarativeManager;
0030 }
0031 
0032 static QJSValue services_singleton(QQmlEngine *engine, QJSEngine *scriptEngine)
0033 {
0034     Q_UNUSED(engine)
0035 
0036     QJSValue object = scriptEngine->newObject();
0037     object.setProperty(QStringLiteral("ServiceDiscoveryServer"), BluezQt::Services::ServiceDiscoveryServer);
0038     object.setProperty(QStringLiteral("SerialPort"), BluezQt::Services::SerialPort);
0039     object.setProperty(QStringLiteral("DialupNetworking"), BluezQt::Services::DialupNetworking);
0040     object.setProperty(QStringLiteral("ObexObjectPush"), BluezQt::Services::ObexObjectPush);
0041     object.setProperty(QStringLiteral("ObexFileTransfer"), BluezQt::Services::ObexFileTransfer);
0042     object.setProperty(QStringLiteral("Headset"), BluezQt::Services::Headset);
0043     object.setProperty(QStringLiteral("AudioSource"), BluezQt::Services::AudioSource);
0044     object.setProperty(QStringLiteral("AudioSink"), BluezQt::Services::AudioSink);
0045     object.setProperty(QStringLiteral("AudioVideoRemoteControlTarget"), BluezQt::Services::AudioVideoRemoteControlTarget);
0046     object.setProperty(QStringLiteral("AdvancedAudioDistribution"), BluezQt::Services::AdvancedAudioDistribution);
0047     object.setProperty(QStringLiteral("AudioVideoRemoteControl"), BluezQt::Services::AudioVideoRemoteControl);
0048     object.setProperty(QStringLiteral("HeadsetAudioGateway"), BluezQt::Services::HeadsetAudioGateway);
0049     object.setProperty(QStringLiteral("Panu"), BluezQt::Services::Panu);
0050     object.setProperty(QStringLiteral("Nap"), BluezQt::Services::Nap);
0051     object.setProperty(QStringLiteral("Handsfree"), BluezQt::Services::Handsfree);
0052     object.setProperty(QStringLiteral("HandsfreeAudioGateway"), BluezQt::Services::HandsfreeAudioGateway);
0053     object.setProperty(QStringLiteral("HumanInterfaceDevice"), BluezQt::Services::HumanInterfaceDevice);
0054     object.setProperty(QStringLiteral("SimAccess"), BluezQt::Services::SimAccess);
0055     object.setProperty(QStringLiteral("PhonebookAccessServer"), BluezQt::Services::PhonebookAccessServer);
0056     object.setProperty(QStringLiteral("MessageAccessServer"), BluezQt::Services::MessageAccessServer);
0057     object.setProperty(QStringLiteral("PnpInformation"), BluezQt::Services::PnpInformation);
0058     object.setProperty(QStringLiteral("GenericAccess"), BluezQt::Services::GenericAccess);
0059     object.setProperty(QStringLiteral("GenericAcces"), BluezQt::Services::GenericAccess); // TODO KF6: Remove the one with typo
0060     object.setProperty(QStringLiteral("GenericAttribute"), BluezQt::Services::GenericAttribute);
0061     object.setProperty(QStringLiteral("ImmediateAlert"), BluezQt::Services::ImmediateAlert);
0062     object.setProperty(QStringLiteral("LinkLoss"), BluezQt::Services::LinkLoss);
0063     object.setProperty(QStringLiteral("TxPower"), BluezQt::Services::TxPower);
0064     object.setProperty(QStringLiteral("HeartRate"), BluezQt::Services::HeartRate);
0065     return object;
0066 }
0067 
0068 void BluezQtExtensionPlugin::registerTypes(const char *uri)
0069 {
0070     using namespace BluezQt;
0071 
0072     Q_ASSERT(QLatin1String(uri) == QLatin1String("org.kde.bluezqt"));
0073 
0074     qmlRegisterSingletonType<DeclarativeManager>(uri, 1, 0, "Manager", manager_singleton);
0075     qmlRegisterType<DeclarativeDevicesModel>(uri, 1, 0, "DevicesModelPrivate");
0076     qmlRegisterUncreatableType<DeclarativeAdapter>(uri, 1, 0, "Adapter", QStringLiteral("Adapter cannot be created"));
0077     qmlRegisterUncreatableType<DeclarativeBattery>(uri, 1, 0, "Battery", QStringLiteral("Battery cannot be created"));
0078     qmlRegisterUncreatableType<DeclarativeDevice>(uri, 1, 0, "Device", QStringLiteral("Device cannot be created"));
0079     qmlRegisterUncreatableType<DeclarativeInput>(uri, 1, 0, "Input", QStringLiteral("Input cannot be created"));
0080     qmlRegisterUncreatableType<DeclarativeMediaPlayer>(uri, 1, 0, "MediaPlayer", QStringLiteral("MediaPlayer cannot be created"));
0081     qmlRegisterUncreatableType<PendingCall>(uri, 1, 0, "PendingCall", QStringLiteral("PendingCall cannot be created"));
0082     qmlRegisterUncreatableType<Rfkill>(uri, 1, 0, "Rfkill", QStringLiteral("Rfkill cannot be created"));
0083     qmlRegisterSingletonType(uri, 1, 0, "Services", services_singleton);
0084 }
0085 
0086 #include "moc_bluezqtextensionplugin.cpp"