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-01-28 17:22:09 +00:00
# include <QDBusPendingCall>
# include <QDBusPendingReply>
2021-07-23 19:28:22 +01:00
# include <QGuiApplication>
2022-09-10 22:23:52 +01:00
# include <QQmlContext>
# include <QQmlEngine>
2023-01-23 17:31:44 +00:00
# include <devicespluginfilterproxymodel.h>
2013-08-21 17:28:11 +01:00
2014-01-28 22:22:59 +00:00
# include "objectfactory.h"
# include "responsewaiter.h"
2022-09-10 22:23:52 +01:00
# include "core/kdeconnectpluginconfig.h"
# include "interfaces/commandsmodel.h"
2014-06-14 14:22:40 +01:00
# include "interfaces/devicesmodel.h"
2022-09-10 22:23:52 +01:00
# include "interfaces/devicessortproxymodel.h"
2014-06-14 14:22:40 +01:00
# include "interfaces/notificationsmodel.h"
2022-05-12 02:59:56 +01:00
# include "openconfig.h"
2021-07-23 19:28:22 +01:00
# include "pointerlocker.h"
2022-09-10 22:23:52 +01:00
# include <pluginmodel.h>
# include <remotecommandsmodel.h>
# include <remotesinksmodel.h>
2022-12-11 15:41:08 +00:00
# if WITH_WAYLAND
2021-07-23 19:28:22 +01:00
# include "pointerlockerwayland.h"
# endif
2013-08-21 17:28:11 +01:00
2022-09-10 22:23:52 +01: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
}
2022-09-10 22:23:52 +01: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
}
2022-09-10 22:23:52 +01:00
void KdeConnectDeclarativePlugin : : registerTypes ( const char * uri )
2013-08-21 17:28:11 +01:00
{
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 " ) ;
2023-01-23 17:31:44 +00:00
qmlRegisterType < DevicesPluginFilterProxyModel > ( uri , 1 , 0 , " DevicesPluginFilterProxyModel " ) ;
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 " ) ) ;
2022-09-10 22:23:52 +01:00
qmlRegisterUncreatableType < FindMyPhoneDeviceDbusInterface > ( uri ,
1 ,
0 ,
" FindMyPhoneDbusInterface " ,
QStringLiteral ( " You're not supposed to instantiate interfaces " ) ) ;
2023-06-07 20:48:25 +01:00
qmlRegisterUncreatableType < ClipboardDbusInterface > ( uri , 1 , 0 , " ClipboardDbusInterface " , QStringLiteral ( " You're not supposed to instantiate interfaces " ) ) ;
2022-09-10 22:23:52 +01:00
qmlRegisterUncreatableType < RemoteKeyboardDbusInterface > ( uri ,
1 ,
0 ,
" RemoteKeyboardDbusInterface " ,
QStringLiteral ( " You're not supposed to instantiate interfaces " ) ) ;
2018-10-07 19:23:20 +01:00
qmlRegisterUncreatableType < DeviceDbusInterface > ( uri , 1 , 0 , " DeviceDbusInterface " , QStringLiteral ( " You're not supposed to instantiate interfaces " ) ) ;
2022-09-10 22:23:52 +01: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 " ) ) ;
2018-11-07 19:54:00 +00:00
qmlRegisterUncreatableType < ShareDbusInterface > ( uri , 1 , 0 , " ShareDbusInterface " , QStringLiteral ( " You're not supposed to instantiate interfaces " ) ) ;
2022-09-28 14:03:48 +01:00
qmlRegisterUncreatableType < PhotoDbusInterface > ( uri , 1 , 0 , " PhotoDbusInterface " , 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 " ) ) ;
2022-09-10 22:23:52 +01:00
qmlRegisterSingletonType < DaemonDbusInterface > ( uri , 1 , 0 , " DaemonDbusInterface " , [ ] ( QQmlEngine * , QJSEngine * ) - > QObject * {
return new DaemonDbusInterface ;
} ) ;
qmlRegisterSingletonType < AbstractPointerLocker > ( " org.kde.kdeconnect " , 1 , 0 , " PointerLocker " , [ ] ( QQmlEngine * , QJSEngine * ) - > QObject * {
2021-07-23 19:28:22 +01:00
AbstractPointerLocker * ret ;
2022-12-11 15:41:08 +00:00
# if WITH_WAYLAND
2021-07-23 19:28:22 +01:00
if ( qGuiApp - > platformName ( ) = = QLatin1String ( " wayland " ) )
ret = new PointerLockerWayland ;
else
# endif
ret = new PointerLockerQt ;
return ret ;
} ) ;
2020-03-14 15:44:11 +00:00
2022-09-10 22:23:52 +01:00
qmlRegisterSingletonType < OpenConfig > ( uri , 1 , 0 , " OpenConfig " , [ ] ( QQmlEngine * , QJSEngine * ) - > QObject * {
return new OpenConfig ;
} ) ;
2022-05-12 02:59:56 +01:00
2020-03-14 15:44:11 +00:00
qmlRegisterAnonymousType < QAbstractItemModel > ( uri , 1 ) ;
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 " ) ;
2023-06-07 20:48:25 +01:00
registerFactory < ClipboardDbusInterface > ( uri , " ClipboardDbusInterfaceFactory " ) ;
2020-01-21 14:23:48 +00:00
registerFactory < MprisDbusInterface > ( uri , " MprisDbusInterfaceFactory " ) ;
registerFactory < RemoteControlDbusInterface > ( uri , " RemoteControlDbusInterfaceFactory " ) ;
registerFactory < LockDeviceDbusInterface > ( uri , " LockDeviceDbusInterfaceFactory " ) ;
registerFactory < SmsDbusInterface > ( uri , " SmsDbusInterfaceFactory " ) ;
registerFactory < RemoteCommandsDbusInterface > ( uri , " RemoteCommandsDbusInterfaceFactory " ) ;
registerFactory < ShareDbusInterface > ( uri , " ShareDbusInterfaceFactory " ) ;
2022-09-28 14:03:48 +01:00
registerFactory < PhotoDbusInterface > ( uri , " PhotoDbusInterfaceFactory " ) ;
2020-01-21 14:23:48 +00:00
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
}
2022-09-10 22:23:52 +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
2022-09-10 22:23:52 +01:00
engine - > rootContext ( ) - > setContextProperty ( QStringLiteral ( " DBusResponseFactory " ) , new ObjectFactory ( engine , createDBusResponse ) ) ;
2018-06-18 20:01:29 +01:00
2022-09-10 22:23:52 +01:00
engine - > rootContext ( ) - > setContextProperty ( QStringLiteral ( " DBusResponseWaiter " ) , DBusResponseWaiter : : instance ( ) ) ;
2013-08-21 17:28:11 +01:00
}