mkspecs/features/symbian/application_icon.prf
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 7 3f74d0d4af4c
--- a/mkspecs/features/symbian/application_icon.prf	Tue Jan 26 12:42:25 2010 +0200
+++ b/mkspecs/features/symbian/application_icon.prf	Tue Feb 02 00:43:10 2010 +0200
@@ -3,38 +3,49 @@
 # If no_icon keyword exist, the S60 UI app is just made hidden. This because S60 app FW
 # requires the registration resource file to exist always
 contains( CONFIG, no_icon ) {
-    symbian:RSS_RULES ="hidden = KAppIsHidden;" 
+    symbian:RSS_RULES ="hidden = KAppIsHidden;"
     CONFIG -= no_icon
 } else {
 # There is no point in compiling the MIF icon if no_icon CONFIGS is set
     !isEmpty(ICON) {
-        
-        !count(ICON, $$size(TRANSLATIONS)):!count(ICON, 1) {
-            message("ICON keyword must have one or the same amout of items as in TRANSLATIONS keyword")
+
+        !count(ICON, 1) {
+            ICON = $$first(ICON)
+            warning("Only first icon specified in ICON variable is used: $$ICON")
         }
 
-        # MIF files will have UID in their names, if TARGET.UID3 is not set, remind the user
-        isEmpty(TARGET.UID3):error("TARGET.UID3 must be explicitly defined for ICON generation")
+        # Try to produce indentical string to fixedTarget in SymbianMakefileGenerator, replaced chars taken
+        # from SymbianMakefileGenerator::removeSpecialCharacters.
+        #
+        # Note: it is not a major problem even baseTarget is not 100% identical to fixedTarget since qmake
+        # only uses filename from RSS_RULES.icon_file when referring to icon file name.
+        baseTarget = $$basename(TARGET)
+        baseTarget = $$replace(baseTarget, /,_)
+        baseTarget = $$replace(baseTarget, \\,_)
+        baseTarget = $$replace(baseTarget, -,_)
+        baseTarget = $$replace(baseTarget, :,_)
+        baseTarget = $$replace(baseTarget, \.,_)
+        baseTarget = $$replace(baseTarget, " ",_)
 
         # Note: symbian-sbsv2 builds can't utilize extra compiler for mifconv, so ICON handling is done in code
-        symbian-abld {        
-            #Makefile: requires paths with backslash    
+        symbian-abld {
+            #Makefile: requires paths with backslash
             ICON = $$replace( ICON, /, \\)
 
             # Extra compiler rules for mifconv
-            mifconv.output = ${ZDIR}$$APP_RESOURCE_DIR/$${TARGET.UID3}.mif
+            mifconv.output = ${ZDIR}$$APP_RESOURCE_DIR/$${baseTarget}.mif
             # Based on: http://www.forum.nokia.com/document/Cpp_Developers_Library
             # svg-t icons should always use /c32 depth
-            mifconv.commands = mifconv ${QMAKE_FILE_OUT} $$join(ICON, " /c32 ", "/c32 ",) 
+            mifconv.commands = mifconv ${QMAKE_FILE_OUT} /c32 ${QMAKE_FILE_IN}
             mifconv.input = ICON
             mifconv.CONFIG = no_link combine
             # target_predeps together with combine seems not to work correctly, lets define it by ourselves
             PRE_TARGETDEPS += $$mifconv.output
             QMAKE_EXTRA_COMPILERS += mifconv
-        } 
+        }
         # Rules to use generated MIF file from symbian resources
         RSS_RULES.number_of_icons = $$size(ICON)
-        RSS_RULES.icon_file = $$replace( APP_RESOURCE_DIR, /, \\\\ )\\\\$${TARGET.UID3}.mif
+        RSS_RULES.icon_file = $$APP_RESOURCE_DIR/$${baseTarget}.mif
     }
 }