diff --git a/CMakeModules/AddAppIconMacro.cmake b/CMakeModules/AddAppIconMacro.cmake new file mode 100644 index 000000000..37ea17174 --- /dev/null +++ b/CMakeModules/AddAppIconMacro.cmake @@ -0,0 +1,112 @@ +# This macro is taken from kdelibs/cmake/modules/KDE4Macros.cmake. +# +# Copyright (c) 2006-2009 Alexander Neundorf, +# Copyright (c) 2006, 2007, Laurent Montel, +# Copyright (c) 2007 Matthias Kretz +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file [in KDE repositories]. + + +# adds application icon to target source list +# for detailed documentation see the top of FindKDE4Internal.cmake +macro (KDE4_ADD_APP_ICON appsources pattern) + set (_outfilename ${CMAKE_CURRENT_BINARY_DIR}/${appsources}) + + if (WIN32) + if(NOT WINCE) + find_program(PNG2ICO_EXECUTABLE NAMES png2ico) + else(NOT WINCE) + find_program(PNG2ICO_EXECUTABLE NAMES png2ico PATHS ${HOST_BINDIR} NO_DEFAULT_PATH ) + endif(NOT WINCE) + find_program(WINDRES_EXECUTABLE NAMES windres) + if(MSVC) + set(WINDRES_EXECUTABLE TRUE) + endif(MSVC) + if (PNG2ICO_EXECUTABLE AND WINDRES_EXECUTABLE) + string(REPLACE "*" "(.*)" pattern_rx "${pattern}") + file(GLOB files "${pattern}") + foreach (it ${files}) + string(REGEX REPLACE "${pattern_rx}" "\\1" fn "${it}") + if (fn MATCHES ".*16.*" ) + list (APPEND _icons ${it}) + endif (fn MATCHES ".*16.*") + if (fn MATCHES ".*32.*" ) + list (APPEND _icons ${it}) + endif (fn MATCHES ".*32.*") + if (fn MATCHES ".*48.*" ) + list (APPEND _icons ${it}) + endif (fn MATCHES ".*48.*") + if (fn MATCHES ".*64.*" ) + list (APPEND _icons ${it}) + endif (fn MATCHES ".*64.*") + if (fn MATCHES ".*128.*" ) + list (APPEND _icons ${it}) + endif (fn MATCHES ".*128.*") + endforeach (it) + if (_icons) + add_custom_command(OUTPUT ${_outfilename}.ico ${_outfilename}.rc + COMMAND ${PNG2ICO_EXECUTABLE} ARGS --rcfile ${_outfilename}.rc ${_outfilename}.ico ${_icons} + DEPENDS ${PNG2ICO_EXECUTABLE} ${_icons} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + if (MINGW) + add_custom_command(OUTPUT ${_outfilename}_res.o + COMMAND ${WINDRES_EXECUTABLE} ARGS -i ${_outfilename}.rc -o ${_outfilename}_res.o --include-dir=${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS ${WINDRES_EXECUTABLE} ${_outfilename}.rc + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + list(APPEND ${appsources} ${_outfilename}_res.o) + else(MINGW) + list(APPEND ${appsources} ${_outfilename}.rc) + endif(MINGW) + else(_icons) + message(STATUS "Unable to find a related icon that matches pattern ${pattern} for variable ${appsources} - application will not have an application icon!") + endif(_icons) + else(PNG2ICO_EXECUTABLE AND WINDRES_EXECUTABLE) + message(STATUS "Unable to find the png2ico or windres utilities - application will not have an application icon!") + endif(PNG2ICO_EXECUTABLE AND WINDRES_EXECUTABLE) + endif(WIN32) + if (Q_WS_MAC) + # 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) + + 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} + ) + + # This will register the icon into the bundle + set(MACOSX_BUNDLE_ICON_FILE ${appsources}.icns) + + # Append the icns file to the sources list so it will be a dependency to the + # main target + list(APPEND ${appsources} ${_outfilename}.icns) + + # Install the icon into the Resources dir in the bundle + set_source_files_properties(${_outfilename}.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources) + + 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) + + 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) + endif(Q_WS_MAC) +endmacro (KDE4_ADD_APP_ICON) diff --git a/data/icons/audio-x-generic-16.png b/data/icons/audio-x-generic-16x16.png similarity index 100% rename from data/icons/audio-x-generic-16.png rename to data/icons/audio-x-generic-16x16.png diff --git a/data/icons/audio-x-generic-22.png b/data/icons/audio-x-generic-22x22.png similarity index 100% rename from data/icons/audio-x-generic-22.png rename to data/icons/audio-x-generic-22x22.png diff --git a/data/icons/audio-x-generic-32.png b/data/icons/audio-x-generic-32x32.png similarity index 100% rename from data/icons/audio-x-generic-32.png rename to data/icons/audio-x-generic-32x32.png diff --git a/data/icons/tomahawk-icon-128.png b/data/icons/tomahawk-icon-128x128.png similarity index 100% rename from data/icons/tomahawk-icon-128.png rename to data/icons/tomahawk-icon-128x128.png diff --git a/data/icons/tomahawk-icon-16.png b/data/icons/tomahawk-icon-16x16.png similarity index 100% rename from data/icons/tomahawk-icon-16.png rename to data/icons/tomahawk-icon-16x16.png diff --git a/data/icons/tomahawk-icon-256.png b/data/icons/tomahawk-icon-256x256.png similarity index 100% rename from data/icons/tomahawk-icon-256.png rename to data/icons/tomahawk-icon-256x256.png diff --git a/data/icons/tomahawk-icon-32.png b/data/icons/tomahawk-icon-32x32.png similarity index 100% rename from data/icons/tomahawk-icon-32.png rename to data/icons/tomahawk-icon-32x32.png diff --git a/data/icons/tomahawk-icon-512.png b/data/icons/tomahawk-icon-512x512.png similarity index 100% rename from data/icons/tomahawk-icon-512.png rename to data/icons/tomahawk-icon-512x512.png diff --git a/data/icons/tomahawk-icon-64.png b/data/icons/tomahawk-icon-64x64.png similarity index 100% rename from data/icons/tomahawk-icon-64.png rename to data/icons/tomahawk-icon-64x64.png diff --git a/data/icons/tomahawk.icns b/data/icons/tomahawk.icns deleted file mode 100644 index 92f4f310d..000000000 Binary files a/data/icons/tomahawk.icns and /dev/null differ diff --git a/data/icons/tomahawk.ico b/data/icons/tomahawk.ico deleted file mode 100644 index 4e6852f2d..000000000 Binary files a/data/icons/tomahawk.ico and /dev/null differ diff --git a/resources.qrc b/resources.qrc index 927404b56..447b1f71d 100644 --- a/resources.qrc +++ b/resources.qrc @@ -61,14 +61,14 @@ ./data/images/volume-slider-bkg.png ./data/images/volume-slider-level.png ./data/topbar-radiobuttons.css -./data/icons/tomahawk-icon-16.png -./data/icons/tomahawk-icon-32.png -./data/icons/tomahawk-icon-64.png -./data/icons/tomahawk-icon-128.png -./data/icons/tomahawk-icon-256.png -./data/icons/tomahawk-icon-512.png -./data/icons/audio-x-generic-22.png -./data/icons/audio-x-generic-32.png -./data/icons/audio-x-generic-16.png +./data/icons/tomahawk-icon-16x16.png +./data/icons/tomahawk-icon-32x32.png +./data/icons/tomahawk-icon-64x64.png +./data/icons/tomahawk-icon-128x128.png +./data/icons/tomahawk-icon-256x256.png +./data/icons/tomahawk-icon-512x512.png +./data/icons/audio-x-generic-22x22.png +./data/icons/audio-x-generic-32x32.png +./data/icons/audio-x-generic-16x16.png diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 644c75a84..16919154e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -9,6 +9,8 @@ SET( QT_USE_QTNETWORK TRUE ) SET( QT_USE_QTXML TRUE ) INCLUDE( ${QT_USE_FILE} ) +INCLUDE( ${CMAKE_MODULE_PATH}/AddAppIconMacro.cmake ) + SET( CMAKE_BUILD_TYPE "debugfull" ) SET( CMAKE_VERBOSE_MAKEFILE ON ) SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" ) @@ -294,6 +296,7 @@ IF( UNIX AND NOT APPLE ) INCLUDE( "CMakeLists.linux.txt" ) ENDIF( UNIX AND NOT APPLE ) +kde4_add_app_icon( tomahawkSources "${CMAKE_CURRENT_SOURCE_DIR}/../data/icons/tomahawk-icon-*.png" ) qt4_add_resources( RC_SRCS "../resources.qrc" ) qt4_wrap_cpp( tomahawkMoc ${tomahawkHeaders} ) diff --git a/src/playlist/trackview.cpp b/src/playlist/trackview.cpp index ada0a2e49..2f822e5f5 100644 --- a/src/playlist/trackview.cpp +++ b/src/playlist/trackview.cpp @@ -384,7 +384,7 @@ TrackView::createDragPixmap( int itemCount ) const int y = 0; for( int i = 0; i < itemCount; ++i ) { - const QPixmap pixmap = QPixmap( QString( ":/data/icons/audio-x-generic-%2.png" ).arg( size ) ); + const QPixmap pixmap = QPixmap( QString( ":/data/icons/audio-x-generic-%2x%2.png" ).arg( size ) ); painter.drawPixmap( x, y, pixmap ); x += size + 1; diff --git a/src/tomahawkapp.cpp b/src/tomahawkapp.cpp index 7e7ae1091..f0af5c7ca 100644 --- a/src/tomahawkapp.cpp +++ b/src/tomahawkapp.cpp @@ -114,7 +114,7 @@ TomahawkApp::TomahawkApp( int& argc, char *argv[] ) m_audioEngine = 0; m_mainwindow = 0; m_headless = arguments().contains( "--headless" ); - setWindowIcon( QIcon( RESPATH "icons/tomahawk-icon-128.png" ) ); + setWindowIcon( QIcon( RESPATH "icons/tomahawk-icon-128x128.png" ) ); #ifndef NO_LIBLASTFM m_scrobbler = 0; #endif diff --git a/src/tomahawkwindow.cpp b/src/tomahawkwindow.cpp index b15d2a530..914e3a1fc 100644 --- a/src/tomahawkwindow.cpp +++ b/src/tomahawkwindow.cpp @@ -42,7 +42,7 @@ TomahawkWindow::TomahawkWindow( QWidget* parent ) , m_playlistManager( new PlaylistManager( this ) ) { qApp->setStyle( new ProxyStyle() ); - setWindowIcon( QIcon( RESPATH "icons/tomahawk-icon-128.png" ) ); + setWindowIcon( QIcon( RESPATH "icons/tomahawk-icon-128x128.png" ) ); #ifdef Q_WS_MAC setUnifiedTitleAndToolBarOnMac( true );