contentstorage/caclient/s60/src/camenuiconutility.cpp
changeset 106 e78d6e055a5b
parent 102 8b8b34fa9751
child 107 b34d53f6acdf
--- a/contentstorage/caclient/s60/src/camenuiconutility.cpp	Fri Jul 09 14:19:08 2010 +0300
+++ b/contentstorage/caclient/s60/src/camenuiconutility.cpp	Fri Jul 23 14:03:00 2010 +0300
@@ -67,7 +67,7 @@
  \param sie const reference to icon size.
  \retval icon.
  */
-LOCAL_C HbIcon getIconFromApparcL(const CaEntry& entry, const QSize &size)
+LOCAL_C HbIcon getIconFromApparcL(int uidValue, const QSize &size)
 {
     HbIcon icon;
     
@@ -75,22 +75,20 @@
     CleanupClosePushL(apaLsSession);
     User::LeaveIfError(apaLsSession.Connect());
 
-    QString uidString(entry.attribute(appUidAttributeName));
-    TUid uid;
-    uid = uid.Uid(uidString.toInt());
-    
+    TUid uid = uid.Uid(uidValue);
     CApaAppServiceInfoArray* skinArray(NULL);
-    TRAPD( err, skinArray = apaLsSession.GetAppServiceOpaqueDataLC(uid, TUid::Uid(0x2002DCF3));
-    if (err == KErrNone && skinArray ) {
-        TArray<TApaAppServiceInfo> tmpArray( skinArray->Array() );
-        if ( tmpArray.Count() ) {
-            TPtrC8 opaque(tmpArray[0].OpaqueData());
-            const TPtrC16 iconName((TText16*) opaque.Ptr(),(opaque.Length()+1)>>1);
-            icon = HbIcon( XQConversions:: s60DescToQString( iconName ) );
-        } 
-    }
-    CleanupStack::PopAndDestroy(skinArray);
-    );
+    TRAPD( err, skinArray =
+        apaLsSession.GetAppServiceOpaqueDataLC(uid, TUid::Uid(0x2002DCF3));
+        if (err == KErrNone && skinArray ) {
+            TArray<TApaAppServiceInfo> tmpArray( skinArray->Array() );
+            if ( tmpArray.Count() ) {
+                TPtrC8 opaque(tmpArray[0].OpaqueData());
+                const TPtrC16 iconName((TText16*) opaque.Ptr(),(opaque.Length()+1)>>1);
+                icon = HbIcon( XQConversions:: s60DescToQString( iconName ) );
+            }
+        }
+        CleanupStack::PopAndDestroy(skinArray);
+        );
     
     if (icon.isNull() || !(icon.size().isValid())) {
         TSize iconSize(size.width(), size.height());
@@ -130,7 +128,6 @@
         CleanupStack::PopAndDestroy(apaMaskedBitmap);
     }
     CleanupStack::PopAndDestroy(&apaLsSession);
-    
     return icon;
 }
 
@@ -216,7 +213,16 @@
     icon = getIconFromEntry(entry);
  
     if (icon.isNull() || !(icon.size().isValid())) {
-        TRAP_IGNORE(icon = getIconFromApparcL(entry, size));
+        QString uidString(entry.attribute(appUidAttributeName));
+        bool uidOk(false);
+        int uidValue = uidString.toInt(&uidOk);
+        if (!uidOk) {
+            uidString = entry.iconDescription().applicationId();
+            uidValue = uidString.toInt(&uidOk);
+        }
+        if (uidOk) {
+            TRAP_IGNORE(icon = getIconFromApparcL(uidValue, size));
+        }
     }
  
     if (icon.isNull() || !(icon.size().isValid())) {
@@ -225,8 +231,8 @@
  
     if (entry.entryTypeName() == XQConversions::s60DescToQString(
             KCaTypeWidget)) {
-        icon.addBadge(Qt::AlignBottom | Qt::AlignRight,
-		    HbIcon("qtg_small_homescreen"));
+        icon.addProportionalBadge(Qt::AlignBottom | Qt::AlignRight,
+		    HbIcon("qtg_small_homescreen"), QSizeF(0.5, 0.5));
     }
     return icon;
 }