uigraphics/AknIcon/group/IconId.pl
changeset 0 05e9090e2422
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uigraphics/AknIcon/group/IconId.pl	Thu Dec 17 09:14:12 2009 +0200
@@ -0,0 +1,242 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+my $KAknsConstants_h =   "\\epoc32\\include\\middleware\\AknsConstants.h";
+my $KAknsConstants_hrh = "\\epoc32\\include\\middleware\\AknsConstants.hrh";
+
+if ($#ARGV != 2)
+    {
+    die "usage: MIFList-file build-path out-file\n";
+    }
+
+my @mifList = ReadMifList($ARGV[0]);
+my $path = $ARGV[1];
+open (OUTFILE, ">$ARGV[2]") || die "Couldn't open $ARGV[2] for output\n";
+print OUTFILE "Icon ID,file name,SVG name,Skin ID major,Skin ID minor\n";
+
+(my $mifName,my $mifPath) = SplitPath($ARGV[0]);
+
+my %skins = ReadAknsConstants_h($path.$KAknsConstants_h);
+my %skinIDVals = ReadAknsConstants_hrh($path.$KAknsConstants_hrh);
+
+for my $k (0 .. $#mifList)
+    {
+    (my $name,my $path) = SplitPath($mifList[$k]);
+    my $iconId = 2* $k + 16384;
+    $name =~ s/_//g;
+    if ($name =~ m/(\S+)\.(\S+)/) #remove extension
+        {
+        $name =$1;
+        }
+    #print "$k,$name,$path\n";
+    if (exists $skins{$name})
+        {
+        my $major = $skins{$name}[0];
+        my $minor = $skins{$name}[1];
+        my $majorVal = -1;
+        if (exists $skinIDVals{$major})
+            {
+            $majorVal = $skinIDVals{$major};
+            }
+        else
+            {
+            print "not found major $major\n";
+            }
+        my $minorVal = -1;
+        if (exists $skinIDVals{$minor})
+            {
+            $minorVal = $skinIDVals{$minor};
+            }
+        else
+            {
+            print "not found minor $minor\n";
+            }
+        printf(OUTFILE "%d,%s,%s,0x%x,0x%x\n",$iconId,$mifName,$mifList[$k],$majorVal,$minorVal);
+        #print "found,$majorVal,$minorVal\n";
+        }
+    else
+        {
+        #print "not found $name\n";
+        }
+    }
+
+my $incPath = $path . "\\epoc32\\include";
+opendir DIR,$incPath;
+my @files = readdir DIR;
+foreach my $f (@files)
+    {
+    if ($f =~ /(\S+)\.mbg\z/i)
+        {
+        my $fName = lc(embm . $1);
+        my %list = ReadMbg($incPath . "\\" . $f);
+        foreach my $k (keys %list)
+            {
+            my $svgName = lc($k);
+            my $iconId = $list{$k};
+            my $ind = index($svgName,$fName);
+            if ($ind >= 0)
+                {
+                $ind += length($fName);
+                my $svg = substr($svgName,$ind);
+                $svg =~ s/_//g;
+                if (exists $skins{$svg})
+                    {
+                    my $major = $skins{$svg}[0];
+                    my $minor = $skins{$svg}[1];
+                    my $majorVal = -1;
+                    if (exists $skinIDVals{$major})
+                        {
+                        $majorVal = $skinIDVals{$major};
+                        }
+                    else
+                        {
+                        print "not found major $major\n";
+                        }
+                    my $minorVal = -1;
+                    if (exists $skinIDVals{$minor})
+                        {
+                        $minorVal = $skinIDVals{$minor};
+                        }
+                    else
+                        {
+                        print "not found minor $minor\n";
+                        }
+                    printf(OUTFILE "%d,%s,%s,0x%x,0x%x\n",$iconId,$f,$k,$majorVal,$minorVal);
+                    #print "found,$majorVal,$minorVal\n";
+                    }
+                else
+                    {
+                    #print "not found $svg\n";
+                    }
+                }
+            else
+                {
+                print "not found,$svgName,$fName\n";
+                }
+            }
+        }
+    }
+close DIR;
+
+    
+close OUTFILE;
+
+exit(0);
+
+sub ReadMifList
+    {
+    my $file = shift;
+    my @mifList;
+    open (INFILE, "<$file") || die "Couldn't open $file for input\n";
+    while (my $line=<INFILE>)
+        {
+        #if ($line =~ m/\S+\s+(\S+)(\.svg)/)
+        if ($line =~ m/\S+\s+(\S+)/)
+            {
+            push(@mifList,$1);
+            }
+        #else
+        #    {
+        #    print "$line\n";
+        #    }
+        }
+    close INFILE;
+    return @mifList;
+    }
+    
+sub ReadMbg
+    {
+    my $file = shift;
+    my %mifList;
+    open (INFILE, "<$file") || die "Couldn't open $file for input\n";
+    while (my $line=<INFILE>)
+        {
+        if ($line =~ m/(\S+)\s*=\s*(\d+),/)
+            {
+            $mifList{$1}=$2;
+            }
+        #else
+        #    {
+        #    print "$line\n";
+        #    }
+        }
+    close INFILE;
+    return %mifList;
+    }
+    
+sub ReadAknsConstants_h
+    {
+    my $file = shift;
+    my %list;
+    my $state = 0;
+    my $name;
+    open (INFILE, "<$file") || die "Couldn't open $file for input\n";
+    while (my $line=<INFILE>)
+        {
+        if ($line =~ m/TAknsItemID\s+KAknsIID(\S+)\s*=/)
+            {
+            $state = 1;
+            $name = lc($1);
+            }
+        else
+            {
+            if ($state == 1)
+                {
+                if ($line =~ m/\{\s*(\S+)\s*,\s*(\S+)\s*\}/)
+                    {
+                    $list{$name}[0] = $1;
+                    $list{$name}[1] = $2;
+                    }
+                $state = 0;
+                }
+            }
+        }
+    close INFILE;
+    return %list;
+    }
+    
+sub ReadAknsConstants_hrh
+    {
+    my $file = shift;
+    my %list;
+    my $state = 0;
+    my $name;
+    open (INFILE, "<$file") || die "Couldn't open $file for input\n";
+    while (my $line=<INFILE>)
+        {
+        if ($line =~ m/\s*(\S+)\s*=\s*(\S+)(,|\s+)/)
+            {
+            my $n = $1;
+            my $val = hex($2);
+            $list{$n} = $val;
+            #print "$n,$val\n";
+            }
+        }
+    close INFILE;
+    return %list;
+    }
+
+# take a full path name as input, return name and path
+sub SplitPath {
+    if ($_[0] =~ m/\\((\w|[.]|[-])+)(\z)/)
+        {
+        return $1,$`;
+        }
+    else
+        {
+        return $_[0];
+        }
+    }