Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Müller <fmueller@owncloud.com>2021-07-23 15:26:25 +0300
committerHannah von Reth <vonreth@kde.org>2021-07-28 16:47:20 +0300
commit2bcdfdc0d88c7fd0cb83ca805bea2a0fdd373079 (patch)
tree8a99b914ed1a12466c53a1ec655a7ef0aa96b585
parentb2cde9eac21bb63f7f53001886de224b2f204b7f (diff)
Bundle translations using Qt resources system
-rw-r--r--CMakeLists.txt7
-rw-r--r--cmake/modules/OCBundleResources.cmake (renamed from cmake/modules/OCGenerateTheme.cmake)73
-rw-r--r--src/gui/CMakeLists.txt19
3 files changed, 78 insertions, 21 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ecc23480a..910eee854 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -31,7 +31,7 @@ include(CTest)
include(OCConfigPluginDir)
-include(OCGenerateTheme)
+include(OCBundleResources)
if (EXISTS "${PROJECT_SOURCE_DIR}/branding")
set(OEM_THEME_DIR "${PROJECT_SOURCE_DIR}/branding" CACHE STRING "The directory containing a custom theme")
@@ -168,11 +168,6 @@ if( WIN32 )
add_definitions(-DNTDDI_VERSION=0x0A000003)
endif()
-# Handle Translations, pick all client_* files from trans directory.
-file( GLOB TRANS_FILES ${CMAKE_SOURCE_DIR}/translations/client_*.ts)
-set(TRANSLATIONS ${TRANS_FILES})
-
-
file(GLOB_RECURSE OWNCLOUD_ICONS "${OEM_THEME_DIR}/theme/colored/*-${APPLICATION_ICON_NAME}-icon.png")
if (NOT OWNCLOUD_ICONS)
generate_legacy_icons(${OEM_THEME_DIR}/theme OWNCLOUD_ICONS)
diff --git a/cmake/modules/OCGenerateTheme.cmake b/cmake/modules/OCBundleResources.cmake
index 3913f4a09..39d04b82f 100644
--- a/cmake/modules/OCGenerateTheme.cmake
+++ b/cmake/modules/OCBundleResources.cmake
@@ -9,19 +9,19 @@ function(__addIcon THEME ICON_NAME)
endif()
set(icon "theme/${_ICON_SRC_PATH}/${ICON_NAME}.svg")
- set(iconAlias "theme/${THEME}/${ICON_NAME}.svg")
+ set(iconAlias "${APPLICATION_SHORTNAME}/theme/${THEME}/${ICON_NAME}.svg")
if (EXISTS ${OEM_THEME_DIR}/${icon})
file(APPEND "${QRC}" "<file alias=\"${iconAlias}\">${OEM_THEME_DIR}/${icon}</file>\n")
else()
set(icon "theme/${_ICON_SRC_PATH}/${ICON_NAME}.png")
- set(iconAlias "theme/${THEME}/${ICON_NAME}.png")
+ set(iconAlias "${APPLICATION_SHORTNAME}/theme/${THEME}/${ICON_NAME}.png")
if (EXISTS ${OEM_THEME_DIR}/${icon})
file(APPEND "${QRC}" "<file alias=\"${iconAlias}\">${OEM_THEME_DIR}/${icon}</file>\n")
else()
set(SIZES "16;22;32;48;64;128;256;512;1024")
foreach(size ${SIZES})
set(icon "theme/${_ICON_SRC_PATH}/${ICON_NAME}-${size}.png")
- set(iconAlias "theme/${THEME}/${ICON_NAME}-${size}.png")
+ set(iconAlias "${APPLICATION_SHORTNAME}/theme/${THEME}/${ICON_NAME}-${size}.png")
if (EXISTS ${OEM_THEME_DIR}/${icon})
file(APPEND "${QRC}" "<file alias=\"${iconAlias}\">${OEM_THEME_DIR}/${icon}</file>\n")
endif()
@@ -30,10 +30,20 @@ function(__addIcon THEME ICON_NAME)
endif()
endfunction()
+function(__write_qrc_file_header QRC_PATH FILES_PREFIX)
+ file(WRITE ${QRC_PATH} "<RCC>\n")
+ file(APPEND ${QRC_PATH} " <qresource prefix=\"/client/\">\n")
+endfunction()
+
+function(__write_qrc_file_footer QRC)
+ file(APPEND ${QRC} " </qresource>\n")
+ file(APPEND ${QRC} "</RCC>\n")
+endfunction()
+
function(generate_theme TARGET OWNCLOUD_SIDEBAR_ICONS_OUT)
if(NOT "${OEM_THEME_DIR}" STREQUAL "${PROJECT_SOURCE_DIR}")
set(QRC ${CMAKE_BINARY_DIR}/theme.qrc)
- file(WRITE "${QRC}" "<RCC>\n<qresource prefix=\"/client/${APPLICATION_SHORTNAME}\">\n")
+ __write_qrc_file_header(${QRC} theme)
__addIcon("universal" "${APPLICATION_ICON_NAME}-icon" SRC_PATH "colored")
__addIcon("universal" "wizard_logo" SRC_PATH "colored")
@@ -44,7 +54,7 @@ function(generate_theme TARGET OWNCLOUD_SIDEBAR_ICONS_OUT)
__addIcon(${theme} "state-${state}")
endforeach()
endforeach()
- file(APPEND "${QRC}" "</qresource>\n</RCC>\n")
+ __write_qrc_file_footer(${QRC})
target_sources(${TARGET} PRIVATE ${QRC})
# add executable icon on windows and osx
file(GLOB_RECURSE OWNCLOUD_SIDEBAR_ICONS "${OEM_THEME_DIR}/theme/colored/*-${APPLICATION_ICON_NAME}-sidebar.png")
@@ -67,3 +77,56 @@ function(generate_legacy_icons theme_dir OUT)
endforeach()
set(${OUT} ${OWNCLOUD_ICONS} PARENT_SCOPE)
endfunction()
+
+function(generate_qrc_file)
+ set(options "")
+ set(oneValueArgs QRC_PATH PREFIX)
+ set(multiValueArgs FILES)
+ cmake_parse_arguments(GENERATE_QRC_FILE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+
+ foreach(param ${oneValueArgs} ${multiValueArgs})
+ if(NOT GENERATE_QRC_FILE_${param})
+ message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION}: Argument missing: ${param}")
+ endif()
+ endforeach()
+
+ __write_qrc_file_header(${GENERATE_QRC_FILE_QRC_PATH} ${GENERATE_QRC_FILE_PREFIX})
+
+ foreach(file ${FILES})
+ get_filename_component(file_name ${file} NAME)
+ if(PREFIX)
+ set(file_alias ${PREFIX}/${file_name})
+ elseif()
+ set(file_alias ${file_name})
+ endif()
+ file(APPEND ${GENERATE_QRC_FILE_QRC_PATH} " <file alias=\"${file_alias}\">${file}</file>\n")
+ endforeach()
+
+ __write_qrc_file_footer(${GENERATE_QRC_FILE_QRC_PATH})
+endfunction()
+
+# add resources to a target using the Qt resources system
+# parameters:
+# - TARGET: the target to bundle the resources with
+# - PREFIX: virtual "subdirectory" the files will be available from
+# - FILES: the files to bundle
+function(add_resources_to_target)
+ set(options "")
+ set(oneValueArgs TARGET PREFIX)
+ set(multiValueArgs FILES)
+ cmake_parse_arguments(ADD_RESOURCES_TO_TARGET "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+
+ foreach(param ${oneValueArgs} ${multiValueArgs})
+ if(NOT ADD_RESOURCES_TO_TARGET_${param})
+ message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION}: Argument missing: ${param}")
+ endif()
+ endforeach()
+
+ set(qrc_path ${CMAKE_CURRENT_BINARY_DIR}/${ADD_RESOURCES_TO_TARGET_TARGET}-${ADD_RESOURCES_TO_TARGET_PREFIX}.qrc)
+ generate_qrc_file(
+ QRC_PATH ${qrc_path}
+ PREFIX ${ADD_RESOURCES_TO_TARGET_PREFIX}
+ FILES "${ADD_RESOURCES_TO_TARGET_FILES}"
+ )
+ target_sources(${ADD_RESOURCES_TO_TARGET_TARGET} PRIVATE ${qrc_path})
+endfunction()
diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt
index 4c5a9f873..f12e2ef1a 100644
--- a/src/gui/CMakeLists.txt
+++ b/src/gui/CMakeLists.txt
@@ -204,8 +204,15 @@ target_link_libraries(owncloud owncloudCore)
find_package(Qt5LinguistTools)
if(Qt5LinguistTools_FOUND)
- qt5_add_translation(client_I18N ${TRANSLATIONS})
- target_sources(owncloud PRIVATE ${client_I18N})
+ # Handle Translations, pick all client_* files from trans directory.
+ file(GLOB client_translations ${CMAKE_SOURCE_DIR}/translations/client_*.ts)
+ qt5_add_translation(client_compiled_translations ${client_translations})
+ target_sources(owncloud PRIVATE ${client_compiled_translations})
+ add_resources_to_target(
+ TARGET owncloud
+ PREFIX translations
+ FILES "${client_compiled_translations}"
+ )
endif()
#TODO Move resources files
@@ -238,19 +245,11 @@ if(NOT APPLE)
endforeach(_file)
endif()
- install(FILES ${client_I18N} DESTINATION ${DATA_INSTALL_DIR}/${APPLICATION_NAME}/i18n)
-
# we may not add MACOSX_BUNDLE here, if not building one
else()
target_sources(owncloud PRIVATE ${OWNCLOUD_BUNDLED_RESOURCES})
set_source_files_properties(
- ${client_I18N}
- PROPERTIES
- MACOSX_PACKAGE_LOCATION Resources/Translations
- )
-
- set_source_files_properties(
${OWNCLOUD_BUNDLED_RESOURCES}
PROPERTIES
MACOSX_PACKAGE_LOCATION Resources