2013-08-21 17:28:11 +01:00
/**
2020-08-17 10:48:10 +01:00
* SPDX - FileCopyrightText : 2013 Albert Vaca < albertvaka @ gmail . com >
2013-08-21 17:28:11 +01:00
*
2020-08-17 10:48:10 +01:00
* SPDX - License - Identifier : GPL - 2.0 - only OR GPL - 3.0 - only OR LicenseRef - KDE - Accepted - GPL
2013-08-21 17:28:11 +01:00
*/
# include "kdeconnectdeclarativeplugin.h"
2014-06-16 19:02:07 +01:00
# include <QQmlEngine>
# include <QQmlContext>
2014-01-28 17:22:09 +00:00
# include <QDBusPendingCall>
# include <QDBusPendingReply>
2021-07-23 19:28:22 +01:00
# include <QGuiApplication>
2013-08-21 17:28:11 +01:00
2014-01-28 22:22:59 +00:00
# include "objectfactory.h"
# include "responsewaiter.h"
2015-06-11 15:09:27 +01:00
# include "interfaces/devicessortproxymodel.h"
2014-06-14 14:22:40 +01:00
# include "interfaces/devicesmodel.h"
# include "interfaces/notificationsmodel.h"
2018-06-18 20:01:29 +01:00
# include <remotecommandsmodel.h>
2018-11-07 19:54:00 +00:00
# include <remotesinksmodel.h>
2019-10-27 17:08:51 +00:00
# include <pluginmodel.h>
# include "core/kdeconnectpluginconfig.h"
# include "interfaces/commandsmodel.h"
2021-07-23 19:28:22 +01:00
# include "pointerlocker.h"
# if WITH_WAYLAND == 1
# include "pointerlockerwayland.h"
# endif
2013-08-21 17:28:11 +01:00
2014-01-28 22:22:59 +00:00
QObject * createDBusResponse ( )
2014-01-28 17:22:09 +00:00
{
2014-01-31 10:06:21 +00:00
return new DBusAsyncResponse ( ) ;
2014-01-27 20:39:24 +00:00
}
2020-01-21 14:23:48 +00:00
template < typename T > void registerFactory ( const char * uri , const char * name ) {
qmlRegisterSingletonType < ObjectFactory > ( uri , 1 , 0 , name ,
[ ] ( QQmlEngine * engine , QJSEngine * ) - > QObject * {
return new ObjectFactory ( engine , [ ] ( const QVariant & deviceId ) - > QObject * {
return new T ( deviceId . toString ( ) ) ;
} ) ;
}
) ;
2018-11-07 19:54:00 +00:00
}
2013-08-21 17:28:11 +01:00
void KdeConnectDeclarativePlugin : : registerTypes ( const char * uri )
{
2015-04-15 12:01:33 +01:00
qmlRegisterType < DevicesModel > ( uri , 1 , 0 , " DevicesModel " ) ;
qmlRegisterType < NotificationsModel > ( uri , 1 , 0 , " NotificationsModel " ) ;
2018-06-18 20:01:29 +01:00
qmlRegisterType < RemoteCommandsModel > ( uri , 1 , 0 , " RemoteCommandsModel " ) ;
2015-04-15 12:01:33 +01:00
qmlRegisterType < DBusAsyncResponse > ( uri , 1 , 0 , " DBusAsyncResponse " ) ;
2015-06-11 15:09:27 +01:00
qmlRegisterType < DevicesSortProxyModel > ( uri , 1 , 0 , " DevicesSortProxyModel " ) ;
2018-11-07 19:54:00 +00:00
qmlRegisterType < RemoteSinksModel > ( uri , 1 , 0 , " RemoteSinksModel " ) ;
2019-10-27 17:08:51 +00:00
qmlRegisterType < PluginModel > ( uri , 1 , 0 , " PluginModel " ) ;
qmlRegisterType < KdeConnectPluginConfig > ( uri , 1 , 0 , " KdeConnectPluginConfig " ) ;
qmlRegisterType < CommandsModel > ( uri , 1 , 0 , " CommandsModel " ) ;
2018-10-07 19:23:20 +01:00
qmlRegisterUncreatableType < MprisDbusInterface > ( uri , 1 , 0 , " MprisDbusInterface " , QStringLiteral ( " You're not supposed to instantiate interfaces " ) ) ;
qmlRegisterUncreatableType < LockDeviceDbusInterface > ( uri , 1 , 0 , " LockDeviceDbusInterface " , QStringLiteral ( " You're not supposed to instantiate interfaces " ) ) ;
qmlRegisterUncreatableType < FindMyPhoneDeviceDbusInterface > ( uri , 1 , 0 , " FindMyPhoneDbusInterface " , QStringLiteral ( " You're not supposed to instantiate interfaces " ) ) ;
qmlRegisterUncreatableType < RemoteKeyboardDbusInterface > ( uri , 1 , 0 , " RemoteKeyboardDbusInterface " , QStringLiteral ( " You're not supposed to instantiate interfaces " ) ) ;
qmlRegisterUncreatableType < DeviceDbusInterface > ( uri , 1 , 0 , " DeviceDbusInterface " , QStringLiteral ( " You're not supposed to instantiate interfaces " ) ) ;
2018-11-07 19:54:00 +00:00
qmlRegisterUncreatableType < RemoteCommandsDbusInterface > ( uri , 1 , 0 , " RemoteCommandsDbusInterface " , QStringLiteral ( " You're not supposed to instantiate interfaces " ) ) ;
qmlRegisterUncreatableType < RemoteSystemVolumeDbusInterface > ( uri , 1 , 0 , " RemoteSystemVolumeInterface " , QStringLiteral ( " You're not supposed to instantiate interfaces " ) ) ;
qmlRegisterUncreatableType < ShareDbusInterface > ( uri , 1 , 0 , " ShareDbusInterface " , QStringLiteral ( " You're not supposed to instantiate interfaces " ) ) ;
2020-05-05 12:53:41 +01:00
qmlRegisterUncreatableType < BigscreenDbusInterface > ( uri , 1 , 0 , " BigscreenDbusInterface " , QStringLiteral ( " You're not supposed to instantiate interfaces " ) ) ;
2016-08-21 18:38:15 +01:00
qmlRegisterSingletonType < DaemonDbusInterface > ( uri , 1 , 0 , " DaemonDbusInterface " ,
[ ] ( QQmlEngine * , QJSEngine * ) - > QObject * {
return new DaemonDbusInterface ;
}
) ;
2021-07-23 19:28:22 +01:00
qmlRegisterSingletonType < AbstractPointerLocker > ( " org.kde.kdeconnect " , 1 , 0 , " PointerLocker " , [ ] ( QQmlEngine * , QJSEngine * ) - > QObject * {
AbstractPointerLocker * ret ;
# if WITH_WAYLAND == 1
if ( qGuiApp - > platformName ( ) = = QLatin1String ( " wayland " ) )
ret = new PointerLockerWayland ;
else
# endif
ret = new PointerLockerQt ;
return ret ;
} ) ;
2020-03-14 15:44:11 +00:00
# if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
qmlRegisterAnonymousType < QAbstractItemModel > ( uri , 1 ) ;
# else
qmlRegisterType < QAbstractItemModel > ( ) ;
# endif
2020-01-21 14:23:48 +00:00
registerFactory < DeviceDbusInterface > ( uri , " DeviceDbusInterfaceFactory " ) ;
2020-08-22 21:37:18 +01:00
registerFactory < BatteryDbusInterface > ( uri , " DeviceBatteryDbusInterfaceFactory " ) ;
2021-03-12 23:27:16 +00:00
registerFactory < ConnectivityReportDbusInterface > ( uri , " DeviceConnectivityReportDbusInterfaceFactory " ) ;
2020-01-21 14:23:48 +00:00
registerFactory < FindMyPhoneDeviceDbusInterface > ( uri , " FindMyPhoneDbusInterfaceFactory " ) ;
registerFactory < SftpDbusInterface > ( uri , " SftpDbusInterfaceFactory " ) ;
registerFactory < RemoteKeyboardDbusInterface > ( uri , " RemoteKeyboardDbusInterfaceFactory " ) ;
registerFactory < MprisDbusInterface > ( uri , " MprisDbusInterfaceFactory " ) ;
registerFactory < RemoteControlDbusInterface > ( uri , " RemoteControlDbusInterfaceFactory " ) ;
registerFactory < LockDeviceDbusInterface > ( uri , " LockDeviceDbusInterfaceFactory " ) ;
registerFactory < SmsDbusInterface > ( uri , " SmsDbusInterfaceFactory " ) ;
registerFactory < RemoteCommandsDbusInterface > ( uri , " RemoteCommandsDbusInterfaceFactory " ) ;
registerFactory < ShareDbusInterface > ( uri , " ShareDbusInterfaceFactory " ) ;
registerFactory < RemoteSystemVolumeDbusInterface > ( uri , " RemoteSystemVolumeDbusInterfaceFactory " ) ;
2020-05-05 12:53:41 +01:00
registerFactory < BigscreenDbusInterface > ( uri , " BigscreenDbusInterfaceFactory " ) ;
2021-10-19 00:25:14 +01:00
registerFactory < VirtualmonitorDbusInterface > ( uri , " VirtualmonitorDbusInterfaceFactory " ) ;
2014-01-27 20:39:24 +00:00
}
2014-06-16 19:02:07 +01:00
void KdeConnectDeclarativePlugin : : initializeEngine ( QQmlEngine * engine , const char * uri )
2014-01-27 20:39:24 +00:00
{
2014-06-16 19:02:07 +01:00
QQmlExtensionPlugin : : initializeEngine ( engine , uri ) ;
2018-06-18 20:01:29 +01:00
2016-11-26 14:38:08 +00:00
engine - > rootContext ( ) - > setContextProperty ( QStringLiteral ( " DBusResponseFactory " )
2018-06-18 20:01:29 +01:00
, new ObjectFactory ( engine , createDBusResponse ) ) ;
2016-11-26 14:38:08 +00:00
engine - > rootContext ( ) - > setContextProperty ( QStringLiteral ( " DBusResponseWaiter " )
2015-06-18 03:01:01 +01:00
, DBusResponseWaiter : : instance ( ) ) ;
2013-08-21 17:28:11 +01:00
}