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
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 " ) ;
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 ;
}
) ;
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 " ) ;
registerFactory < DeviceBatteryDbusInterface > ( uri , " DeviceBatteryDbusInterfaceFactory " ) ;
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 " ) ;
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
}