diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt --- a/autotests/CMakeLists.txt +++ b/autotests/CMakeLists.txt @@ -62,6 +62,10 @@ ${BALOO_DBUS_INTERFACES_DIR}/org.kde.baloo.scheduler.xml baloo/scheduler) + qt5_add_dbus_adaptor(managemediaplayercontrolTest_SOURCES + ${BALOO_DBUS_INTERFACES_DIR}/org.kde.BalooWatcherApplication.xml + baloo/localbaloofilelisting.h LocalBalooFileListing) + set(managemediaplayercontrolTest_SOURCES ${managemediaplayercontrolTest_SOURCES} ../src/baloo/baloolistener.cpp @@ -153,6 +157,10 @@ ${BALOO_DBUS_INTERFACES_DIR}/org.kde.baloo.scheduler.xml baloo/scheduler) + qt5_add_dbus_adaptor(manageheaderbarTest_SOURCES + ${BALOO_DBUS_INTERFACES_DIR}/org.kde.BalooWatcherApplication.xml + baloo/localbaloofilelisting.h LocalBalooFileListing) + set(manageheaderbarTest_SOURCES ${manageheaderbarTest_SOURCES} ../src/baloo/baloolistener.cpp @@ -254,6 +262,10 @@ ${BALOO_DBUS_INTERFACES_DIR}/org.kde.baloo.scheduler.xml baloo/scheduler) + qt5_add_dbus_adaptor(mediaplaylistTest_SOURCES + ${BALOO_DBUS_INTERFACES_DIR}/org.kde.BalooWatcherApplication.xml + baloo/localbaloofilelisting.h LocalBalooFileListing) + set(mediaplaylistTest_SOURCES ${mediaplaylistTest_SOURCES} ../src/baloo/baloolistener.cpp @@ -343,6 +355,10 @@ ${BALOO_DBUS_INTERFACES_DIR}/org.kde.baloo.scheduler.xml baloo/scheduler) + qt5_add_dbus_adaptor(trackslistenertest_SOURCES + ${BALOO_DBUS_INTERFACES_DIR}/org.kde.BalooWatcherApplication.xml + baloo/localbaloofilelisting.h LocalBalooFileListing) + set(trackslistenertest_SOURCES ${trackslistenertest_SOURCES} ../src/baloo/baloolistener.cpp @@ -537,6 +553,10 @@ ${BALOO_DBUS_INTERFACES_DIR}/org.kde.baloo.scheduler.xml baloo/scheduler) + qt5_add_dbus_adaptor(elisaapplicationtest_SOURCES + ${BALOO_DBUS_INTERFACES_DIR}/org.kde.BalooWatcherApplication.xml + baloo/localbaloofilelisting.h LocalBalooFileListing) + set(elisaapplicationtest_SOURCES ${elisaapplicationtest_SOURCES} ../src/baloo/baloolistener.cpp diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -89,6 +89,10 @@ qt5_add_dbus_interface(elisa_SOURCES ${BALOO_DBUS_INTERFACES_DIR}/org.kde.baloo.scheduler.xml baloo/scheduler) + + qt5_add_dbus_adaptor(elisa_SOURCES + ${BALOO_DBUS_INTERFACES_DIR}/org.kde.BalooWatcherApplication.xml + baloo/localbaloofilelisting.h LocalBalooFileListing) endif() endif() @@ -275,6 +279,10 @@ qt5_add_dbus_interface(elisaImport_SOURCES ${BALOO_DBUS_INTERFACES_DIR}/org.kde.baloo.scheduler.xml baloo/scheduler) + + qt5_add_dbus_adaptor(elisaImport_SOURCES + ${BALOO_DBUS_INTERFACES_DIR}/org.kde.BalooWatcherApplication.xml + baloo/localbaloofilelisting.h LocalBalooFileListing) endif() endif() diff --git a/src/baloo/localbaloofilelisting.cpp b/src/baloo/localbaloofilelisting.cpp --- a/src/baloo/localbaloofilelisting.cpp +++ b/src/baloo/localbaloofilelisting.cpp @@ -26,6 +26,8 @@ #include "baloo/scheduler.h" #include "baloo/fileindexer.h" +#include "baloowatcherapplicationadaptor.h" + #include #include #include @@ -72,6 +74,8 @@ QAtomicInt mStopRequest = 0; + BalooWatcherApplicationAdaptor *mDbusAdaptor = nullptr; + bool mIsRegistered = false; bool mIsRegistering = false; @@ -86,6 +90,10 @@ auto sessionBus = QDBusConnection::sessionBus(); + d->mDbusAdaptor = new BalooWatcherApplicationAdaptor(this); + + sessionBus.registerObject(QStringLiteral("/org/kde/BalooWatcherApplication"), d->mDbusAdaptor, QDBusConnection::ExportAllContents); + connect(&d->mServiceWatcher, &QDBusServiceWatcher::serviceRegistered, this, &LocalBalooFileListing::serviceRegistered); connect(&d->mServiceWatcher, &QDBusServiceWatcher::serviceOwnerChanged, @@ -193,6 +201,22 @@ if (pendingCallWatcher->isFinished()) { registeredToBaloo(pendingCallWatcher); } + + QDBusMessage registerBalooWatcher = QDBusMessage::createMethodCall(QStringLiteral("org.kde.baloo"), + QStringLiteral("/"), + QStringLiteral("org.kde.baloo.main"), + QStringLiteral("registerBalooWatcher")); + + registerBalooWatcher.setArguments({QStringLiteral("org.mpris.MediaPlayer2.elisa/org/kde/BalooWatcherApplication")}); + + auto pendingCall = sessionBus.asyncCall(registerBalooWatcher); + qDebug() << "LocalBalooFileListing::registerToBaloo" << "call registerBalooWatcher"; + auto pendingCallWatcher2 = new QDBusPendingCallWatcher(pendingCall); + + connect(pendingCallWatcher2, &QDBusPendingCallWatcher::finished, this, &LocalBalooFileListing::registeredToBaloo); + if (pendingCallWatcher2->isFinished()) { + registeredToBaloo(pendingCallWatcher2); + } } void LocalBalooFileListing::renamedFiles(const QString &from, const QString &to, const QStringList &listFiles)