diff --git a/CMakeLists.txt b/CMakeLists.txt index fde37a8fc..022416657 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,6 +34,7 @@ if(ANDROID) find_package(OpenSSL REQUIRED) else() find_package(Qt5Keychain REQUIRED) + find_package(KF5DBusAddons REQUIRED) endif() find_package(Quotient 0.6) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 98f51a7c6..ba91a889a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -59,7 +59,7 @@ if(ANDROID) "search" ) else() - target_link_libraries(neochat PRIVATE Qt5::Widgets ${QTKEYCHAIN_LIBRARIES}) + target_link_libraries(neochat PRIVATE Qt5::Widgets KF5::DBusAddons ${QTKEYCHAIN_LIBRARIES}) endif() install(TARGETS neochat ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) diff --git a/src/main.cpp b/src/main.cpp index 689c4b607..730821e97 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -11,8 +11,12 @@ #include #include #include +#include #include +#ifndef Q_OS_ANDROID +#include +#endif #include #include @@ -58,6 +62,10 @@ int main(int argc, char *argv[]) app.setOrganizationName("KDE"); app.setWindowIcon(QIcon(":/assets/img/icon.png")); +#ifndef Q_OS_ANDROID + KDBusService service(KDBusService::Unique); +#endif + Clipboard clipboard; auto config = NeoChatConfig::self(); @@ -115,5 +123,16 @@ int main(int argc, char *argv[]) if (engine.rootObjects().isEmpty()) return -1; +#ifndef Q_OS_ANDROID + QObject::connect(&service, &KDBusService::activateRequested, &engine, [&engine](const QStringList &/*arguments*/, const QString &/*workingDirectory*/) { + for (auto obj : engine.rootObjects()) { + auto view = qobject_cast(obj); + if (view) { + view->raise(); + return; + } + } + }); +#endif return app.exec(); }