diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,7 +36,10 @@ # Dependencies set(REQUIRED_QT_VERSION 5.10.0) -find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Widgets DBus Xml Network PrintSupport) +find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Widgets Xml Network PrintSupport) +if (NOT ANDROID) + find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED DBus) +endif() find_package(KF5CoreAddons ${KF5_DEP_VERSION} REQUIRED) find_package(KF5ItemViews ${KF5_DEP_VERSION} REQUIRED) @@ -87,6 +90,10 @@ include(CMakePackageConfigHelpers) +set(HAVE_DBUS FALSE) +if (TARGET Qt5::DBus) + set(HAVE_DBUS TRUE) +endif() configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/KF5XmlGuiConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/KF5XmlGuiConfig.cmake" diff --git a/KF5XmlGuiConfig.cmake.in b/KF5XmlGuiConfig.cmake.in --- a/KF5XmlGuiConfig.cmake.in +++ b/KF5XmlGuiConfig.cmake.in @@ -3,7 +3,9 @@ set(XMLGUI_DBUS_INTERFACES_DIR "@PACKAGE_KDE_INSTALL_DBUSINTERFACEDIR@") include(CMakeFindDependencyMacro) -find_dependency(Qt5DBus @REQUIRED_QT_VERSION@) +if (@HAVE_DBUS@) + find_dependency(Qt5DBus @REQUIRED_QT_VERSION@) +endif() find_dependency(Qt5Widgets @REQUIRED_QT_VERSION@) find_dependency(Qt5Xml @REQUIRED_QT_VERSION@) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -33,7 +33,6 @@ khelpmenu.cpp kkeysequencewidget.cpp kmainwindow.cpp - kmainwindowiface.cpp kmenumenuhandler_p.cpp kshortcuteditwidget.cpp kshortcutschemeseditor.cpp @@ -57,6 +56,9 @@ kundoactions.cpp kcheckaccelerators.cpp ) +if (TARGET Qt5::DBus) + list(APPEND kxmlgui_SRCS kmainwindowiface.cpp) +endif() # add the resource file qt5_add_resources(kxmlgui_SRCS kxmlgui.qrc) @@ -85,7 +87,6 @@ target_link_libraries(KF5XmlGui PUBLIC - Qt5::DBus #QDBus connect to signal in KToolBar Qt5::Xml #To parse the configuration (QDomDocument etc) Qt5::Widgets #QWidget is used everywhere KF5::ConfigCore #Reading config for ToolbarIcons, Shortcut Schemes... @@ -103,6 +104,9 @@ KF5::WindowSystem #KKeyServer in kkeysequencewidget ${XMLGUI_EXTRA_LIBS} ) +if (TARGET Qt5::DBus) + target_link_libraries(KF5XmlGui PUBLIC Qt5::DBus) #QDBus connect to signal in KToolBar +endif() set_target_properties(KF5XmlGui PROPERTIES VERSION ${KXMLGUI_VERSION_STRING} SOVERSION ${KXMLGUI_SOVERSION} diff --git a/src/kmainwindow.cpp b/src/kmainwindow.cpp --- a/src/kmainwindow.cpp +++ b/src/kmainwindow.cpp @@ -27,7 +27,9 @@ #include "kmainwindow.h" #include "kmainwindow_p.h" +#ifdef QT_DBUS_LIB #include "kmainwindowiface_p.h" +#endif #include "ktoolbarhandler_p.h" #include "khelpmenu.h" #include "ktoolbar.h" @@ -46,7 +48,9 @@ #include #include #include +#ifdef QT_DBUS_LIB #include +#endif #include #include @@ -349,11 +353,13 @@ } } +#ifdef QT_DBUS_LIB QDBusConnection::sessionBus().registerObject(dbusName, q, QDBusConnection::ExportScriptableSlots | QDBusConnection::ExportScriptableProperties | QDBusConnection::ExportNonScriptableSlots | QDBusConnection::ExportNonScriptableProperties | QDBusConnection::ExportAdaptors); +#endif } void KMainWindowPrivate::setSettingsDirty(CallCompression callCompression) diff --git a/src/ktoolbar.cpp b/src/ktoolbar.cpp --- a/src/ktoolbar.cpp +++ b/src/ktoolbar.cpp @@ -38,8 +38,10 @@ #include #include #include +#ifdef QT_DBUS_LIB #include #include +#endif #include #include @@ -277,8 +279,10 @@ q->setAcceptDrops(true); +#ifdef QT_DBUS_LIB QDBusConnection::sessionBus().connect(QString(), QStringLiteral("/KToolBar"), QStringLiteral("org.kde.KToolBar"), QStringLiteral("styleChanged"), q, SLOT(slotAppearanceChanged())); +#endif connect(KIconLoader::global(), SIGNAL(iconLoaderSettingsChanged()), q, SLOT(slotAppearanceChanged())); } @@ -1399,8 +1403,10 @@ void KToolBar::emitToolbarStyleChanged() { +#ifdef QT_DBUS_LIB QDBusMessage message = QDBusMessage::createSignal(QStringLiteral("/KToolBar"), QStringLiteral("org.kde.KToolBar"), QStringLiteral("styleChanged")); QDBusConnection::sessionBus().send(message); +#endif } #include "moc_ktoolbar.cpp" diff --git a/src/kxmlguiwindow.cpp b/src/kxmlguiwindow.cpp --- a/src/kxmlguiwindow.cpp +++ b/src/kxmlguiwindow.cpp @@ -29,15 +29,19 @@ #include "kmainwindow_p.h" #include "kmessagebox.h" #include "kactioncollection.h" +#ifdef QT_DBUS_LIB #include "kmainwindowiface_p.h" +#endif #include "ktoolbarhandler_p.h" #include "kxmlguifactory.h" #include "kedittoolbar.h" #include "khelpmenu.h" #include "ktoolbar.h" #include +#ifdef QT_DBUS_LIB #include +#endif #include #include #include @@ -87,7 +91,9 @@ d->toolBarHandler = nullptr; d->showStatusBarAction = nullptr; d->factory = nullptr; +#ifdef QT_DBUS_LIB new KMainWindowInterface(this); +#endif } QAction *KXmlGuiWindow::toolBarMenuAction() @@ -118,12 +124,14 @@ { bool ret = KMainWindow::event(ev); if (ev->type() == QEvent::Polish) { +#ifdef QT_DBUS_LIB QDBusConnection::sessionBus().registerObject(dbusName() + QStringLiteral("/actions"), actionCollection(), QDBusConnection::ExportScriptableSlots | QDBusConnection::ExportScriptableProperties | QDBusConnection::ExportNonScriptableSlots | QDBusConnection::ExportNonScriptableProperties | QDBusConnection::ExportChildObjects); +#endif } return ret; }