From: Jocelyn Turcotte Date: Fri, 28 Jul 2017 15:51:52 +0000 (+0200) Subject: macos: Add a sidebar icon X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~704^2^2~9 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=9e36cabcbff1c7c0bc3dd0e836d08b5224916999;p=nextcloud-desktop.git macos: Add a sidebar icon In the process, use an iconset to generate the icns using iconutil. Also add some missing icon resolutions according to the guidelines. Issue #296 --- diff --git a/cmake/modules/AddAppIconMacro.cmake b/cmake/modules/AddAppIconMacro.cmake index 3106b1bfa..dc833bd9d 100644 --- a/cmake/modules/AddAppIconMacro.cmake +++ b/cmake/modules/AddAppIconMacro.cmake @@ -70,45 +70,64 @@ macro (KDE4_ADD_APP_ICON appsources pattern) endif(PNG2ICO_EXECUTABLE AND WINDRES_EXECUTABLE) endif(WIN32) if (APPLE) - # first convert image to a tiff using the Mac OS X "sips" utility, - # then use tiff2icns to convert to an icon - find_program(SIPS_EXECUTABLE NAMES sips) - find_program(TIFF2ICNS_EXECUTABLE NAMES tiff2icns) - if (SIPS_EXECUTABLE AND TIFF2ICNS_EXECUTABLE) - file(GLOB_RECURSE files "${pattern}") - # we can only test for the 128-icon like that - we don't use patterns anymore - foreach (it ${files}) - if (it MATCHES ".*128.*" ) - set (_icon ${it}) - endif (it MATCHES ".*128.*") - endforeach (it) + file(GLOB_RECURSE files "${pattern}") + file(MAKE_DIRECTORY ${appsources}.iconset) - if (_icon) - - # first, get the basename of our app icon - add_custom_command(OUTPUT ${_outfilename}.icns ${outfilename}.tiff - COMMAND ${SIPS_EXECUTABLE} -s format tiff ${_icon} --out ${outfilename}.tiff - COMMAND ${TIFF2ICNS_EXECUTABLE} ${outfilename}.tiff ${_outfilename}.icns - DEPENDS ${_icon} - ) + # List from: + # https://developer.apple.com/library/content/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Optimizing/Optimizing.html#//apple_ref/doc/uid/TP40012302-CH7-SW4 + foreach (it ${files}) + if (it MATCHES ".*icon-16.*") + configure_file(${it} ${appsources}.iconset/icon_16x16.png COPYONLY) + elseif (it MATCHES ".*icon-32.*") + configure_file(${it} ${appsources}.iconset/icon_16x16@2x.png COPYONLY) + configure_file(${it} ${appsources}.iconset/icon_32x32.png COPYONLY) + elseif (it MATCHES ".*icon-64.*") + configure_file(${it} ${appsources}.iconset/icon_32x32@2x.png COPYONLY) + elseif (it MATCHES ".*icon-128.*") + configure_file(${it} ${appsources}.iconset/icon_128x128.png COPYONLY) + elseif (it MATCHES ".*icon-256.*") + configure_file(${it} ${appsources}.iconset/icon_128x128@2x.png COPYONLY) + configure_file(${it} ${appsources}.iconset/icon_256x256.png COPYONLY) + elseif (it MATCHES ".*icon-512.*") + configure_file(${it} ${appsources}.iconset/icon_256x256@2x.png COPYONLY) + configure_file(${it} ${appsources}.iconset/icon_512x512.png COPYONLY) + elseif (it MATCHES ".*icon-1024.*") + configure_file(${it} ${appsources}.iconset/icon_512x512@2x.png COPYONLY) + endif() + endforeach (it) - # This will register the icon into the bundle - set(MACOSX_BUNDLE_ICON_FILE ${appsources}.icns) + # Copy the sidebar icons in the main app bundle for the FinderSync extension to pick. + # https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/Finder.html#//apple_ref/doc/uid/TP40014214-CH15-SW15 + foreach (it ${files}) + if (it MATCHES ".*sidebar-16.*") + configure_file(${it} ${appsources}.iconset/sidebar_16x16.png COPYONLY) + elseif (it MATCHES ".*sidebar-18.*") + configure_file(${it} ${appsources}.iconset/sidebar_18x18.png COPYONLY) + elseif (it MATCHES ".*sidebar-32.*") + configure_file(${it} ${appsources}.iconset/sidebar_16x16@2x.png COPYONLY) + configure_file(${it} ${appsources}.iconset/sidebar_32x32.png COPYONLY) + elseif (it MATCHES ".*sidebar-36.*") + configure_file(${it} ${appsources}.iconset/sidebar_18x18@2x.png COPYONLY) + elseif (it MATCHES ".*sidebar-64.*") + configure_file(${it} ${appsources}.iconset/sidebar_32x32@2x.png COPYONLY) + endif() + endforeach (it) - # Append the icns file to the sources list so it will be a dependency to the - # main target - list(APPEND ${appsources} ${_outfilename}.icns) + add_custom_command(OUTPUT ${_outfilename}.icns + COMMAND echo === Building bundle icns with iconset: + COMMAND ls -1 ${appsources}.iconset + COMMAND iconutil -c icns -o ${_outfilename}.icns ${appsources}.iconset + DEPENDS ${files} + ) - # Install the icon into the Resources dir in the bundle - set_source_files_properties(${_outfilename}.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources) + # This will register the icon into the bundle + set(MACOSX_BUNDLE_ICON_FILE ${appsources}.icns) - else(_icon) - # TODO - try to scale a non-128 icon...? Try to convert an SVG on the fly? - message(STATUS "Unable to find an 128x128 icon that matches pattern ${pattern} for variable ${appsources} - application will not have an application icon!") - endif(_icon) + # Append the icns file to the sources list so it will be a dependency to the + # main target + list(APPEND ${appsources} ${_outfilename}.icns) - else(SIPS_EXECUTABLE AND TIFF2ICNS_EXECUTABLE) - message(STATUS "Unable to find the sips and tiff2icns utilities - application will not have an application icon!") - endif(SIPS_EXECUTABLE AND TIFF2ICNS_EXECUTABLE) + # Install the icon into the Resources dir in the bundle + set_source_files_properties(${_outfilename}.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources) endif(APPLE) endmacro (KDE4_ADD_APP_ICON) diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index 9011c07ab..2157d3cd6 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -232,7 +232,7 @@ if (NOT DEFINED APPLICATION_ICON_NAME) set(APPLICATION_ICON_NAME ${APPLICATION_SHORTNAME}) endif() -kde4_add_app_icon( ownCloud "${theme_dir}/colored/${APPLICATION_ICON_NAME}-icon*.png") +kde4_add_app_icon( ownCloud "${theme_dir}/colored/${APPLICATION_ICON_NAME}-*.png") list(APPEND final_src ${ownCloud}) set(ownCloud ${ownCloud_old}) diff --git a/theme/colored/owncloud-icon-1024.png b/theme/colored/owncloud-icon-1024.png new file mode 100644 index 000000000..e32847c1c Binary files /dev/null and b/theme/colored/owncloud-icon-1024.png differ diff --git a/theme/colored/owncloud-icon-16.png b/theme/colored/owncloud-icon-16.png new file mode 100644 index 000000000..5c01c4fe9 Binary files /dev/null and b/theme/colored/owncloud-icon-16.png differ diff --git a/theme/colored/owncloud-sidebar-16.png b/theme/colored/owncloud-sidebar-16.png new file mode 100644 index 000000000..5c01c4fe9 Binary files /dev/null and b/theme/colored/owncloud-sidebar-16.png differ diff --git a/theme/colored/owncloud-sidebar-18.png b/theme/colored/owncloud-sidebar-18.png new file mode 100644 index 000000000..bff617574 Binary files /dev/null and b/theme/colored/owncloud-sidebar-18.png differ diff --git a/theme/colored/owncloud-sidebar-32.png b/theme/colored/owncloud-sidebar-32.png new file mode 100644 index 000000000..721c04e48 Binary files /dev/null and b/theme/colored/owncloud-sidebar-32.png differ diff --git a/theme/colored/owncloud-sidebar-36.png b/theme/colored/owncloud-sidebar-36.png new file mode 100644 index 000000000..27e415d31 Binary files /dev/null and b/theme/colored/owncloud-sidebar-36.png differ diff --git a/theme/colored/owncloud-sidebar-64.png b/theme/colored/owncloud-sidebar-64.png new file mode 100644 index 000000000..5c6f17f0c Binary files /dev/null and b/theme/colored/owncloud-sidebar-64.png differ