2013-08-21 17:28:11 +01:00
/**
* Copyright 2013 Albert Vaca < albertvaka @ gmail . com >
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation ; either version 2 of
* the License or ( at your option ) version 3 or any later version
* accepted by the membership of KDE e . V . ( or its successor approved
* by the membership of KDE e . V . ) , which shall act as a proxy
* defined in Section 14 of version 3 of the license .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
2019-03-23 16:29:26 +00:00
* along with this program . If not , see < https : //www.gnu.org/licenses/>.
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>
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>
2013-08-21 17:28:11 +01:00
2017-09-03 20:39:44 +01:00
QObject * createDeviceDbusInterface ( const QVariant & deviceId )
2014-02-05 20:37:55 +00:00
{
return new DeviceDbusInterface ( deviceId . toString ( ) ) ;
}
2017-09-03 20:39:44 +01:00
QObject * createDeviceBatteryDbusInterface ( const QVariant & deviceId )
2014-02-05 20:37:55 +00:00
{
return new DeviceBatteryDbusInterface ( deviceId . toString ( ) ) ;
}
2017-09-03 20:39:44 +01:00
QObject * createFindMyPhoneInterface ( const QVariant & deviceId )
2015-09-11 16:51:50 +01:00
{
return new FindMyPhoneDeviceDbusInterface ( deviceId . toString ( ) ) ;
}
2017-09-03 20:39:44 +01:00
QObject * createRemoteKeyboardInterface ( const QVariant & deviceId )
2017-01-23 08:08:27 +00:00
{
return new RemoteKeyboardDbusInterface ( deviceId . toString ( ) ) ;
}
2017-09-03 20:39:44 +01:00
QObject * createSftpInterface ( const QVariant & deviceId )
2014-01-27 20:39:24 +00:00
{
2014-01-28 17:22:09 +00:00
return new SftpDbusInterface ( deviceId . toString ( ) ) ;
}
2017-09-03 20:39:44 +01:00
QObject * createRemoteControlInterface ( const QVariant & deviceId )
2015-07-22 02:19:29 +01:00
{
return new RemoteControlDbusInterface ( deviceId . toString ( ) ) ;
}
2017-09-03 20:39:44 +01:00
QObject * createMprisInterface ( const QVariant & deviceId )
2015-06-18 03:01:01 +01:00
{
return new MprisDbusInterface ( deviceId . toString ( ) ) ;
}
2017-09-03 20:39:44 +01:00
QObject * createDeviceLockInterface ( const QVariant & deviceId )
2015-07-22 02:37:34 +01:00
{
Q_ASSERT ( ! deviceId . toString ( ) . isEmpty ( ) ) ;
return new LockDeviceDbusInterface ( deviceId . toString ( ) ) ;
}
2018-09-10 10:28:54 +01:00
QObject * createSmsInterface ( const QVariant & deviceId )
2018-03-25 19:40:59 +01:00
{
2018-09-10 10:28:54 +01:00
return new SmsDbusInterface ( deviceId . toString ( ) ) ;
2018-03-25 19:40:59 +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
}
2018-06-18 20:01:29 +01:00
QObject * createRemoteCommandsInterface ( const QVariant & deviceId )
{
return new RemoteCommandsDbusInterface ( deviceId . toString ( ) ) ;
}
2018-10-31 18:20:20 +00:00
QObject * createShareInterface ( const QVariant & deviceId )
{
return new ShareDbusInterface ( deviceId . toString ( ) ) ;
}
2018-11-07 19:54:00 +00:00
QObject * createRemoteSystemVolumeInterface ( const QVariant & deviceId )
{
return new RemoteSystemVolumeDbusInterface ( deviceId . toString ( ) ) ;
}
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 " ) ;
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 " ) ) ;
2016-08-21 18:38:15 +01:00
qmlRegisterSingletonType < DaemonDbusInterface > ( uri , 1 , 0 , " DaemonDbusInterface " ,
[ ] ( QQmlEngine * , QJSEngine * ) - > QObject * {
return new DaemonDbusInterface ;
}
) ;
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 ( " DeviceDbusInterfaceFactory " )
2014-02-05 20:37:55 +00:00
, new ObjectFactory ( engine , createDeviceDbusInterface ) ) ;
2018-06-18 20:01:29 +01:00
2016-11-26 14:38:08 +00:00
engine - > rootContext ( ) - > setContextProperty ( QStringLiteral ( " DeviceBatteryDbusInterfaceFactory " )
2014-02-05 20:37:55 +00:00
, new ObjectFactory ( engine , createDeviceBatteryDbusInterface ) ) ;
2018-06-18 20:01:29 +01:00
2016-11-26 14:38:08 +00:00
engine - > rootContext ( ) - > setContextProperty ( QStringLiteral ( " FindMyPhoneDbusInterfaceFactory " )
2015-09-11 16:51:50 +01:00
, new ObjectFactory ( engine , createFindMyPhoneInterface ) ) ;
2016-11-26 14:38:08 +00:00
engine - > rootContext ( ) - > setContextProperty ( QStringLiteral ( " SftpDbusInterfaceFactory " )
2014-01-27 20:39:24 +00:00
, new ObjectFactory ( engine , createSftpInterface ) ) ;
2015-06-18 03:01:01 +01:00
2017-01-23 08:08:27 +00:00
engine - > rootContext ( ) - > setContextProperty ( QStringLiteral ( " RemoteKeyboardDbusInterfaceFactory " )
, new ObjectFactory ( engine , createRemoteKeyboardInterface ) ) ;
2016-11-26 14:38:08 +00:00
engine - > rootContext ( ) - > setContextProperty ( QStringLiteral ( " MprisDbusInterfaceFactory " )
2015-06-18 03:01:01 +01:00
, new ObjectFactory ( engine , createMprisInterface ) ) ;
2015-07-22 02:19:29 +01:00
2016-11-26 14:38:08 +00:00
engine - > rootContext ( ) - > setContextProperty ( QStringLiteral ( " RemoteControlDbusInterfaceFactory " )
2015-07-22 02:19:29 +01:00
, new ObjectFactory ( engine , createRemoteControlInterface ) ) ;
2015-07-22 02:37:34 +01:00
2016-11-26 14:38:08 +00:00
engine - > rootContext ( ) - > setContextProperty ( QStringLiteral ( " LockDeviceDbusInterfaceFactory " )
2015-07-22 02:37:34 +01:00
, new ObjectFactory ( engine , createDeviceLockInterface ) ) ;
2018-03-25 19:40:59 +01:00
2018-09-10 10:28:54 +01:00
engine - > rootContext ( ) - > setContextProperty ( QStringLiteral ( " SmsDbusInterfaceFactory " )
, new ObjectFactory ( engine , createSmsInterface ) ) ;
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 ( ) ) ;
2018-06-18 20:01:29 +01:00
engine - > rootContext ( ) - > setContextProperty ( QStringLiteral ( " RemoteCommandsDbusInterfaceFactory " )
, new ObjectFactory ( engine , createRemoteCommandsInterface ) ) ;
2018-10-31 18:20:20 +00:00
engine - > rootContext ( ) - > setContextProperty ( QStringLiteral ( " ShareDbusInterfaceFactory " )
, new ObjectFactory ( engine , createShareInterface ) ) ;
2018-11-07 19:54:00 +00:00
engine - > rootContext ( ) - > setContextProperty ( QStringLiteral ( " RemoteSystemVolumeDbusInterfaceFactory " )
, new ObjectFactory ( engine , createRemoteSystemVolumeInterface ) ) ;
2013-08-21 17:28:11 +01:00
}