Re-merge fixes for bug 26, bug 2098, NVGRenderStage code and ini file changes
authorWilliam Roberts <williamr@symbian.org>
Tue, 13 Jul 2010 16:36:34 +0100
changeset 86 f8aba17c1a8c
parent 80 3bd7be4c9278 (diff)
parent 71 16f8e3c1d75c (current diff)
child 91 d20751edaa5f
Re-merge fixes for bug 26, bug 2098, NVGRenderStage code and ini file changes
--- a/fontsupport/fontprovider/Src/FontProvider.cpp	Wed Jun 30 12:29:41 2010 +0100
+++ b/fontsupport/fontprovider/Src/FontProvider.cpp	Tue Jul 13 16:36:34 2010 +0100
@@ -234,6 +234,12 @@
 //end                                    
 
 
+#define EElafLFLoReLangs   (  EElafLangs \
+                               | EChineseLangsPRCLF)
+
+
+#define EElafLFHiReLangs   (  EElafLangs \
+                               | EChineseLangsPRCHiResLF)
 // Wildcard value for langs (font is to be used for all languages)
 #define EAnyLangs           0xffffffff
 const TInt KAknFontStylesSupported(3);
@@ -334,6 +340,28 @@
     }
 CDL_ARRAY_END(SHeightRequest, latinHeightRequestArray);
 
+CDL_ARRAY_START( SHeightRequest, latinLFHeightRequestArray)
+    {
+        {  2,  2 }, 
+        { 10,  8 }, 
+        { 11,  9 }, 
+        { 13, 11 }, 
+        { 14, 12 }, 
+        { 14, 13 }, 
+        { 16, 14 }, 
+        { 18, 15 }, 
+        { 19, 16 }, 
+        { 24, 21 }, 
+        { 25, 22 }, 
+        { 26, 24 }, 
+        { 27, 25 }, 
+        { 28, 26 }, 
+        { 29, 26 }, 
+        { 30, 27 }, 
+        { 79, 72 }, 
+        { 218, 200 }, 
+    }
+CDL_ARRAY_END(SHeightRequest, latinLFHeightRequestArray);
 
 CDL_ARRAY_START( SHeightRequest, agfaDigitalHeightRequestArray)
     {
@@ -580,7 +608,9 @@
         { EChineseLangsTaiwanHKHiResLF, LIT_AS_DESC_PTR(KS60TCHKHRSANSRLF) },
         { EJapaneseLFLangs, LIT_AS_DESC_PTR(KS60JAPSANSRLF) },
         { EKoreanLFLangs, LIT_AS_DESC_PTR(KS60KORSANSRLF) },
-        //end
+        { EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCHRSANSRLF) },
+        { EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSRLF) },
+        //end        
         { EAnyLangs, LIT_AS_DESC_PTR(KS60Sans) } // Ultimate fallback
     }
 CDL_ARRAY_END(SAknLanguagesAndTypefaceTableLine, languagesAndTypefaceTable);
@@ -764,6 +794,38 @@
     { EAknFontCategoryTitle,        EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase,    EKoreanLFLangs, LIT_AS_DESC_PTR(KS60KORSANSTTLSMBLDLF), LIT_AS_DESC_PTR(KS60Group), &koreanVectorFontBaselineArray, &koreanLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
     { EAknFontCategoryAny,          8, 17,      EAny, EAny, EAny, ENotBold, ENotAntialiase, EKoreanLFLangs, LIT_AS_DESC_PTR(KS60Korean), LIT_AS_DESC_PTR(KS60Group), &koreanVectorFontBaselineArray, &koreanLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
     { EAknFontCategoryAny,          EAny, EAny, EAny, EAny, EAny, ENotBold, EAntialiase,    EKoreanLFLangs, LIT_AS_DESC_PTR(KS60Korean), LIT_AS_DESC_PTR(KS60Group), &koreanVectorFontBaselineArray, &koreanLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+//western SC link
+    //stroke font
+    { EAknFontCategorySecondary,    10,   15,   EStrokeWeightNormal, 0,    EAny, ENotBold, ENotAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategorySecondary,    EAny, EAny, EStrokeWeightNormal, EAny, EAny, ENotBold, EAntialiase,    EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategorySecondary,    10,   15,   EStrokeWeightBold,   0,    EAny, ENotBold,    ENotAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategorySecondary,    EAny, EAny, EStrokeWeightBold,   EAny, EAny, ENotBold,    EAntialiase,    EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryPrimarySmall, 10,   15,   EAny,                0,    EAny, ENotBold,    ENotAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryPrimarySmall, EAny, EAny, EAny,                EAny, EAny, ENotBold,    EAntialiase,    EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryPrimary,      10,   15,   EAny,                0,    EAny, ENotBold,    ENotAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryPrimary,      EAny, EAny, EAny,                EAny, EAny, ENotBold,    EAntialiase,    EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryTitle,        10,   17,   EAny,                0,    EAny, ENotBold, ENotAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSTTLSMBLDLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryTitle,        EAny, EAny, EAny,                EAny, EAny, ENotBold, EAntialiase,  EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSTTLSMBLDLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryAny,          10,   15,   EStrokeWeightNormal, 0,    EAny, ENotBold, ENotAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryAny,          EAny, EAny, EStrokeWeightNormal, EAny, EAny, ENotBold, EAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryAny,          10,   15,   EStrokeWeightBold,   0,    EAny, ENotBold,    ENotAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryAny,          EAny, EAny, EStrokeWeightBold,   EAny, EAny, ENotBold,    EAntialiase, EElafLFLoReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+
+    //hi-res fonts
+    { EAknFontCategorySecondary,    10,   15,   EStrokeWeightNormal, 0,    EAny, ENotBold, ENotAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategorySecondary,    EAny, EAny, EStrokeWeightNormal, EAny, EAny, ENotBold, EAntialiase,    EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategorySecondary,    10,   15,   EStrokeWeightBold,   0,    EAny, ENotBold,    ENotAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategorySecondary,    EAny, EAny, EStrokeWeightBold,   EAny, EAny, ENotBold,    EAntialiase,    EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryPrimarySmall, 10,   15,   EAny,                0,    EAny, ENotBold,    ENotAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryPrimarySmall, EAny, EAny, EAny,                EAny, EAny, ENotBold,    EAntialiase,    EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryPrimary,      10,   15,   EAny,                0,    EAny, ENotBold,    ENotAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryPrimary,      EAny, EAny, EAny,                EAny, EAny, ENotBold,    EAntialiase,    EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryTitle,        10,   17,   EAny,                0,    EAny, ENotBold, ENotAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSTTLSMBLDLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryTitle,        EAny, EAny, EAny,                EAny, EAny, ENotBold, EAntialiase,  EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSTTLSMBLDLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryAny,          10,   15,   EStrokeWeightNormal, 0,    EAny, ENotBold, ENotAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryAny,          EAny, EAny, EStrokeWeightNormal, EAny, EAny, ENotBold, EAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSRLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryAny,          10,   15,   EStrokeWeightBold,   0,    EAny, ENotBold,    ENotAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
+    { EAknFontCategoryAny,          EAny, EAny, EStrokeWeightBold,   EAny, EAny, ENotBold,    EAntialiase, EElafLFHiReLangs, LIT_AS_DESC_PTR(KS60SCSANSSBLF), LIT_AS_DESC_PTR(KS60Group), NULL, &latinLFHeightRequestArray, LIT_AS_DESC_PTR(KWesternFontMaxExtentText) },
 //end
     };
 // ============================ GLOBAL FUNCTIONS ========================================
@@ -925,7 +987,18 @@
         }
     else
         {
-        requiredLangs |= EElafLangs;    
+        if(fLinkedFonts && fHiResFonts)
+            {
+            requiredLangs |= EElafLFHiReLangs;
+            }
+        else if(fLinkedFonts)
+            {
+            requiredLangs |= EElafLFLoReLangs;
+            }
+        else
+            {
+            requiredLangs |= EElafLangs;
+            }
         }
 
     return requiredLangs;
@@ -2236,6 +2309,10 @@
     _LIT(KJAPStop, "[JAP_LINK_STOP]");
     _LIT(KKORStart, "[KOR_LINK_START]");
     _LIT(KKORStop, "[KOR_LINK_STOP]");
+    _LIT(KWESTLINKLRStart, "[WESTERN_LINKLR_START]");
+    _LIT(KWESTLINKLRStop, "[WESTERN_LINKLR_STOP]");
+    _LIT(KWESTLINKHRStart, "[WESTERN_LINKHR_START]");
+    _LIT(KWESTLINKHRStop, "[WESTERN_LINKHR_STOP]");    
 
     TInt ret = KErrNone;
     RPointerArray<SLinkedFontDetails> fontfiles;
@@ -2309,7 +2386,23 @@
             tfile.Seek(ESeekStart);
             ret = DoPopulateAndCreateLinkFontsL(tfile, startTok, stopTok);
             }			
-        
+        if((!fChinese) && (!fKorean) && (!fJapanese) )//western linked fonts
+            {
+            if(fHiResFonts)
+                {
+                startTok.Copy(KWESTLINKHRStart);
+                stopTok.Copy(KWESTLINKHRStop);
+                tfile.Seek(ESeekStart);
+                ret = DoPopulateAndCreateLinkFontsL(tfile, startTok, stopTok);
+                }
+            else
+                {
+                startTok.Copy(KWESTLINKLRStart);
+                stopTok.Copy(KWESTLINKLRStop);
+                tfile.Seek(ESeekStart);
+                ret = DoPopulateAndCreateLinkFontsL(tfile, startTok, stopTok);                            
+                }
+            }        
         }
         
 
@@ -2364,6 +2457,8 @@
             ref +=KAknFontStylesSupported;
         if(fKorean)
             ref +=KAknFontStylesSupported;
+        if((!fChinese) && (!fKorean) && (!fJapanese))
+            ref +=KAknFontStylesSupported;//western linked fonts
         }
     for (TInt i = 0; i < noOfTypefaces; i++)
         {
@@ -2431,6 +2526,25 @@
                     }
 
                 }
+          if (!fChinese && !fJapanese && !fKorean && fHiResFonts)
+              {
+            if (typefaceInfo.iTypeface.iName.Compare(KS60SCHRSANSRLF)==0||
+                typefaceInfo.iTypeface.iName.Compare(KS60SCHRSANSSBLF)==0||
+                typefaceInfo.iTypeface.iName.Compare(KS60SCHRSANSTTLSMBLDLF)==0)
+                  {
+                  files++;
+                  }
+
+              }
+          else if (!fChinese && !fJapanese && !fKorean)
+              {
+            if (typefaceInfo.iTypeface.iName.Compare(KS60SCSANSRLF)==0||
+                typefaceInfo.iTypeface.iName.Compare(KS60SCSANSSBLF)==0||
+                typefaceInfo.iTypeface.iName.Compare(KS60SCSANSTTLSMBLDLF)==0)
+                  {
+                  files++;
+                 }
+              }                          
             }
         }
     if (files && (ref == files) )
Binary file fontsupport/fontprovider/data/link.ini has changed
--- a/fontsupport/fontutils/group/typefaces_s60_Japanese.xml	Wed Jun 30 12:29:41 2010 +0100
+++ b/fontsupport/fontutils/group/typefaces_s60_Japanese.xml	Tue Jul 13 16:36:34 2010 +0100
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <typeface_information >
     <typeface_set>
-        <typeface_mapping role="Primary" family="S60JAPSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60JAPSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60JAPSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60JAPSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60JAPSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60JAPSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
 </typeface_information>
\ No newline at end of file
--- a/fontsupport/fontutils/group/typefaces_s60_Korean.xml	Wed Jun 30 12:29:41 2010 +0100
+++ b/fontsupport/fontutils/group/typefaces_s60_Korean.xml	Tue Jul 13 16:36:34 2010 +0100
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <typeface_information >
     <typeface_set>
-        <typeface_mapping role="Primary" family="S60KORSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60KORSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60KORSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60KORSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60KORSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60KORSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
 </typeface_information>
\ No newline at end of file
--- a/fontsupport/fontutils/group/typefaces_s60_Simplified_Chinese.xml	Wed Jun 30 12:29:41 2010 +0100
+++ b/fontsupport/fontutils/group/typefaces_s60_Simplified_Chinese.xml	Tue Jul 13 16:36:34 2010 +0100
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <typeface_information >
     <typeface_set>
-        <typeface_mapping role="Primary" family="S60SCHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60SCHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60SCHRSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60SCHRSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60SCHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60SCHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
 </typeface_information>
\ No newline at end of file
--- a/fontsupport/fontutils/group/typefaces_s60_Simplified_Traditional.xml	Wed Jun 30 12:29:41 2010 +0100
+++ b/fontsupport/fontutils/group/typefaces_s60_Simplified_Traditional.xml	Tue Jul 13 16:36:34 2010 +0100
@@ -1,52 +1,52 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <typeface_information>
     <typeface_set language="zh" country="TW">
-        <typeface_mapping role="Primary" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60TCHKHRSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60TCHKHRSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
     <typeface_set language="zh" country="HK">
-        <typeface_mapping role="Primary" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60TCHKHRSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60TCHKHRSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
     <typeface_set language="zh" country="CN">
-        <typeface_mapping role="Primary" family="S60SCHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60SCHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60SCHRSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60SCHRSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60SCHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60SCHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
     <typeface_set language="en" country="CN">
-        <typeface_mapping role="Primary" family="S60SCHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60SCHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60SCHRSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60SCHRSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60SCHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60SCHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
     <typeface_set language="en" country="HK">
-        <typeface_mapping role="Primary" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60TCHKHRSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60TCHKHRSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
     <typeface_set language="en" country="TW">
-        <typeface_mapping role="Primary" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60TCHKHRSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60TCHKHRSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
     <typeface_set>
-        <typeface_mapping role="Primary" family="S60SCHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60SCHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60SCHRSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60SCHRSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60SCHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60SCHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
 </typeface_information>
\ No newline at end of file
--- a/fontsupport/fontutils/group/typefaces_s60_Traditional_Chinese.xml	Wed Jun 30 12:29:41 2010 +0100
+++ b/fontsupport/fontutils/group/typefaces_s60_Traditional_Chinese.xml	Tue Jul 13 16:36:34 2010 +0100
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <typeface_information >
     <typeface_set>
-        <typeface_mapping role="Primary" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="Primary" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Secondary" family="S60TCHKHRSANSRLF"></typeface_mapping>
         <typeface_mapping role="Title" family="S60TCHKHRSANSTTLSMBLDLF"></typeface_mapping>
-        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSRLF" weight="bold"></typeface_mapping>
+        <typeface_mapping role="PrimarySmall" family="S60TCHKHRSANSSBLF" weight="bold"></typeface_mapping>
         <typeface_mapping role="Digital" family="Series 60 ZDigi"></typeface_mapping>
     </typeface_set>
 </typeface_information>
\ No newline at end of file
--- a/fontsupport/fontutils/rom/fonts_variant.iby	Wed Jun 30 12:29:41 2010 +0100
+++ b/fontsupport/fontutils/rom/fonts_variant.iby	Tue Jul 13 16:36:34 2010 +0100
@@ -23,8 +23,8 @@
  #include <iculayoutengine.iby>
 #endif
 
-// Rasteriser always included
-ECOM_PLUGIN(ityperast.dll, ityperast.RSC)
+// include ityperast.iby
+#include <ityperast.iby>
 
 // Include proper font set based on configuration
 #ifdef __CHINESE
@@ -88,11 +88,32 @@
  data=ABI_DIR\BUILD_DIR\Series60Korean.ttf                                                   resource\Fonts\Series60Korean.ttf
 
 #else  // Must be western
-
+#ifndef FF_LINKED_FONTS_CHINESE
  data=ABI_DIR\BUILD_DIR\s60snr.ttf                                                   resource\Fonts\s60snr.ttf
  data=ABI_DIR\BUILD_DIR\s60ssb.ttf                                                   resource\Fonts\s60ssb.ttf
  data=ABI_DIR\BUILD_DIR\s60tsb.ttf                                                   resource\Fonts\s60tsb.ttf
+#else
+  #ifdef FF_CHINESE_FONTS_HIRES
 
+   // HiRes fonts only used in high resolutions
+   #if defined(__LAYOUT_360_640_TOUCH) || defined(__LAYOUT_640_360_TOUCH) \
+    || defined(__LAYOUT_320_480) || defined(__LAYOUT_320_480_TOUCH) \
+    || defined(__LAYOUT_480_320) || defined(__LAYOUT_480_320_TOUCH) \
+    || defined(__LAYOUT_480_640) || defined(__LAYOUT_480_640_TOUCH) \
+    || defined(__LAYOUT_640_480) || defined(__LAYOUT_640_480_TOUCH) \
+    || defined (FF_LAYOUT_480_640_VGA3) || defined (FF_LAYOUT_640_480_VGA3)
+
+    // Reso OK, include HiRes font
+    data=ABI_DIR\BUILD_DIR\S60SC_C.ttf                                           resource\Fonts\S60SC_C.ttf
+   #else
+    // Invalid configuration: HiRes fonts enabled in low or unknown resolution device
+    #error "Feature configuration error: Chinese HiRes fonts not supported in this resolution!"
+   #endif
+
+  #else  // Not FF_CHINESE_FONTS_HIRES - use regular stroke
+    data=ABI_DIR\BUILD_DIR\S60SC.ccc                                            resource\Fonts\S60SC.ccc
+  #endif
+#endif
 #endif //__CHINESE
 
  #ifdef FF_LINKED_FONTS_CHINESE
@@ -133,7 +154,7 @@
 
 #else  // Must be western
 
-data=ABI_DIR\BUILD_DIR\typefaces_s60_English.xml                    			resource\Fonts\typefaces.xml   
+data=ABI_DIR\BUILD_DIR\typefaces_s60_Simplified_Chinese.xml   				resource\Fonts\typefaces.xml           
 
 #endif //__CHINESE
 
--- a/locales/loce32/Coltab/group/Coltab.mmp	Wed Jun 30 12:29:41 2010 +0100
+++ b/locales/loce32/Coltab/group/Coltab.mmp	Tue Jul 13 16:36:34 2010 +0100
@@ -20,4 +20,4 @@
 CAPABILITY      CAP_APPLICATION
 SOURCEPATH      ../src
 SOURCE          coltab.cpp
-//SYSTEMINCLUDE /epoc32/include
+
--- a/locales/loce32/bld.inf	Wed Jun 30 12:29:41 2010 +0100
+++ b/locales/loce32/bld.inf	Tue Jul 13 16:36:34 2010 +0100
@@ -21,8 +21,8 @@
 
 PRJ_EXPORTS
 
-// IBY-files
-rom/elocl.iby LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(elocl.iby)
+// languages.confml export
+rom/languages.confml    /epoc32/rom/config/global/confml/languages.confml
 
 PRJ_MMPFILES    // List of MMP files 
 
--- a/locales/loce32/region/src/region_gb.cpp	Wed Jun 30 12:29:41 2010 +0100
+++ b/locales/loce32/region/src/region_gb.cpp	Tue Jul 13 16:36:34 2010 +0100
@@ -28,11 +28,11 @@
 const TDateFormat RegionAspect::DateFormat = EDateEuropean;
 const TTimeFormat RegionAspect::TimeFormat = ETime12;
 const TLocalePos RegionAspect::CurrencySymbolPosition = ELocaleBefore;
-const TBool RegionAspect::CurrencySpaceBetween = ETrue;
+const TBool RegionAspect::CurrencySpaceBetween = EFalse;
 const TInt RegionAspect::CurrencyDecimalPlaces = 2; 
 const TLocale::TNegativeCurrencyFormat RegionAspect::NegativeCurrencyFormat=TLocale::TNegativeCurrencyFormat(TLocale::ELeadingMinusSign); // replacing CurrencyNegativeInBrackets
 const TBool RegionAspect::CurrencyTriadsAllowed = ETrue;
-const TText * const RegionAspect::ThousandsSeparator = _S(" ");
+const TText * const RegionAspect::ThousandsSeparator = _S(",");
 const TText * const RegionAspect::DecimalSeparator = _S(".");
 const TText * const RegionAspect::DateSeparator[KMaxDateSeparators] = {_S(""),_S("/"),_S("/"),_S("")};
 const TText * const RegionAspect::TimeSeparator[KMaxTimeSeparators] = {_S(""),_S(":"),_S(":"),_S("")};
--- a/locales/loce32/region/src/region_sk.cpp	Wed Jun 30 12:29:41 2010 +0100
+++ b/locales/loce32/region/src/region_sk.cpp	Tue Jul 13 16:36:34 2010 +0100
@@ -35,7 +35,7 @@
 const TText * const RegionAspect::ThousandsSeparator = _S(" ");
 const TText * const RegionAspect::DecimalSeparator = _S(",");
 const TText * const RegionAspect::DateSeparator[KMaxDateSeparators] = {_S(""),_S(". "),_S(". "),_S("")};
-const TText * const RegionAspect::TimeSeparator[KMaxTimeSeparators] = {_S(""),_S("."),_S("."),_S("")}; 
+const TText * const RegionAspect::TimeSeparator[KMaxTimeSeparators] = {_S(""),_S(":"),_S(":"),_S("")}; 
 const TLocalePos RegionAspect::AmPmSymbolPosition = ELocaleAfter;
 const TBool RegionAspect::AmPmSpaceBetween = ETrue;
 const TDaylightSavingZone RegionAspect::HomeDaylightSavingZone = EDstEuropean;
--- a/locales/loce32/rom/Elocl.iby	Wed Jun 30 12:29:41 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,377 +0,0 @@
-/*
-* Copyright (c) 2003 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:   Defines Series60 localized files
-*
-*/
-
-
-
-#ifndef __ELOCL_IBY__
-#define __ELOCL_IBY__
-
-#ifdef EKA2
-
-#if defined __LOCALES_01_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.001			SHARED_LIB_DIR\elocl_lan.001
-file=ABI_DIR\BUILD_DIR\elocl_reg.826			SHARED_LIB_DIR\elocl_reg.826
-file=ABI_DIR\BUILD_DIR\elocl_col.001			SHARED_LIB_DIR\elocl_col.001
-#endif // __LOCALES_01_IBY__
-
-#if defined __LOCALES_02_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.002			SHARED_LIB_DIR\elocl_lan.002
-file=ABI_DIR\BUILD_DIR\elocl_reg.250			SHARED_LIB_DIR\elocl_reg.250
-file=ABI_DIR\BUILD_DIR\elocl_col.002			SHARED_LIB_DIR\elocl_col.002
-#endif // __LOCALES_02_IBY__
-
-#if defined __LOCALES_03_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.003			SHARED_LIB_DIR\elocl_lan.003
-file=ABI_DIR\BUILD_DIR\elocl_reg.276			SHARED_LIB_DIR\elocl_reg.276
-file=ABI_DIR\BUILD_DIR\elocl_col.003			SHARED_LIB_DIR\elocl_col.003
-#endif // __LOCALES_03_IBY__
-
-#if defined __LOCALES_04_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.004			SHARED_LIB_DIR\elocl_lan.004
-file=ABI_DIR\BUILD_DIR\elocl_reg.724			SHARED_LIB_DIR\elocl_reg.724
-file=ABI_DIR\BUILD_DIR\elocl_col.004			SHARED_LIB_DIR\elocl_col.004
-#endif // __LOCALES_04_IBY__
-
-#if defined __LOCALES_05_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.005			SHARED_LIB_DIR\elocl_lan.005
-file=ABI_DIR\BUILD_DIR\elocl_reg.380			SHARED_LIB_DIR\elocl_reg.380
-file=ABI_DIR\BUILD_DIR\elocl_col.005			SHARED_LIB_DIR\elocl_col.005
-#endif // __LOCALES_05_IBY__
-
-#if defined __LOCALES_06_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.006			SHARED_LIB_DIR\elocl_lan.006
-file=ABI_DIR\BUILD_DIR\elocl_reg.752			SHARED_LIB_DIR\elocl_reg.752
-file=ABI_DIR\BUILD_DIR\elocl_col.006			SHARED_LIB_DIR\elocl_col.006
-#endif // __LOCALES_06_IBY__
-
-#if defined __LOCALES_07_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.007			SHARED_LIB_DIR\elocl_lan.007
-file=ABI_DIR\BUILD_DIR\elocl_reg.208			SHARED_LIB_DIR\elocl_reg.208
-file=ABI_DIR\BUILD_DIR\elocl_col.007			SHARED_LIB_DIR\elocl_col.007
-#endif // __LOCALES_07_IBY__
-
-#if defined __LOCALES_08_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.008			SHARED_LIB_DIR\elocl_lan.008
-file=ABI_DIR\BUILD_DIR\elocl_reg.578			SHARED_LIB_DIR\elocl_reg.578
-file=ABI_DIR\BUILD_DIR\elocl_col.008			SHARED_LIB_DIR\elocl_col.008
-#endif // __LOCALES_08_IBY__
-
-#if defined __LOCALES_09_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.009			SHARED_LIB_DIR\elocl_lan.009
-file=ABI_DIR\BUILD_DIR\elocl_reg.246			SHARED_LIB_DIR\elocl_reg.246
-file=ABI_DIR\BUILD_DIR\elocl_col.009			SHARED_LIB_DIR\elocl_col.009
-#endif // __LOCALES_09_IBY__
-
-#if defined __LOCALES_10_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.010			SHARED_LIB_DIR\elocl_lan.010
-file=ABI_DIR\BUILD_DIR\elocl_reg.840			SHARED_LIB_DIR\elocl_reg.840
-file=ABI_DIR\BUILD_DIR\elocl_col.010			SHARED_LIB_DIR\elocl_col.010
-#endif // __LOCALES_10_IBY__
-
-#if defined __LOCALES_13_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.013			SHARED_LIB_DIR\elocl_lan.013
-file=ABI_DIR\BUILD_DIR\elocl_reg.620			SHARED_LIB_DIR\elocl_reg.620
-file=ABI_DIR\BUILD_DIR\elocl_col.013			SHARED_LIB_DIR\elocl_col.013
-#endif // __LOCALES_13_IBY__
-
-#if defined __LOCALES_14_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.014			SHARED_LIB_DIR\elocl_lan.014
-file=ABI_DIR\BUILD_DIR\elocl_reg.792			SHARED_LIB_DIR\elocl_reg.792
-file=ABI_DIR\BUILD_DIR\elocl_col.014			SHARED_LIB_DIR\elocl_col.014
-#endif // __LOCALES_14_IBY__
-
-#if defined __LOCALES_15_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.015			SHARED_LIB_DIR\elocl_lan.015
-file=ABI_DIR\BUILD_DIR\elocl_reg.352			SHARED_LIB_DIR\elocl_reg.352
-file=ABI_DIR\BUILD_DIR\elocl_col.015			SHARED_LIB_DIR\elocl_col.015
-#endif // __LOCALES_15_IBY__
-
-#if defined __LOCALES_16_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.016			SHARED_LIB_DIR\elocl_lan.016
-file=ABI_DIR\BUILD_DIR\elocl_reg.643    		SHARED_LIB_DIR\elocl_reg.643
-file=ABI_DIR\BUILD_DIR\elocl_col.016			SHARED_LIB_DIR\elocl_col.016
-#endif // __LOCALES_16_IBY__
-
-#if defined __LOCALES_17_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.017			SHARED_LIB_DIR\elocl_lan.017
-file=ABI_DIR\BUILD_DIR\elocl_reg.348			SHARED_LIB_DIR\elocl_reg.348
-file=ABI_DIR\BUILD_DIR\elocl_col.017			SHARED_LIB_DIR\elocl_col.017
-#endif // __LOCALES_17_IBY__
-
-#if defined __LOCALES_18_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.018			SHARED_LIB_DIR\elocl_lan.018
-file=ABI_DIR\BUILD_DIR\elocl_reg.528			SHARED_LIB_DIR\elocl_reg.528
-file=ABI_DIR\BUILD_DIR\elocl_col.018			SHARED_LIB_DIR\elocl_col.018
-#endif // __LOCALES_18_IBY__
-
-#if defined __LOCALES_25_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.025			SHARED_LIB_DIR\elocl_lan.025
-file=ABI_DIR\BUILD_DIR\elocl_reg.203			SHARED_LIB_DIR\elocl_reg.203
-file=ABI_DIR\BUILD_DIR\elocl_col.025			SHARED_LIB_DIR\elocl_col.025
-#endif // __LOCALES_25_IBY__
-
-#if defined __LOCALES_26_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.026			SHARED_LIB_DIR\elocl_lan.026
-file=ABI_DIR\BUILD_DIR\elocl_reg.703			SHARED_LIB_DIR\elocl_reg.703
-file=ABI_DIR\BUILD_DIR\elocl_col.026			SHARED_LIB_DIR\elocl_col.026 
-#endif // __LOCALES_26_IBY__
-
-#if defined __LOCALES_27_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.027			SHARED_LIB_DIR\elocl_lan.027
-file=ABI_DIR\BUILD_DIR\elocl_reg.616			SHARED_LIB_DIR\elocl_reg.616
-file=ABI_DIR\BUILD_DIR\elocl_col.027			SHARED_LIB_DIR\elocl_col.027 
-#endif // __LOCALES_27_IBY__
-
-#if defined __LOCALES_28_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.028			SHARED_LIB_DIR\elocl_lan.028
-file=ABI_DIR\BUILD_DIR\elocl_reg.705			SHARED_LIB_DIR\elocl_reg.705
-file=ABI_DIR\BUILD_DIR\elocl_col.028			SHARED_LIB_DIR\elocl_col.028 
-#endif // __LOCALES_28_IBY__
-
-#if defined __LOCALES_29_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.029			SHARED_LIB_DIR\elocl_lan.029
-file=ABI_DIR\BUILD_DIR\elocl_reg.158			SHARED_LIB_DIR\elocl_reg.158
-file=ABI_DIR\BUILD_DIR\elocl_col.029			SHARED_LIB_DIR\elocl_col.029 
-#endif // __LOCALES_29_IBY__
-
-#if defined __LOCALES_30_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.030			SHARED_LIB_DIR\elocl_lan.030
-file=ABI_DIR\BUILD_DIR\elocl_reg.344			SHARED_LIB_DIR\elocl_reg.344
-file=ABI_DIR\BUILD_DIR\elocl_col.030			SHARED_LIB_DIR\elocl_col.030 
-#endif // __LOCALES_30_IBY__
-
-#if defined __LOCALES_31_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.031			SHARED_LIB_DIR\elocl_lan.031
-file=ABI_DIR\BUILD_DIR\elocl_reg.156            SHARED_LIB_DIR\elocl_reg.156
-file=ABI_DIR\BUILD_DIR\elocl_col.031			SHARED_LIB_DIR\elocl_col.031 
-#endif // __LOCALES_31_IBY__
-
-#if defined __LOCALES_32_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.032			SHARED_LIB_DIR\elocl_lan.032
-file=ABI_DIR\BUILD_DIR\elocl_reg.392			SHARED_LIB_DIR\elocl_reg.392
-file=ABI_DIR\BUILD_DIR\elocl_col.032			SHARED_LIB_DIR\elocl_col.032 
-#endif // __LOCALES_32_IBY__
-
-#if defined __LOCALES_33_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.033			SHARED_LIB_DIR\elocl_lan.033
-file=ABI_DIR\BUILD_DIR\elocl_reg.764			SHARED_LIB_DIR\elocl_reg.764
-file=ABI_DIR\BUILD_DIR\elocl_col.033			SHARED_LIB_DIR\elocl_col.033 
-#endif // __LOCALES_33_IBY__
-
-#if defined __LOCALES_37_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.037			SHARED_LIB_DIR\elocl_lan.037
-file=ABI_DIR\BUILD_DIR\elocl_reg.682			SHARED_LIB_DIR\elocl_reg.682
-file=ABI_DIR\BUILD_DIR\elocl_col.037			SHARED_LIB_DIR\elocl_col.037 
-#endif // __LOCALES_37_IBY__
-
-#if defined __LOCALES_39_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.039			SHARED_LIB_DIR\elocl_lan.039
-file=ABI_DIR\BUILD_DIR\elocl_reg.608			SHARED_LIB_DIR\elocl_reg.608
-file=ABI_DIR\BUILD_DIR\elocl_col.039			SHARED_LIB_DIR\elocl_col.039 
-#endif // __LOCALES_39_IBY__
-
-#if defined __LOCALES_42_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.042			SHARED_LIB_DIR\elocl_lan.042
-file=ABI_DIR\BUILD_DIR\elocl_reg.100			SHARED_LIB_DIR\elocl_reg.100
-file=ABI_DIR\BUILD_DIR\elocl_col.042			SHARED_LIB_DIR\elocl_col.042 
-#endif // __LOCALES_42_IBY__
-
-#if defined __LOCALES_44_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.044			SHARED_LIB_DIR\elocl_lan.044
-file=ABI_DIR\BUILD_DIR\elocl_reg.724			SHARED_LIB_DIR\elocl_reg.724
-file=ABI_DIR\BUILD_DIR\elocl_col.044			SHARED_LIB_DIR\elocl_col.044 
-#endif // __LOCALES_44_IBY__
-
-#if defined __LOCALES_45_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.045			SHARED_LIB_DIR\elocl_lan.045
-file=ABI_DIR\BUILD_DIR\elocl_reg.191			SHARED_LIB_DIR\elocl_reg.191
-file=ABI_DIR\BUILD_DIR\elocl_col.045			SHARED_LIB_DIR\elocl_col.045 
-#endif // __LOCALES_45_IBY__
-
-#if defined __LOCALES_49_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.049			SHARED_LIB_DIR\elocl_lan.049
-file=ABI_DIR\BUILD_DIR\elocl_reg.233			SHARED_LIB_DIR\elocl_reg.233
-file=ABI_DIR\BUILD_DIR\elocl_col.049			SHARED_LIB_DIR\elocl_col.049 
-#endif // __LOCALES_49_IBY__
-
-#if defined __LOCALES_50_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.050			SHARED_LIB_DIR\elocl_lan.050
-file=ABI_DIR\BUILD_DIR\elocl_reg.364			SHARED_LIB_DIR\elocl_reg.364
-file=ABI_DIR\BUILD_DIR\elocl_col.050			SHARED_LIB_DIR\elocl_col.050 
-#endif // __LOCALES_50_IBY__
-
-#if defined __LOCALES_51_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.051			SHARED_LIB_DIR\elocl_lan.051
-file=ABI_DIR\BUILD_DIR\elocl_reg.124			SHARED_LIB_DIR\elocl_reg.124
-file=ABI_DIR\BUILD_DIR\elocl_col.051			SHARED_LIB_DIR\elocl_col.051 
-#endif // __LOCALES_51_IBY__
-
-#if defined __LOCALES_54_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.054			SHARED_LIB_DIR\elocl_lan.054
-file=ABI_DIR\BUILD_DIR\elocl_reg.300			SHARED_LIB_DIR\elocl_reg.300
-file=ABI_DIR\BUILD_DIR\elocl_col.054			SHARED_LIB_DIR\elocl_col.054 
-#endif // __LOCALES_54_IBY__
-
-#if defined __LOCALES_57_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.057			SHARED_LIB_DIR\elocl_lan.057
-file=ABI_DIR\BUILD_DIR\elocl_reg.376			SHARED_LIB_DIR\elocl_reg.376
-file=ABI_DIR\BUILD_DIR\elocl_col.057			SHARED_LIB_DIR\elocl_col.057 
-#endif // __LOCALES_57_IBY__
-
-#if defined __LOCALES_58_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.058			SHARED_LIB_DIR\elocl_lan.058
-file=ABI_DIR\BUILD_DIR\elocl_reg.356			SHARED_LIB_DIR\elocl_reg.356
-file=ABI_DIR\BUILD_DIR\elocl_col.058			SHARED_LIB_DIR\elocl_col.058 
-#endif // __LOCALES_58_IBY__
-
-#if defined __LOCALES_59_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.059			SHARED_LIB_DIR\elocl_lan.059
-file=ABI_DIR\BUILD_DIR\elocl_reg.360            SHARED_LIB_DIR\elocl_reg.360
-file=ABI_DIR\BUILD_DIR\elocl_col.059			SHARED_LIB_DIR\elocl_col.059 
-#endif // __LOCALES_59_IBY__
-
-#if defined __LOCALES_65_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.065			SHARED_LIB_DIR\elocl_lan.065
-file=ABI_DIR\BUILD_DIR\elocl_reg.410			SHARED_LIB_DIR\elocl_reg.410
-file=ABI_DIR\BUILD_DIR\elocl_col.065			SHARED_LIB_DIR\elocl_col.065 
-#endif // __LOCALES_65_IBY__
-
-#if defined __LOCALES_67_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.067			SHARED_LIB_DIR\elocl_lan.067
-file=ABI_DIR\BUILD_DIR\elocl_reg.428			SHARED_LIB_DIR\elocl_reg.428
-file=ABI_DIR\BUILD_DIR\elocl_col.067			SHARED_LIB_DIR\elocl_col.067 
-#endif // __LOCALES_67_IBY__
-
-#if defined __LOCALES_68_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.068			SHARED_LIB_DIR\elocl_lan.068
-file=ABI_DIR\BUILD_DIR\elocl_reg.440    		SHARED_LIB_DIR\elocl_reg.440
-file=ABI_DIR\BUILD_DIR\elocl_col.068			SHARED_LIB_DIR\elocl_col.068 
-#endif // __LOCALES_68_IBY__
-
-#if defined __LOCALES_70_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.070			SHARED_LIB_DIR\elocl_lan.070
-file=ABI_DIR\BUILD_DIR\elocl_reg.458			SHARED_LIB_DIR\elocl_reg.458
-file=ABI_DIR\BUILD_DIR\elocl_col.070			SHARED_LIB_DIR\elocl_col.070 
-#endif // __LOCALES_70_IBY__
-
-#if defined __LOCALES_76_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.076			SHARED_LIB_DIR\elocl_lan.076
-file=ABI_DIR\BUILD_DIR\elocl_reg.076			SHARED_LIB_DIR\elocl_reg.076
-file=ABI_DIR\BUILD_DIR\elocl_col.076			SHARED_LIB_DIR\elocl_col.076 
-#endif // __LOCALES_76_IBY__
-
-#if defined __LOCALES_78_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.078			SHARED_LIB_DIR\elocl_lan.078
-file=ABI_DIR\BUILD_DIR\elocl_reg.642			SHARED_LIB_DIR\elocl_reg.642
-file=ABI_DIR\BUILD_DIR\elocl_col.078			SHARED_LIB_DIR\elocl_col.078 
-#endif // __LOCALES_78_IBY__
-
-#if defined __LOCALES_79_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.079			SHARED_LIB_DIR\elocl_lan.079
-file=ABI_DIR\BUILD_DIR\elocl_reg.891			SHARED_LIB_DIR\elocl_reg.891
-file=ABI_DIR\BUILD_DIR\elocl_col.079			SHARED_LIB_DIR\elocl_col.079 
-#endif // __LOCALES_79_IBY__
-
-#if defined __LOCALES_83_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.083			SHARED_LIB_DIR\elocl_lan.083
-file=ABI_DIR\BUILD_DIR\elocl_reg.484    		SHARED_LIB_DIR\elocl_reg.484
-file=ABI_DIR\BUILD_DIR\elocl_col.083			SHARED_LIB_DIR\elocl_col.083 
-#endif // __LOCALES_83_IBY__
-
-#if defined __LOCALES_93_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.093			SHARED_LIB_DIR\elocl_lan.093
-file=ABI_DIR\BUILD_DIR\elocl_reg.804			SHARED_LIB_DIR\elocl_reg.804
-file=ABI_DIR\BUILD_DIR\elocl_col.093			SHARED_LIB_DIR\elocl_col.093 
-#endif // __LOCALES_93_IBY__
-
-#if defined __LOCALES_94_IBY__  
-file=ABI_DIR\BUILD_DIR\elocl_lan.094			SHARED_LIB_DIR\elocl_lan.094
-file=ABI_DIR\BUILD_DIR\elocl_reg.526			SHARED_LIB_DIR\elocl_reg.526
-file=ABI_DIR\BUILD_DIR\elocl_col.094			SHARED_LIB_DIR\elocl_col.094 
-#endif // __LOCALES_94_IBY__
-
-#if defined __LOCALES_96_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.096			SHARED_LIB_DIR\elocl_lan.096
-file=ABI_DIR\BUILD_DIR\elocl_reg.704			SHARED_LIB_DIR\elocl_reg.704
-file=ABI_DIR\BUILD_DIR\elocl_col.096			SHARED_LIB_DIR\elocl_col.096 
-#endif // __LOCALES_96_IBY__
-
-#if defined __LOCALES_129_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.129			SHARED_LIB_DIR\elocl_lan.129
-file=ABI_DIR\BUILD_DIR\elocl_reg.826			SHARED_LIB_DIR\elocl_reg.826
-file=ABI_DIR\BUILD_DIR\elocl_col.129			SHARED_LIB_DIR\elocl_col.129 
-#endif // __LOCALES_129_IBY__
-
-#if defined __LOCALES_157_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.157			SHARED_LIB_DIR\elocl_lan.157
-file=ABI_DIR\BUILD_DIR\elocl_reg.158			SHARED_LIB_DIR\elocl_reg.158
-file=ABI_DIR\BUILD_DIR\elocl_col.157			SHARED_LIB_DIR\elocl_col.157 
-#endif // __LOCALES_157_IBY__
-
-#if defined __LOCALES_158_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.158			SHARED_LIB_DIR\elocl_lan.158
-file=ABI_DIR\BUILD_DIR\elocl_reg.344			SHARED_LIB_DIR\elocl_reg.344
-file=ABI_DIR\BUILD_DIR\elocl_col.158			SHARED_LIB_DIR\elocl_col.158 
-#endif // __LOCALES_158_IBY__
-
-#if defined __LOCALES_159_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.159			SHARED_LIB_DIR\elocl_lan.159
-file=ABI_DIR\BUILD_DIR\elocl_reg.156			SHARED_LIB_DIR\elocl_reg.156
-file=ABI_DIR\BUILD_DIR\elocl_col.159			SHARED_LIB_DIR\elocl_col.159 
-#endif // __LOCALES_159_IBY__
-
-#if defined __LOCALES_160_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.160			SHARED_LIB_DIR\elocl_lan.160
-file=ABI_DIR\BUILD_DIR\elocl_reg.392			SHARED_LIB_DIR\elocl_reg.392
-file=ABI_DIR\BUILD_DIR\elocl_col.160			SHARED_LIB_DIR\elocl_col.160 
-#endif // __LOCALES_160_IBY__
-
-#if defined __LOCALES_161_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.161            SHARED_LIB_DIR\elocl_lan.161
-file=ABI_DIR\BUILD_DIR\elocl_reg.764			SHARED_LIB_DIR\elocl_reg.764
-file=ABI_DIR\BUILD_DIR\elocl_col.161			SHARED_LIB_DIR\elocl_col.161 
-#endif // __LOCALES_161_IBY__
-
-#if defined __LOCALES_326_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.326			SHARED_LIB_DIR\elocl_lan.326
-file=ABI_DIR\BUILD_DIR\elocl_reg.458			SHARED_LIB_DIR\elocl_reg.458
-file=ABI_DIR\BUILD_DIR\elocl_col.326			SHARED_LIB_DIR\elocl_col.326 
-#endif // __LOCALES_326_IBY__
-
-#if defined __LOCALES_327_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.327			SHARED_LIB_DIR\elocl_lan.327
-file=ABI_DIR\BUILD_DIR\elocl_reg.360			SHARED_LIB_DIR\elocl_reg.360
-file=ABI_DIR\BUILD_DIR\elocl_col.327			SHARED_LIB_DIR\elocl_col.327 
-#endif // __LOCALES_327_IBY__
-
-#if defined __LOCALES_401_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.401			SHARED_LIB_DIR\elocl_lan.401
-file=ABI_DIR\BUILD_DIR\elocl_reg.724			SHARED_LIB_DIR\elocl_reg.724
-file=ABI_DIR\BUILD_DIR\elocl_col.401			SHARED_LIB_DIR\elocl_col.401 
-#endif // __LOCALES_401_IBY__
-
-#if defined __LOCALES_402_IBY__
-file=ABI_DIR\BUILD_DIR\elocl_lan.402			SHARED_LIB_DIR\elocl_lan.402
-file=ABI_DIR\BUILD_DIR\elocl_reg.727    		SHARED_LIB_DIR\elocl_reg.724
-file=ABI_DIR\BUILD_DIR\elocl_col.402			SHARED_LIB_DIR\elocl_col.420 
-#endif // __LOCALES_402_IBY__
-
-#else
-file=\epoc32\release\armi\DEBUG_DIR\Elocl.dll   System\libs\Elocl.loc
-#endif	//EKA2
-    
-#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/locales/loce32/rom/languages.confml	Tue Jul 13 16:36:34 2010 +0100
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration xmlns="http://www.s60.com/xml/confml/2" xmlns:xi="http://www.w3.org/2001/XInclude" name="languages">
+  <feature ref="SystemLanguages" name="System Languages">
+    <setting ref="Language" mapKey="LanguageName" mapValue="LanguageName" name="Language" type="sequence">
+      <setting ref="LanguageName" name="Language Name" type="string"/>
+      <setting ref="LanguageCode" name="Language Code" type="int"/>
+    </setting>
+    <setting ref="Region" mapKey="RegionName" mapValue="RegionName" name="Region" type="sequence">
+      <setting ref="RegionName" name="Region Name" type="string"/>
+      <setting ref="RegionCode" name="Region Code" type="int"/>
+    </setting>
+    <setting ref="Collation" mapKey="CollationName" mapValue="CollationName" name="Collation" type="sequence">
+      <setting ref="CollationName" name="Collation Name" type="string"/>
+      <setting ref="CollationCode" name="Collation Code" type="int"/>
+    </setting>
+    <setting ref="VariantSelection" name="Variant selection" type="sequence">
+      <desc>When the default language / region is changed in the phone UI it will select a certain 
+      the language, region and collation.</desc>
+      <setting ref="SelectedLanguage" name="Selected Language" type="selection">
+        <desc>The input language/region which is selected by user</desc>
+        <option map="SystemLanguages/Language"/>
+      </setting>
+      <setting ref="Language" name="Language" type="selection">
+        <option map="SystemLanguages/Language"/>
+      </setting>
+      <setting ref="Region" name="Region" type="selection">
+        <option map="SystemLanguages/Region"/>
+      </setting>
+      <setting ref="Collation" name="Collation" type="selection">
+        <option map="SystemLanguages/Collation"/>
+      </setting>
+    </setting>
+  </feature>
+</configuration>
\ No newline at end of file
--- a/skins/AknSkins/sdcsrc/SDCInlOutput.cpp	Wed Jun 30 12:29:41 2010 +0100
+++ b/skins/AknSkins/sdcsrc/SDCInlOutput.cpp	Tue Jul 13 16:36:34 2010 +0100
@@ -291,8 +291,9 @@
     fprintf( file, "\nCAPABILITY CAP_GENERAL_DLL\n" );
 
     fprintf( file, "\nUSERINCLUDE \\s60\\AknSkins\\srvinc\n" );
-    fprintf( file, "SYSTEMINCLUDE \\epoc32\\include \\epoc32\\include\\oem\n" );
-
+    fprintf( file, "#include <platform_paths.hrh>\nMW_LAYER_SYSTEMINCLUDE\n" );
+		fprintf( file, "SYSTEMINCLUDE \\epoc32\\include\\oem\n" );
+		
     fprintf( file, "\nLIBRARY euser.lib\n" );
 
     fprintf( file, "\nSOURCE %s_ContentDLL.cpp\n", aSkinName );
--- a/skins/AknSkins/src/AknsAppSkinInstance.cpp	Wed Jun 30 12:29:41 2010 +0100
+++ b/skins/AknSkins/src/AknsAppSkinInstance.cpp	Tue Jul 13 16:36:34 2010 +0100
@@ -758,7 +758,6 @@
             {
             // Do not create an entry for typed miss, otherwise we might hide
             // a real item
-            delete itemData;
             return NULL;
             }
         }
--- a/skins/AknSkins/srvsrc/AknsSrv.cpp	Wed Jun 30 12:29:41 2010 +0100
+++ b/skins/AknSkins/srvsrc/AknsSrv.cpp	Tue Jul 13 16:36:34 2010 +0100
@@ -100,25 +100,24 @@
 	aStartFailed = EFalse;
 	
     CAknsSrv* server = new CAknsSrv();
-    server->iMergeType = (TAknsSkinSrvMergeType)(
-        EAknsSkinSrvSkin | EAknsSkinSrvIdleWp );
-    server->iBootFinished = EFalse;
-    if ( server )
-        {
-        if ( server->Start( KAknSkinSrvName ) != KErrNone )
-            {
-            AKNS_TRACE_ERROR("CAknsSrv::New START FAILED!");
-
-           	aStartFailed = ETrue;
-            delete server;
-            return NULL;
-            }
-        }
-    else
+    if ( !server )
         {
         AKNS_TRACE_ERROR("CAknsSrv::New SERVER ALLOCATION FAILED!");
         return NULL;
         }
+
+    server->iMergeType = (TAknsSkinSrvMergeType)(
+        EAknsSkinSrvSkin | EAknsSkinSrvIdleWp );
+    server->iBootFinished = EFalse;
+    if (server->Start(KAknSkinSrvName) != KErrNone)
+        {
+        AKNS_TRACE_ERROR("CAknsSrv::New START FAILED!");
+
+        aStartFailed = ETrue;
+        delete server;
+        return NULL;
+        }
+
     server->iBitmapStore = new CAknsSrvBitmapStore;
     if( !server->iBitmapStore )
         {
--- a/skins/AknSkins/srvsrc/AknsSrvChunkMaintainer.cpp	Wed Jun 30 12:29:41 2010 +0100
+++ b/skins/AknSkins/srvsrc/AknsSrvChunkMaintainer.cpp	Tue Jul 13 16:36:34 2010 +0100
@@ -279,7 +279,7 @@
     TAknsSrvEffectQueueDef applyGfxEffectQueue;
     applyGfxEffectQueue.iEffectQueueSize = sizeof(TAknsSrvEffectQueueDef)
         + 2*sizeof(TAknsSrvEffectDef) + 3*sizeof(TAknsSrvEffectParameterDef)
-        + 11*sizeof(TInt32);
+        + 8*sizeof(TInt32);
     applyGfxEffectQueue.iInputLayerIndex =0;
     applyGfxEffectQueue.iInputLayerMode = 2; //RGB
     applyGfxEffectQueue.iOutputLayerIndex = 2;
--- a/skins/AknSkins/srvsrc/tfxconfigparser.cpp	Wed Jun 30 12:29:41 2010 +0100
+++ b/skins/AknSkins/srvsrc/tfxconfigparser.cpp	Tue Jul 13 16:36:34 2010 +0100
@@ -989,7 +989,7 @@
             {
             CTFxTransition* transition = transitionarray->operator[](count);
             CTFxEffect* effect = transition->Effect();
-            if (transition && effect && effect->PathIndex() >=0)
+            if ( effect && effect->PathIndex() >=0 )
                 {
                 err = aTransSrv->RegisterFullscreenKml(transition->ContextId(),
                     transition->Uid(),
@@ -1014,7 +1014,7 @@
             {
             CTFxCtrlTransition* ctrltransition = ctrltransitionarray->operator[](count);
             CTFxEffect* effect = ctrltransition->Effect();
-            if (ctrltransition && effect && effect->PathIndex() >=0)
+            if ( effect && effect->PathIndex() >=0)
                 {
                 if (!ctrltransition->KmlRegistrationStatus())
                     {
--- a/uiconfig/s60config/src/epoc_360x640_nhd4.ini	Wed Jun 30 12:29:41 2010 +0100
+++ b/uiconfig/s60config/src/epoc_360x640_nhd4.ini	Tue Jul 13 16:36:34 2010 +0100
@@ -72,6 +72,9 @@
 KeyMap Home EStdKeyApplication0
 KeyMap LeftAlt 1 EStdKeyDevice0
 KeyMap LeftAlt 2 EStdKeyDevice1
+KeyMap LeftAlt 3 EStdKeyDevice4
+KeyMap LeftAlt 4 EStdKeyDevice5
+KeyMap LeftAlt 5 EStdKeyDeviceF
 
 
 
--- a/uiconfig/s60config/src/epoc_360x640_touch.ini	Wed Jun 30 12:29:41 2010 +0100
+++ b/uiconfig/s60config/src/epoc_360x640_touch.ini	Tue Jul 13 16:36:34 2010 +0100
@@ -72,6 +72,9 @@
 KeyMap Home EStdKeyApplication0
 KeyMap LeftAlt 1 EStdKeyDevice0
 KeyMap LeftAlt 2 EStdKeyDevice1
+KeyMap LeftAlt 3 EStdKeyDevice4
+KeyMap LeftAlt 4 EStdKeyDevice5
+KeyMap LeftAlt 5 EStdKeyDeviceF
 
 
 
--- a/uiconfig/s60config/src/epoc_640x360_nhd4_qwerty.ini	Wed Jun 30 12:29:41 2010 +0100
+++ b/uiconfig/s60config/src/epoc_640x360_nhd4_qwerty.ini	Tue Jul 13 16:36:34 2010 +0100
@@ -127,6 +127,9 @@
 KeyMap Home EStdKeyApplication0
 KeyMap LeftAlt 1 EStdKeyDevice0
 KeyMap LeftAlt 2 EStdKeyDevice1
+KeyMap LeftAlt 3 EStdKeyDevice4
+KeyMap LeftAlt 4 EStdKeyDevice5
+KeyMap LeftAlt 5 EStdKeyDeviceF
 
 
 
--- a/uiconfig/s60config/src/epoc_640x360_touch_qwerty.ini	Wed Jun 30 12:29:41 2010 +0100
+++ b/uiconfig/s60config/src/epoc_640x360_touch_qwerty.ini	Tue Jul 13 16:36:34 2010 +0100
@@ -127,6 +127,9 @@
 KeyMap Home EStdKeyApplication0
 KeyMap LeftAlt 1 EStdKeyDevice0
 KeyMap LeftAlt 2 EStdKeyDevice1
+KeyMap LeftAlt 3 EStdKeyDevice4
+KeyMap LeftAlt 4 EStdKeyDevice5
+KeyMap LeftAlt 5 EStdKeyDeviceF
 
 
 
--- a/uiconfig/s60config/src/epoc_640x480_touch_qwerty.ini	Wed Jun 30 12:29:41 2010 +0100
+++ b/uiconfig/s60config/src/epoc_640x480_touch_qwerty.ini	Tue Jul 13 16:36:34 2010 +0100
@@ -126,6 +126,9 @@
 KeyMap Home EStdKeyApplication0
 KeyMap LeftAlt 1 EStdKeyDevice0
 KeyMap LeftAlt 2 EStdKeyDevice1
+KeyMap LeftAlt 3 EStdKeyDevice4
+KeyMap LeftAlt 4 EStdKeyDevice5
+KeyMap LeftAlt 5 EStdKeyDeviceF
 
 
 
--- a/uigraphics/AknIcon/SvgtFbsRasterizer/group/SvgtFbsRasterizer.mmp	Wed Jun 30 12:29:41 2010 +0100
+++ b/uigraphics/AknIcon/SvgtFbsRasterizer/group/SvgtFbsRasterizer.mmp	Tue Jul 13 16:36:34 2010 +0100
@@ -40,6 +40,7 @@
 SOURCE SvgtFbsRasterizer.cpp
 SOURCE svgtregisteredbitmap.cpp 
 SOURCE svgtgraphicsinterface.cpp
+SOURCE SvgtRasterizerOOMPropertyMonitor.cpp
 
 #ifdef _EGL_SUPPORT_ENABLED_
 SOURCE eglgraphicsinterface.cpp
--- a/uigraphics/AknIcon/SvgtFbsRasterizer/inc/SvgtFbsRasterizer.h	Wed Jun 30 12:29:41 2010 +0100
+++ b/uigraphics/AknIcon/SvgtFbsRasterizer/inc/SvgtFbsRasterizer.h	Tue Jul 13 16:36:34 2010 +0100
@@ -21,6 +21,9 @@
 #include "SvgtRegisteredBitmap.h"
 #include "svgtgraphicsinterface.h"
 #include <graphics/fbsrasterizer.h>
+#include <graphics/fbsrasterizerclearcache.h>
+#include "SvgtRasterizerCacheLimitHandler.h"
+
 #include <e32base.h>
 #include <VG/openvg.h>
 
@@ -36,11 +39,14 @@
 
 TBool operator==(const CFbsRasterizer::TBitmapDesc& aBitmapDesc1, const CFbsRasterizer::TBitmapDesc& aBitmapDesc2);
 
+class CSvgtRasterizerOOMPropertyMonitor;
 
 /** Example implementation of a rasterizer that is used to generate pixel
 data for extended bitmaps of example type KUidExtendedBitmapExample. 
  */
-NONSHARABLE_CLASS (CSvgtFbsRasterizer) : public CFbsRasterizer
+NONSHARABLE_CLASS (CSvgtFbsRasterizer) : public CFbsRasterizer, 
+                                            public MFbsRasterizerClearCache,
+                                            public MSvgtRasterizerCacheLimitHandler
     {
 public:
     IMPORT_C static CFbsRasterizer* New();
@@ -100,6 +106,13 @@
      * Returns cache limit (if) specific to process
      */
     TInt GetCacheLimit(TUid aProcessUID) const;
+
+    //From MFbsRasterizerClearCache
+    virtual void ClearCache();
+    
+    //from MSvgtRasterizerCacheLimitHandler
+    virtual void ChangeCacheLimit( TBool aChangeCacheLimit );
+
 private: //Data members
     /** List of currently registered extended bitmaps, the key is the bitmap id.
      */
@@ -114,6 +127,7 @@
      */
     
     CSvgtGraphicsInterface * iGraphicsInterface;
+    CSvgtRasterizerOOMPropertyMonitor* iMonitor;
          
     TBool iIsRasterizerValidState;
     TBool iMatricesUpdated;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uigraphics/AknIcon/SvgtFbsRasterizer/inc/SvgtRasterizerCacheLimitHandler.h	Tue Jul 13 16:36:34 2010 +0100
@@ -0,0 +1,30 @@
+/*
+* Copyright (c) 2002 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:   MSvgtRasterizerCacheLimitHandler class.
+*
+*/
+
+#if !defined(_ENABLESVGTRASTERIZER_H_)
+#define _ENABLESVGTRASTERIZER_H_
+#include <e32def.h>
+
+const TUint32 KUidEnableSvgtRasterizer = 0x10286586;
+
+class MSvgtRasterizerCacheLimitHandler
+    {
+public:
+    virtual void ChangeCacheLimit( TBool aChangeCacheLimit ) = 0;
+    };
+
+#endif //_ENABLESVGTRASTERIZER_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uigraphics/AknIcon/SvgtFbsRasterizer/inc/SvgtRasterizerOOMPropertyMonitor.h	Tue Jul 13 16:36:34 2010 +0100
@@ -0,0 +1,47 @@
+/*
+* Copyright (c) 2002 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:   CSvgtRasterizerOOMPropertyMonitor class for OOM implementation.
+*
+*/
+#if !defined(_SVGTRASTERIZEROOMPROPERTYMONITOR_H_)
+#define _SVGTRASTERIZEROOMPROPERTYMONITOR_H_
+
+#include <e32base.h>
+#include <e32property.h>
+#include "SvgtRasterizerKeyDefs.hrh"
+class CFbsRasterizer;
+
+class CSvgtRasterizerOOMPropertyMonitor : public CActive
+    {
+public:
+    static CSvgtRasterizerOOMPropertyMonitor* NewL();
+    ~CSvgtRasterizerOOMPropertyMonitor();
+    
+private: //Class methods
+    CSvgtRasterizerOOMPropertyMonitor();
+    void ConstructL();
+    void Queue();
+
+private: //From CActive
+    void RunL();
+    void DoCancel();
+
+private:
+    RProperty iOomWatcher;
+    CFbsRasterizer* iRasterizer;
+    };
+    
+#endif //_SVGTRASTERIZEROOMPROPERTYMONITOR_H_
+
+    
--- a/uigraphics/AknIcon/SvgtFbsRasterizer/src/SvgtFbsRasterizer.cpp	Wed Jun 30 12:29:41 2010 +0100
+++ b/uigraphics/AknIcon/SvgtFbsRasterizer/src/SvgtFbsRasterizer.cpp	Tue Jul 13 16:36:34 2010 +0100
@@ -28,6 +28,8 @@
 #include <bitstd.h>
 #include <bitdev.h>
 
+#include "SvgtRasterizerOOMPropertyMonitor.h"
+
 TBool operator==(const CFbsRasterizer::TBitmapDesc& aBitmapDesc1, 
 				 const CFbsRasterizer::TBitmapDesc& aBitmapDesc2)
 	{
@@ -64,11 +66,10 @@
 
 /** Constructor */
 CSvgtFbsRasterizer::CSvgtFbsRasterizer()
-    :iRegisteredBmps(_FOFF(CSvgtRegisteredBitmap, iLink)), iRecentBmps(_FOFF(CSvgtRegisteredBitmap, iLink))
-	{
-	    RProcess currentProcess;
-	    iCacheLimit = GetCacheLimit(currentProcess.SecureId());
-	    }
+:iRegisteredBmps(_FOFF(CSvgtRegisteredBitmap, iLink)), iRecentBmps(_FOFF(CSvgtRegisteredBitmap, iLink))
+	            {
+
+	            }
 
 CSvgtFbsRasterizer::~CSvgtFbsRasterizer()
     {
@@ -87,6 +88,18 @@
         {
         RestoreMatrices();
         }
+    delete iMonitor;//OOM
+    }
+
+void CSvgtFbsRasterizer::ChangeCacheLimit( TBool aChangeCacheLimit )//OOM
+    {
+    iCacheLimit = KMaxRecentBmpCacheSize;
+
+    if(aChangeCacheLimit)
+        {
+        RProcess currentProcess;
+        iCacheLimit = GetCacheLimit(currentProcess.SecureId());
+        }
     }
 
 /** Register a bitmap with this rasterizer for rendering. In this example the extended 
@@ -206,11 +219,28 @@
 /**  No extension interaces are available, KErrNotSupported for all aInterfaceId passed.
 @see CFbsRasterizer::GetInterface()
  */
-TInt CSvgtFbsRasterizer::GetInterface(TUid /*aInterfaceId*/, TAny*& aInterface)
-	{
-	aInterface = NULL;
-	return KErrExtensionNotSupported;
-	}
+TInt CSvgtFbsRasterizer::GetInterface(TUid aInterfaceId, TAny*& aInterface)
+    {
+    aInterface = NULL;
+    TInt err = KErrNone;
+
+    switch (aInterfaceId.iUid)
+        {
+        case KUidFbsRasterizerClearCache:
+            aInterface = static_cast<MFbsRasterizerClearCache*>(this);
+            break;
+        case KUidEnableSvgtRasterizer:
+            aInterface = static_cast<MSvgtRasterizerCacheLimitHandler*>(this);
+            break;
+        default:
+            err = KErrExtensionNotSupported;                        
+            break;
+        }
+
+    return err;
+
+
+    }
 
 
 /** Gets a bitmap that has been registered with this rasterizer.
@@ -253,6 +283,16 @@
 
 void CSvgtFbsRasterizer::InitializeRasterizer()
     {
+    TBool cacheEnabled=TRUE;
+    RProperty::Get(KSvgtPropertyCategory, ESvgtPropertyBool, cacheEnabled);
+    iCacheLimit = KMaxRecentBmpCacheSize;
+    if(cacheEnabled)
+        {
+        RProcess currentProcess;
+        iCacheLimit = GetCacheLimit(currentProcess.SecureId());
+        }
+    TRAPD(err, iMonitor = CSvgtRasterizerOOMPropertyMonitor::NewL());
+    iIsRasterizerValidState = ( err == KErrNone);
     }
 
 void CSvgtFbsRasterizer::RenderBitmapL(CSvgtRegisteredBitmap& aPixMap, CFbsBitmap * aMask, 
@@ -639,11 +679,11 @@
     }
 
 TInt CSvgtFbsRasterizer::GetCacheLimit(TUid aProcessUID) const
-    {
+{
     TInt cacheLimit = KMaxRecentBmpCacheSize;
-
+    
     RProcess currentProcess;
-   
+    
     if(aProcessUID == TUid::Uid(0x10003B20)) // Alf 
         {
         cacheLimit = 0x600000; 
@@ -654,4 +694,17 @@
         }
     
     return cacheLimit;
+}
+void CSvgtFbsRasterizer::ClearCache()//OOM 
+    {
+    CSvgtRegisteredBitmap* regBmp=NULL;
+    if(iCacheLimit>KMaxRecentBmpCacheSize)
+        { 
+        while (!iRecentBmps.IsEmpty()&&(iTotalRecentBmpSize > KMaxRecentBmpCacheSize))
+            {
+            regBmp = iRecentBmps.Last();
+            iTotalRecentBmpSize -= regBmp->DataSize();
+            delete regBmp;
+            }
+        }
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uigraphics/AknIcon/SvgtFbsRasterizer/src/SvgtRasterizerOOMPropertyMonitor.cpp	Tue Jul 13 16:36:34 2010 +0100
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2002 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:    CSvgtRasterizerOOMPropertyMonitor class for OOM implementation.
+ *
+ */
+
+#include "SvgtRasterizerOOMPropertyMonitor.h"
+#include <graphics/fbsrasterizer.h>
+#include <graphics/fbsrasterizerclearcache.h>
+#include "SvgtRasterizerCacheLimitHandler.h"
+#include <fbs.h>
+//#include <e32debug.h>
+
+CSvgtRasterizerOOMPropertyMonitor* CSvgtRasterizerOOMPropertyMonitor::NewL()
+    {
+    CSvgtRasterizerOOMPropertyMonitor* self = new (ELeave) CSvgtRasterizerOOMPropertyMonitor();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+CSvgtRasterizerOOMPropertyMonitor::CSvgtRasterizerOOMPropertyMonitor()
+: CActive(CActive::EPriorityStandard)
+            {
+            if (CActiveScheduler::Current())
+                {
+                CActiveScheduler::Add(this);
+                }
+
+            }
+
+CSvgtRasterizerOOMPropertyMonitor::~CSvgtRasterizerOOMPropertyMonitor()
+    {
+    if (CActiveScheduler::Current())
+        {    
+        Cancel();
+        }
+    iOomWatcher.Close();
+    } 
+
+void CSvgtRasterizerOOMPropertyMonitor::ConstructL()
+    {
+    
+    if (CActiveScheduler::Current())    
+        {
+        User::LeaveIfError(iOomWatcher.Attach(KSvgtPropertyCategory, ESvgtPropertyBool));
+        Queue();
+        }
+    }
+
+void CSvgtRasterizerOOMPropertyMonitor::RunL()
+    {
+    TBool changeCacheLimit=ETrue;
+    iOomWatcher.Get(changeCacheLimit);
+    iRasterizer = CFbsBitmap::Rasterizer();
+    if(!changeCacheLimit)
+        {
+        MFbsRasterizerClearCache* cacheInterfacePtr = NULL;
+        iRasterizer->GetInterface(TUid::Uid(KUidFbsRasterizerClearCache), (TAny*&)cacheInterfacePtr);
+        if(cacheInterfacePtr)
+            cacheInterfacePtr->ClearCache();
+        }
+    MSvgtRasterizerCacheLimitHandler* interfacePtr = NULL;
+    iRasterizer->GetInterface(TUid::Uid(KUidEnableSvgtRasterizer), (TAny*&)interfacePtr);
+    if(interfacePtr)
+        interfacePtr->ChangeCacheLimit(changeCacheLimit);
+    Queue();
+    }
+
+void CSvgtRasterizerOOMPropertyMonitor::DoCancel()
+    {
+    iOomWatcher.Cancel();
+    }
+
+void CSvgtRasterizerOOMPropertyMonitor::Queue()
+    {
+    if (!IsActive())
+        {
+        iOomWatcher.Subscribe(iStatus);
+        SetActive();
+        }
+    }
+
--- a/uigraphics/AknIcon/srvsrc/AknIconSrv.cpp	Wed Jun 30 12:29:41 2010 +0100
+++ b/uigraphics/AknIcon/srvsrc/AknIconSrv.cpp	Tue Jul 13 16:36:34 2010 +0100
@@ -53,6 +53,8 @@
 #include <AvkonInternalCRKeys.h>    // KAknQwertyInputModeActive
 #include <avkondomainpskeys.h>      // KAknPowerMenuStatus
 #include <bitdev.h>
+
+#include "SvgtRasterizerKeyDefs.hrh"
 // CONSTANTS
 
 const TUid KZiUdbProterty = {0x101F8614};
@@ -114,6 +116,10 @@
     TInt err10 = RProperty::Define(KPSUidAvkonDomain, KAknPowerMenuStatus,       RProperty::EInt, KPassReadPolicy, KWriteDDPolicy);
     TInt err11 = RProperty::Define(KPSUidAvkonDomain, KAknEndKeyEvent,           RProperty::EInt, KPassReadPolicy, KWriteDDPolicy);         
 
+    TInt err12 = RProperty::Define(KSvgtPropertyCategory, ESvgtPropertyBool,     RProperty::EInt);         
+    
+    RProperty::Set( KSvgtPropertyCategory, ESvgtPropertyBool, ETrue );
+    
 #ifdef _DEBUG
     RDebug::Print(_L("xxxx KAknQwertyInputModeActive err=%d"), err1);
     RDebug::Print(_L("xxxx KUikLayoutState           err=%d"), err2);
@@ -126,6 +132,8 @@
     RDebug::Print(_L("xxxx KT9UdbProterty            err=%d"), err9);
     RDebug::Print(_L("xxxx KAknPowerMenuStatus       err=%d"), err10);
     RDebug::Print(_L("xxxx KAknEndKeyEvent           err=%d"), err11);
+
+    RDebug::Print(_L("xxxx ESvgtPropertyBool         err=%d"), err12);
 #endif
     
     CRepository* repository = NULL;
@@ -1163,6 +1171,9 @@
 	
     iCurrentIndex = -1;
 	iCache->EnableCache(aEnable);
+	
+    RProperty::Set(KSvgtPropertyCategory, ESvgtPropertyBool, aEnable );
+
 	}
 
 // -----------------------------------------------------------------------------
Binary file uigraphics/Icons/data/A_H.zip has changed
Binary file uigraphics/Icons/data/Icons.zip has changed
Binary file uigraphics/Icons/data/Skin_Green.zip has changed
--- a/uiresources_pub/scalable_icons_api/group/bld.inf	Wed Jun 30 12:29:41 2010 +0100
+++ b/uiresources_pub/scalable_icons_api/group/bld.inf	Tue Jul 13 16:36:34 2010 +0100
@@ -32,3 +32,4 @@
 ../inc/AknInternalIconUtils.h     MW_LAYER_PUBLIC_EXPORT_PATH(AknInternalIconUtils.h)
 ../inc/AknIconHeader.h         MW_LAYER_PUBLIC_EXPORT_PATH(AknIconHeader.h)
 ../inc/AknIconHeader.inl         MW_LAYER_PUBLIC_EXPORT_PATH(AknIconHeader.inl)
+../inc/SvgtRasterizerKeyDefs.hrh MW_LAYER_PUBLIC_EXPORT_PATH(SvgtRasterizerKeyDefs.hrh)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiresources_pub/scalable_icons_api/inc/SvgtRasterizerKeyDefs.hrh	Tue Jul 13 16:36:34 2010 +0100
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 2002 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:   OOM related Publish n Subscribe UIDs for SvgtFbsrasterizer
+*
+*/
+
+#ifndef SVGTRASTERIZERKEYDEFS_HRH_
+#define SVGTRASTERIZERKEYDEFS_HRH_
+
+const TUid KSvgtPropertyCategory = {0x10012345};
+enum TSvgtPropertyKeys 
+    {
+    ESvgtPropertyBool
+    };
+
+#endif /* SVGTRASTERIZERKEYDEFS_HRH_ */