diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index b412c02..d1f7b07 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -30,6 +30,9 @@ if (add_hunspell_library) add_checked_subdirectory(hunspell) endif() add_checked_subdirectory(iconv) +if (LINUX AND NOT DESKTOP_APP_DISABLE_DBUS_INTEGRATION) + add_checked_subdirectory(lxqt_qtplugin) +endif() add_checked_subdirectory(lz4) if (LINUX) add_checked_subdirectory(materialdecoration) @@ -58,5 +61,8 @@ if (LINUX AND NOT DESKTOP_APP_DISABLE_DBUS_INTEGRATION) endif() add_checked_subdirectory(ton) add_checked_subdirectory(variant) +if (LINUX) + add_checked_subdirectory(xdgiconloader) +endif() add_checked_subdirectory(xxhash) add_checked_subdirectory(zlib) diff --git a/external/lxqt_qtplugin/CMakeLists.txt b/external/lxqt_qtplugin/CMakeLists.txt new file mode 100644 index 0000000..9625c37 --- /dev/null +++ b/external/lxqt_qtplugin/CMakeLists.txt @@ -0,0 +1,47 @@ +# This file is part of Desktop App Toolkit, +# a set of libraries for developing nice desktop applications. +# +# For license and copyright information please follow this link: +# https://github.com/desktop-app/legal/blob/master/LEGAL + +if (DESKTOP_APP_USE_PACKAGED AND NOT DESKTOP_APP_USE_PACKAGED_LAZY_PLATFORMTHEMES) + add_library(external_lxqt_qtplugin INTERFACE IMPORTED GLOBAL) + add_library(desktop-app::external_lxqt_qtplugin ALIAS external_lxqt_qtplugin) +else() + add_library(external_lxqt_qtplugin STATIC) + add_library(desktop-app::external_lxqt_qtplugin ALIAS external_lxqt_qtplugin) + init_target(external_lxqt_qtplugin "(external)") + + set(lxqt_qtplugin_loc ${third_party_loc}/lxqt-qtplugin) + set(lxqt_qtplugin_src ${lxqt_qtplugin_loc}/src) + + set_target_properties(external_lxqt_qtplugin PROPERTIES AUTOMOC ON) + + nice_target_sources(external_lxqt_qtplugin ${lxqt_qtplugin_src} + PRIVATE + main.cpp + lxqtplatformtheme.cpp + lxqtplatformtheme.h + lxqtsystemtrayicon.cpp + lxqtsystemtrayicon.h + ) + + target_include_directories(external_lxqt_qtplugin + PRIVATE + ${lxqt_qtplugin_src} + ) + + target_compile_definitions(external_lxqt_qtplugin + PRIVATE + QT_STATICPLUGIN + QT_NO_FOREACH + LIB_FM_QT_SONAME="libfm-qt.so.7" + ) + + target_link_libraries(external_lxqt_qtplugin + PRIVATE + desktop-app::external_statusnotifieritem + desktop-app::external_xdgiconloader + desktop-app::external_qt + ) +endif() diff --git a/external/qt/CMakeLists.txt b/external/qt/CMakeLists.txt index 518aa38..3319de2 100644 --- a/external/qt/CMakeLists.txt +++ b/external/qt/CMakeLists.txt @@ -66,6 +66,10 @@ if (DESKTOP_APP_USE_PACKAGED) ) endif() + if (Qt5Svg_FOUND) + target_link_libraries(external_qt INTERFACE Qt5::Svg) + endif() + if (Qt5DBus_FOUND) target_link_libraries(external_qt INTERFACE Qt5::DBus) endif() @@ -75,6 +79,7 @@ else() ${qt_loc}/include ${qt_loc}/include/QtCore ${qt_loc}/include/QtGui + ${qt_loc}/include/QtSvg ${qt_loc}/include/QtWidgets ${qt_loc}/include/QtThemeSupport ${qt_loc}/include/QtWaylandClient @@ -104,6 +109,7 @@ else() QT_THEME_SUPPORT_LIB QT_WIDGETS_LIB QT_NETWORK_LIB + QT_SVG_LIB QT_GUI_LIB QT_CORE_LIB ) @@ -226,6 +232,7 @@ else() plugins/platforms/${qt_lib_prefix}qwayland-egl plugins/platforms/${qt_lib_prefix}qwayland-generic plugins/platforms/${qt_lib_prefix}qxcb + plugins/imageformats/${qt_lib_prefix}qsvg plugins/iconengines/${qt_lib_prefix}qsvgicon lib/${qt_lib_prefix}Qt5XcbQpa lib/${qt_lib_prefix}Qt5EglSupport diff --git a/external/qt/package.cmake b/external/qt/package.cmake index 4d96064..4d5b27d 100644 --- a/external/qt/package.cmake +++ b/external/qt/package.cmake @@ -28,6 +28,10 @@ if (LINUX) find_package(Qt5 COMPONENTS WaylandClient Svg REQUIRED) elseif (DESKTOP_APP_USE_PACKAGED_LAZY) find_package(Qt5 COMPONENTS WaylandClient REQUIRED) + + if (DESKTOP_APP_USE_PACKAGED_LAZY_PLATFORMTHEMES) + find_package(Qt5 COMPONENTS Svg REQUIRED) + endif() endif() if (DESKTOP_APP_DISABLE_DBUS_INTEGRATION) diff --git a/external/xdgiconloader/CMakeLists.txt b/external/xdgiconloader/CMakeLists.txt new file mode 100644 index 0000000..a251e05 --- /dev/null +++ b/external/xdgiconloader/CMakeLists.txt @@ -0,0 +1,59 @@ +# This file is part of Desktop App Toolkit, +# a set of libraries for developing nice desktop applications. +# +# For license and copyright information please follow this link: +# https://github.com/desktop-app/legal/blob/master/LEGAL + +if (DESKTOP_APP_USE_PACKAGED AND NOT DESKTOP_APP_USE_PACKAGED_LAZY_PLATFORMTHEMES) + add_library(external_xdgiconloader INTERFACE IMPORTED GLOBAL) + add_library(desktop-app::external_xdgiconloader ALIAS external_xdgiconloader) +else() + add_library(external_xdgiconloader OBJECT) + add_library(desktop-app::external_xdgiconloader ALIAS external_xdgiconloader) + init_target(external_xdgiconloader "(external)") + + set(libqtxdg_loc ${third_party_loc}/libqtxdg) + set(xdgiconloader_src ${libqtxdg_loc}/src/xdgiconloader) + set(xdgiconloader_includedir "${CMAKE_CURRENT_BINARY_DIR}/xdgiconloader") + + set_target_properties(external_xdgiconloader PROPERTIES AUTOMOC ON) + + nice_target_sources(external_xdgiconloader ${xdgiconloader_src} + PRIVATE + xdgiconloader.cpp + xdgiconloader_p.h + ) + + include(GenerateExportHeader) + generate_export_header(external_xdgiconloader BASE_NAME XdgIconLoader) + + configure_file( + "${CMAKE_CURRENT_BINARY_DIR}/xdgiconloader_export.h" + "${xdgiconloader_includedir}/xdgiconloader_export.h" + COPYONLY + ) + + file( + COPY + ${xdgiconloader_src}/xdgiconloader_p.h + DESTINATION + ${xdgiconloader_includedir}/private/xdgiconloader + ) + + target_include_directories(external_xdgiconloader + PUBLIC + ${xdgiconloader_includedir} + PRIVATE + ${xdgiconloader_src} + ) + + target_compile_definitions(external_xdgiconloader + PRIVATE + QT_NO_KEYWORDS + ) + + target_link_libraries(external_xdgiconloader + PUBLIC + desktop-app::external_qt + ) +endif()