# Install icons
if (WANT_MONO OR WANT_QTCLIENT)
+ if (NOT WITH_BUNDLED_ICONS AND NOT WITH_OXYGEN_ICONS)
+ message(WARNING "Not including bundled icon themes. Ensure that the Breeze or Oxygen icon theme is installed!")
+ endif()
+
set(BUNDLED_ICON_THEME_DIR ${CMAKE_SOURCE_DIR}/3rdparty/icons)
+ # Always embed a hicolor fallback containing the most important (e.g. tray) icons.
+ # The .qrc contains aliases, so it's best to keep this manually written rather than autogenerated.
+ quassel_add_module(Resource::HicolorIcons STATIC)
+ target_sources(${TARGET} PRIVATE hicolor_icons.qrc)
+ set_target_properties(${TARGET} PROPERTIES AUTOMOC OFF AUTOUIC OFF)
+
if (EMBED_DATA)
# Always embed quassel-specific icons
message(STATUS "Embedding Quassel-specific icons")
- list(APPEND ICON_RCS ${CMAKE_CURRENT_SOURCE_DIR}/breeze_icons.qrc)
- list(APPEND ICON_RCS ${CMAKE_CURRENT_SOURCE_DIR}/breeze_dark_icons.qrc)
- list(APPEND ICON_RCS ${CMAKE_CURRENT_SOURCE_DIR}/oxygen_icons.qrc)
+ set(patterns breeze*/*.svg)
+ if (WITH_OXYGEN_ICONS)
+ list(APPEND patterns oxygen/*.png)
+ endif()
+ quassel_add_resource(Icons PREFIX icons PATTERNS ${patterns})
- if (WITH_BREEZE)
+ if (WITH_BUNDLED_ICONS)
message(STATUS "Embedding bundled Breeze icon theme")
- list(APPEND ICON_RCS ${BUNDLED_ICON_THEME_DIR}/breeze_icon_theme.qrc)
- endif()
- if (WITH_BREEZE_DARK)
- message(STATUS "Embedding bundled Breeze Dark icon theme")
- list(APPEND ICON_RCS ${BUNDLED_ICON_THEME_DIR}/breeze_dark_icon_theme.qrc)
- endif()
- if (WITH_OXYGEN)
- message(STATUS "Embedding bundled Oxygen icon theme")
- list(APPEND ICON_RCS ${BUNDLED_ICON_THEME_DIR}/oxygen_icon_theme.qrc)
+ set(patterns breeze*/*.svg breeze*/index.theme)
+ if (WITH_OXYGEN_ICONS)
+ message(STATUS "Embedding bundled Oxygen icon theme")
+ list(APPEND patterns oxygen/*.png oxygen/index.theme)
+ endif()
endif()
+ quassel_add_resource(IconThemes PREFIX icons PATTERNS ${patterns} BASEDIR ${BUNDLED_ICON_THEME_DIR})
else()
# Always install quassel-specific icons
- install(DIRECTORY breeze breeze-dark oxygen DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel/icons)
+ install(DIRECTORY breeze breeze-dark DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel/icons)
+ if (WITH_OXYGEN_ICONS)
+ install(DIRECTORY oxygen DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel/icons)
+ endif()
# Install bundled icon themes into our data dir (instead of CMAKE_INSTALL_ICONDIR) to avoid conflicts
# with themes provided by the system
- if (WITH_BREEZE)
+ if (WITH_BUNDLED_ICONS)
message(STATUS "Installing bundled Breeze icon theme")
- install(DIRECTORY ${BUNDLED_ICON_THEME_DIR}/breeze DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel/icons)
- endif()
- if (WITH_BREEZE_DARK)
- message(STATUS "Installing bundled Breeze Dark icon theme")
- install(DIRECTORY ${BUNDLED_ICON_THEME_DIR}/breeze-dark DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel/icons)
- endif()
- if (WITH_OXYGEN)
- message(STATUS "Installing bundled Oxygen icon theme")
- install(DIRECTORY ${BUNDLED_ICON_THEME_DIR}/oxygen DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel/icons)
+ install(DIRECTORY ${BUNDLED_ICON_THEME_DIR}/breeze
+ ${BUNDLED_ICON_THEME_DIR}/breeze-dark
+ DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel/icons
+ )
+ if (WITH_OXYGEN_ICONS)
+ message(STATUS "Installing bundled Oxygen icon theme")
+ install(DIRECTORY ${BUNDLED_ICON_THEME_DIR}/oxygen DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel/icons)
+ endif()
endif()
endif()
- set(CLIENT_RCS ${CLIENT_RCS} ${ICON_RCS} PARENT_SCOPE)
-
# Application icon
if (HAVE_KDE OR (UNIX AND NOT APPLE))
# hicolor contains the application icon in all relevant sizes
install(DIRECTORY hicolor DESTINATION ${CMAKE_INSTALL_ICONDIR})
- # For a system install, also copy to pixmaps
- if (CMAKE_INSTALL_PREFIX STREQUAL "/usr")
- install(FILES hicolor/48x48/apps/quassel.png DESTINATION /usr/share/pixmaps)
+ if (Qt5Core_VERSION VERSION_LESS 5.5.0)
+ # Qt < 5.5 doesn't seem to correctly load icons from injected themes
+ # Install Quassel-specific ones from Oxygen into hicolor as fallback
+ install(DIRECTORY oxygen/ DESTINATION ${CMAKE_INSTALL_ICONDIR}/hicolor)
endif()
endif()
endif()