diff --git a/core/device.cpp b/core/device.cpp --- a/core/device.cpp +++ b/core/device.cpp @@ -134,8 +134,14 @@ m_pluginsByIncomingCapability = newPluginsByIncomingCapability; //TODO: see how it works in Android (only done once, when created) + QDBusConnection bus = QDBusConnection::sessionBus(); Q_FOREACH(KdeConnectPlugin* plugin, m_plugins) { plugin->connected(); + + const QString dbusPath = plugin->dbusPath(); + if (!dbusPath.isEmpty()) { + bus.registerObject(dbusPath, plugin, QDBusConnection::ExportAllProperties | QDBusConnection::ExportScriptableInvokables); + } } if (differentPlugins) { Q_EMIT pluginsChanged(); diff --git a/core/kdeconnectplugin.h b/core/kdeconnectplugin.h --- a/core/kdeconnectplugin.h +++ b/core/kdeconnectplugin.h @@ -47,6 +47,8 @@ KdeConnectPluginConfig* config() const; + virtual QString dbusPath() const; + public Q_SLOTS: /** * Returns true if it has handled the package in some way diff --git a/core/kdeconnectplugin.cpp b/core/kdeconnectplugin.cpp --- a/core/kdeconnectplugin.cpp +++ b/core/kdeconnectplugin.cpp @@ -75,3 +75,8 @@ // qCWarning(KDECONNECT_CORE) << metaObject()->className() << "sends" << np.type() << ". Supported:" << d->mOutgoingTypes; return d->mDevice->sendPackage(np); } + +QString KdeConnectPlugin::dbusPath() const +{ + return {}; +} diff --git a/plugins/battery/batteryplugin.h b/plugins/battery/batteryplugin.h --- a/plugins/battery/batteryplugin.h +++ b/plugins/battery/batteryplugin.h @@ -38,7 +38,6 @@ explicit BatteryPlugin(QObject *parent, const QVariantList &args); ~BatteryPlugin() override; -public Q_SLOTS: bool receivePackage(const NetworkPackage& np) override; void connected() override; diff --git a/plugins/clipboard/clipboardplugin.h b/plugins/clipboard/clipboardplugin.h --- a/plugins/clipboard/clipboardplugin.h +++ b/plugins/clipboard/clipboardplugin.h @@ -37,10 +37,9 @@ public: explicit ClipboardPlugin(QObject *parent, const QVariantList &args); -public Q_SLOTS: bool receivePackage(const NetworkPackage& np) override; void connected() override { } - + private Q_SLOTS: void propagateClipboard(const QString& content); diff --git a/plugins/findmyphone/findmyphoneplugin.h b/plugins/findmyphone/findmyphoneplugin.h --- a/plugins/findmyphone/findmyphoneplugin.h +++ b/plugins/findmyphone/findmyphoneplugin.h @@ -39,12 +39,9 @@ Q_SCRIPTABLE void ring(); -public Q_SLOTS: - void connected() override; + QString dbusPath() const override; + void connected() override {} bool receivePackage(const NetworkPackage& np) override; - -private: - QString dbusPath() const; }; #endif diff --git a/plugins/findmyphone/findmyphoneplugin.cpp b/plugins/findmyphone/findmyphoneplugin.cpp --- a/plugins/findmyphone/findmyphoneplugin.cpp +++ b/plugins/findmyphone/findmyphoneplugin.cpp @@ -48,11 +48,6 @@ sendPackage(np); } -void FindMyPhonePlugin::connected() -{ - QDBusConnection::sessionBus().registerObject(dbusPath(), this, QDBusConnection::ExportAllContents); -} - QString FindMyPhonePlugin::dbusPath() const { return "/modules/kdeconnect/devices/" + device()->id() + "/findmyphone"; diff --git a/plugins/lockdevice/lockdeviceplugin.h b/plugins/lockdevice/lockdeviceplugin.h --- a/plugins/lockdevice/lockdeviceplugin.h +++ b/plugins/lockdevice/lockdeviceplugin.h @@ -44,14 +44,14 @@ bool isLocked() const; void setLocked(bool b); + QString dbusPath() const override; void connected() override; bool receivePackage(const NetworkPackage & np) override; Q_SIGNALS: void lockedChanged(bool locked); private: - QString dbusPath() const; bool m_remoteLocked; OrgFreedesktopScreenSaverInterface* iface(); diff --git a/plugins/lockdevice/lockdeviceplugin.cpp b/plugins/lockdevice/lockdeviceplugin.cpp --- a/plugins/lockdevice/lockdeviceplugin.cpp +++ b/plugins/lockdevice/lockdeviceplugin.cpp @@ -91,8 +91,6 @@ void LockDevicePlugin::connected() { - QDBusConnection::sessionBus().registerObject(dbusPath(), this, QDBusConnection::ExportAllContents); - NetworkPackage np(PACKAGE_TYPE_LOCK_REQUEST, {{"requestLocked", QVariant()}}); sendPackage(np); } diff --git a/plugins/mpriscontrol/mpriscontrolplugin.h b/plugins/mpriscontrol/mpriscontrolplugin.h --- a/plugins/mpriscontrol/mpriscontrolplugin.h +++ b/plugins/mpriscontrol/mpriscontrolplugin.h @@ -40,7 +40,6 @@ public: explicit MprisControlPlugin(QObject *parent, const QVariantList &args); -public Q_SLOTS: bool receivePackage(const NetworkPackage& np) override; void connected() override { } diff --git a/plugins/mprisremote/mprisremoteplugin.h b/plugins/mprisremote/mprisremoteplugin.h --- a/plugins/mprisremote/mprisremoteplugin.h +++ b/plugins/mprisremote/mprisremoteplugin.h @@ -57,20 +57,19 @@ void setPosition(int position); void setPlayer(const QString& player); -public Q_SLOTS: bool receivePackage(const NetworkPackage& np) override; - void connected() override; + void connected() override {} + QString dbusPath() const override; - void seek(int offset) const; - void requestPlayerStatus(); - void requestPlayerList(); - void sendAction(const QString& action); + Q_SCRIPTABLE void seek(int offset) const; + Q_SCRIPTABLE void requestPlayerList(); + Q_SCRIPTABLE void sendAction(const QString& action); Q_SIGNALS: void propertiesChanged(); private: - QString dbusPath() const; + void requestPlayerStatus(); QString m_player; bool m_playing; diff --git a/plugins/mprisremote/mprisremoteplugin.cpp b/plugins/mprisremote/mprisremoteplugin.cpp --- a/plugins/mprisremote/mprisremoteplugin.cpp +++ b/plugins/mprisremote/mprisremoteplugin.cpp @@ -85,11 +85,6 @@ } } -void MprisRemotePlugin::connected() -{ - QDBusConnection::sessionBus().registerObject(dbusPath(), this, QDBusConnection::ExportAllContents); -} - QString MprisRemotePlugin::dbusPath() const { return "/modules/kdeconnect/devices/" + device()->id() + "/mprisremote"; diff --git a/plugins/notifications/notificationsplugin.h b/plugins/notifications/notificationsplugin.h --- a/plugins/notifications/notificationsplugin.h +++ b/plugins/notifications/notificationsplugin.h @@ -44,7 +44,6 @@ explicit NotificationsPlugin(QObject *parent, const QVariantList &args); ~NotificationsPlugin() override; -public Q_SLOTS: bool receivePackage(const NetworkPackage& np) override; void connected() override; diff --git a/plugins/pausemusic/pausemusicplugin.h b/plugins/pausemusic/pausemusicplugin.h --- a/plugins/pausemusic/pausemusicplugin.h +++ b/plugins/pausemusic/pausemusicplugin.h @@ -35,10 +35,10 @@ public: explicit PauseMusicPlugin(QObject *parent, const QVariantList &args); -public Q_SLOTS: bool receivePackage(const NetworkPackage& np) override; void connected() override { } +public Q_SLOTS: /** * @returns 0 if not muted, 1 if muted or -1 if there was an error */ diff --git a/plugins/ping/pingplugin.h b/plugins/ping/pingplugin.h --- a/plugins/ping/pingplugin.h +++ b/plugins/ping/pingplugin.h @@ -40,12 +40,10 @@ Q_SCRIPTABLE void sendPing(); Q_SCRIPTABLE void sendPing(const QString& customMessage); -public Q_SLOTS: bool receivePackage(const NetworkPackage& np) override; - void connected() override; + void connected() override {} -private: - QString dbusPath() const; + QString dbusPath() const override; }; #endif diff --git a/plugins/ping/pingplugin.cpp b/plugins/ping/pingplugin.cpp --- a/plugins/ping/pingplugin.cpp +++ b/plugins/ping/pingplugin.cpp @@ -74,11 +74,6 @@ qCDebug(KDECONNECT_PLUGIN_PING) << "sendPing:" << success; } -void PingPlugin::connected() -{ - QDBusConnection::sessionBus().registerObject(dbusPath(), this, QDBusConnection::ExportAllContents); -} - QString PingPlugin::dbusPath() const { return "/modules/kdeconnect/devices/" + device()->id() + "/ping"; diff --git a/plugins/remotecommands/remotecommandsplugin.h b/plugins/remotecommands/remotecommandsplugin.h --- a/plugins/remotecommands/remotecommandsplugin.h +++ b/plugins/remotecommands/remotecommandsplugin.h @@ -41,17 +41,17 @@ explicit RemoteCommandsPlugin(QObject *parent, const QVariantList &args); ~RemoteCommandsPlugin() override; - Q_INVOKABLE void triggerCommand(const QString &key); + Q_SCRIPTABLE void triggerCommand(const QString &key); QByteArray commands() const { return m_commands; } + bool receivePackage(const NetworkPackage& np) override; + void connected() override; + QString dbusPath() const override; + Q_SIGNALS: void commandsChanged(const QByteArray& commands); private: - bool receivePackage(const NetworkPackage& np) override; - void connected() override; - - QString dbusPath() const; void setCommands(const QByteArray &commands); QByteArray m_commands; diff --git a/plugins/remotecommands/remotecommandsplugin.cpp b/plugins/remotecommands/remotecommandsplugin.cpp --- a/plugins/remotecommands/remotecommandsplugin.cpp +++ b/plugins/remotecommands/remotecommandsplugin.cpp @@ -59,8 +59,6 @@ void RemoteCommandsPlugin::connected() { - QDBusConnection::sessionBus().registerObject(dbusPath(), this, QDBusConnection::ExportAllContents); - NetworkPackage np(PACKAGE_TYPE_RUNCOMMAND_REQUEST, {{"requestCommandList", true}}); sendPackage(np); } diff --git a/plugins/remotecontrol/remotecontrolplugin.h b/plugins/remotecontrol/remotecontrolplugin.h --- a/plugins/remotecontrol/remotecontrolplugin.h +++ b/plugins/remotecontrol/remotecontrolplugin.h @@ -38,13 +38,11 @@ ~RemoteControlPlugin() override; bool receivePackage(const NetworkPackage& /*np*/) override { return false; } - void connected() override; + void connected() override {} + QString dbusPath() const override; - Q_INVOKABLE void moveCursor(const QPoint &p); - Q_INVOKABLE void sendCommand(const QString &name, bool val); - -private: - QString dbusPath() const; + Q_SCRIPTABLE void moveCursor(const QPoint &p); + Q_SCRIPTABLE void sendCommand(const QString &name, bool val); }; #endif diff --git a/plugins/remotecontrol/remotecontrolplugin.cpp b/plugins/remotecontrol/remotecontrolplugin.cpp --- a/plugins/remotecontrol/remotecontrolplugin.cpp +++ b/plugins/remotecontrol/remotecontrolplugin.cpp @@ -57,11 +57,6 @@ sendPackage(np); } -void RemoteControlPlugin::connected() -{ - QDBusConnection::sessionBus().registerObject(dbusPath(), this, QDBusConnection::ExportAllContents); -} - QString RemoteControlPlugin::dbusPath() const { return "/modules/kdeconnect/devices/" + device()->id() + "/remotecontrol"; diff --git a/plugins/runcommand/runcommandplugin.h b/plugins/runcommand/runcommandplugin.h --- a/plugins/runcommand/runcommandplugin.h +++ b/plugins/runcommand/runcommandplugin.h @@ -39,8 +39,6 @@ explicit RunCommandPlugin(QObject *parent, const QVariantList &args); ~RunCommandPlugin() override; - -public Q_SLOTS: bool receivePackage(const NetworkPackage& np) override; void connected() override; diff --git a/plugins/screensaver-inhibit/screensaverinhibitplugin.h b/plugins/screensaver-inhibit/screensaverinhibitplugin.h --- a/plugins/screensaver-inhibit/screensaverinhibitplugin.h +++ b/plugins/screensaver-inhibit/screensaverinhibitplugin.h @@ -34,7 +34,6 @@ explicit ScreensaverInhibitPlugin(QObject *parent, const QVariantList &args); ~ScreensaverInhibitPlugin() override; -public Q_SLOTS: bool receivePackage(const NetworkPackage& np) override; void connected() override; diff --git a/plugins/sendnotifications/sendnotificationsplugin.h b/plugins/sendnotifications/sendnotificationsplugin.h --- a/plugins/sendnotifications/sendnotificationsplugin.h +++ b/plugins/sendnotifications/sendnotificationsplugin.h @@ -42,7 +42,6 @@ explicit SendNotificationsPlugin(QObject *parent, const QVariantList &args); ~SendNotificationsPlugin() override; -public Q_SLOTS: bool receivePackage(const NetworkPackage& np) override; void connected() override; diff --git a/plugins/sftp/sftpplugin.h b/plugins/sftp/sftpplugin.h --- a/plugins/sftp/sftpplugin.h +++ b/plugins/sftp/sftpplugin.h @@ -38,15 +38,16 @@ explicit SftpPlugin(QObject *parent, const QVariantList &args); ~SftpPlugin() override; + bool receivePackage(const NetworkPackage& np) override; + void connected() override {} + QString dbusPath() const override { return "/modules/kdeconnect/devices/" + deviceId + "/sftp"; } + Q_SIGNALS: void packageReceived(const NetworkPackage& np); Q_SCRIPTABLE void mounted(); Q_SCRIPTABLE void unmounted(); - -public Q_SLOTS: - bool receivePackage(const NetworkPackage& np) override; - void connected() override; +public Q_SLOTS: Q_SCRIPTABLE void mount(); Q_SCRIPTABLE void unmount(); Q_SCRIPTABLE bool mountAndWait(); @@ -62,7 +63,6 @@ void onFailed(const QString& message); private: - QString dbusPath() const { return "/modules/kdeconnect/devices/" + deviceId + "/sftp"; } void knotify(int type, const QString& text, const QPixmap& icon) const; void addToDolphin(); void removeFromDolphin(); diff --git a/plugins/sftp/sftpplugin.cpp b/plugins/sftp/sftpplugin.cpp --- a/plugins/sftp/sftpplugin.cpp +++ b/plugins/sftp/sftpplugin.cpp @@ -82,11 +82,6 @@ } } -void SftpPlugin::connected() -{ - QDBusConnection::sessionBus().registerObject(dbusPath(), this, QDBusConnection::ExportScriptableContents); -} - void SftpPlugin::mount() { qCDebug(KDECONNECT_PLUGIN_SFTP) << "Mount device:" << device()->name(); diff --git a/plugins/share/shareplugin.h b/plugins/share/shareplugin.h --- a/plugins/share/shareplugin.h +++ b/plugins/share/shareplugin.h @@ -39,9 +39,10 @@ ///Helper method, QDBus won't recognize QUrl Q_SCRIPTABLE void shareUrl(const QString& url) { shareUrl(QUrl(url)); } -public Q_SLOTS: + bool receivePackage(const NetworkPackage& np) override; - void connected() override; + void connected() override {} + QString dbusPath() const override; private Q_SLOTS: void finished(KJob*); @@ -53,7 +54,6 @@ private: void shareUrl(const QUrl& url); - QString dbusPath() const; QUrl destinationDir() const; }; diff --git a/plugins/share/shareplugin.cpp b/plugins/share/shareplugin.cpp --- a/plugins/share/shareplugin.cpp +++ b/plugins/share/shareplugin.cpp @@ -158,11 +158,6 @@ sendPackage(package); } -void SharePlugin::connected() -{ - QDBusConnection::sessionBus().registerObject(dbusPath(), this, QDBusConnection::ExportScriptableInvokables); -} - QString SharePlugin::dbusPath() const { return "/modules/kdeconnect/devices/" + device()->id() + "/share"; diff --git a/plugins/telephony/telephonyplugin.h b/plugins/telephony/telephonyplugin.h --- a/plugins/telephony/telephonyplugin.h +++ b/plugins/telephony/telephonyplugin.h @@ -43,7 +43,8 @@ explicit TelephonyPlugin(QObject *parent, const QVariantList &args); bool receivePackage(const NetworkPackage& np) override; - void connected() override; + void connected() override {} + QString dbusPath() const override; public Q_SLOTS: Q_SCRIPTABLE void sendSms(const QString& phoneNumber, const QString& messageBody); @@ -53,7 +54,6 @@ void showSendSmsDialog(); private: - QString dbusPath() const; KNotification* createNotification(const NetworkPackage& np); QDBusInterface m_telepathyInterface; diff --git a/plugins/telephony/telephonyplugin.cpp b/plugins/telephony/telephonyplugin.cpp --- a/plugins/telephony/telephonyplugin.cpp +++ b/plugins/telephony/telephonyplugin.cpp @@ -161,11 +161,6 @@ dialog->show(); } -void TelephonyPlugin::connected() -{ - QDBusConnection::sessionBus().registerObject(dbusPath(), this, QDBusConnection::ExportScriptableContents); -} - QString TelephonyPlugin::dbusPath() const { return "/modules/kdeconnect/devices/" + device()->id() + "/telephony";