contentstorage/caclient/s60/src/camenuiconutility.cpp
changeset 109 e0aa398e6810
parent 104 9b022b1f357c
child 115 3ab5c078b490
--- a/contentstorage/caclient/s60/src/camenuiconutility.cpp	Tue Jul 06 14:37:10 2010 +0300
+++ b/contentstorage/caclient/s60/src/camenuiconutility.cpp	Wed Aug 18 10:05:49 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());
@@ -118,8 +116,6 @@
                     
                     TPtr ptr(fileNameFromApparc->Des());
                     CaMenuIconMifUtility::GetPixmapByFilenameL(ptr,size,pixmap);
-        
-                    pixmap = pixmap.scaled(size, Qt::KeepAspectRatioByExpanding);
                     icon = HbIcon(QIcon(pixmap));
                 } else {
                     icon = HbIcon(fileName);
@@ -130,7 +126,6 @@
         CleanupStack::PopAndDestroy(apaMaskedBitmap);
     }
     CleanupStack::PopAndDestroy(&apaLsSession);
-    
     return icon;
 }
 
@@ -152,7 +147,7 @@
             XQConversions::s60DescToQString(KCaTypeCollection) ||
             entry.entryTypeName() == 
             XQConversions::s60DescToQString(KCaTypeCollectionDownload)) {
-        icon = HbIcon("qtg_large_application");
+        icon = HbIcon("qtg_large_applications_user");
     } else if (entry.entryTypeName() ==
         XQConversions::s60DescToQString(KCaTypeUrl)) {
         icon = HbIcon("qtg_large_application");
@@ -216,7 +211,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 +229,8 @@
  
     if (entry.entryTypeName() == XQConversions::s60DescToQString(
             KCaTypeWidget)) {
-        icon.addBadge(Qt::AlignBottom | Qt::AlignLeft,
-		    HbIcon("qtg_small_homescreen"));
+        icon.addProportionalBadge(Qt::AlignBottom | Qt::AlignRight,
+		    HbIcon("qtg_small_homescreen"), QSizeF(0.5, 0.5));
     }
     return icon;
 }