65 Get icon from apparc. |
65 Get icon from apparc. |
66 \param entry const reference to CaEntry. |
66 \param entry const reference to CaEntry. |
67 \param sie const reference to icon size. |
67 \param sie const reference to icon size. |
68 \retval icon. |
68 \retval icon. |
69 */ |
69 */ |
70 LOCAL_C HbIcon getIconFromApparcL(const CaEntry& entry, const QSize &size) |
70 LOCAL_C HbIcon getIconFromApparcL(int uidValue, const QSize &size) |
71 { |
71 { |
72 HbIcon icon; |
72 HbIcon icon; |
73 |
73 |
74 RApaLsSession apaLsSession; |
74 RApaLsSession apaLsSession; |
75 CleanupClosePushL(apaLsSession); |
75 CleanupClosePushL(apaLsSession); |
76 User::LeaveIfError(apaLsSession.Connect()); |
76 User::LeaveIfError(apaLsSession.Connect()); |
77 |
77 |
78 QString uidString(entry.attribute(appUidAttributeName)); |
78 TUid uid = uid.Uid(uidValue); |
79 TUid uid; |
|
80 uid = uid.Uid(uidString.toInt()); |
|
81 |
|
82 CApaAppServiceInfoArray* skinArray(NULL); |
79 CApaAppServiceInfoArray* skinArray(NULL); |
83 TRAPD( err, skinArray = apaLsSession.GetAppServiceOpaqueDataLC(uid, TUid::Uid(0x2002DCF3)); |
80 TRAPD( err, skinArray = |
84 if (err == KErrNone && skinArray ) { |
81 apaLsSession.GetAppServiceOpaqueDataLC(uid, TUid::Uid(0x2002DCF3)); |
85 TArray<TApaAppServiceInfo> tmpArray( skinArray->Array() ); |
82 if (err == KErrNone && skinArray ) { |
86 if ( tmpArray.Count() ) { |
83 TArray<TApaAppServiceInfo> tmpArray( skinArray->Array() ); |
87 TPtrC8 opaque(tmpArray[0].OpaqueData()); |
84 if ( tmpArray.Count() ) { |
88 const TPtrC16 iconName((TText16*) opaque.Ptr(),(opaque.Length()+1)>>1); |
85 TPtrC8 opaque(tmpArray[0].OpaqueData()); |
89 icon = HbIcon( XQConversions:: s60DescToQString( iconName ) ); |
86 const TPtrC16 iconName((TText16*) opaque.Ptr(),(opaque.Length()+1)>>1); |
90 } |
87 icon = HbIcon( XQConversions:: s60DescToQString( iconName ) ); |
91 } |
88 } |
92 CleanupStack::PopAndDestroy(skinArray); |
89 } |
93 ); |
90 CleanupStack::PopAndDestroy(skinArray); |
|
91 ); |
94 |
92 |
95 if (icon.isNull() || !(icon.size().isValid())) { |
93 if (icon.isNull() || !(icon.size().isValid())) { |
96 TSize iconSize(size.width(), size.height()); |
94 TSize iconSize(size.width(), size.height()); |
97 CApaMaskedBitmap* apaMaskedBitmap = CApaMaskedBitmap::NewLC(); |
95 CApaMaskedBitmap* apaMaskedBitmap = CApaMaskedBitmap::NewLC(); |
98 TInt err = apaLsSession.GetAppIcon(uid,iconSize,*apaMaskedBitmap); |
96 TInt err = apaLsSession.GetAppIcon(uid,iconSize,*apaMaskedBitmap); |
214 { |
211 { |
215 HbIcon icon; |
212 HbIcon icon; |
216 icon = getIconFromEntry(entry); |
213 icon = getIconFromEntry(entry); |
217 |
214 |
218 if (icon.isNull() || !(icon.size().isValid())) { |
215 if (icon.isNull() || !(icon.size().isValid())) { |
219 TRAP_IGNORE(icon = getIconFromApparcL(entry, size)); |
216 QString uidString(entry.attribute(appUidAttributeName)); |
|
217 bool uidOk(false); |
|
218 int uidValue = uidString.toInt(&uidOk); |
|
219 if (!uidOk) { |
|
220 uidString = entry.iconDescription().applicationId(); |
|
221 uidValue = uidString.toInt(&uidOk); |
|
222 } |
|
223 if (uidOk) { |
|
224 TRAP_IGNORE(icon = getIconFromApparcL(uidValue, size)); |
|
225 } |
220 } |
226 } |
221 |
227 |
222 if (icon.isNull() || !(icon.size().isValid())) { |
228 if (icon.isNull() || !(icon.size().isValid())) { |
223 icon = getDefaultIcon(entry); |
229 icon = getDefaultIcon(entry); |
224 } |
230 } |
225 |
231 |
226 if (entry.entryTypeName() == XQConversions::s60DescToQString( |
232 if (entry.entryTypeName() == XQConversions::s60DescToQString( |
227 KCaTypeWidget)) { |
233 KCaTypeWidget)) { |
228 icon.addBadge(Qt::AlignBottom | Qt::AlignRight, |
234 icon.addProportionalBadge(Qt::AlignBottom | Qt::AlignRight, |
229 HbIcon("qtg_small_homescreen")); |
235 HbIcon("qtg_small_homescreen"), QSizeF(0.5, 0.5)); |
230 } |
236 } |
231 return icon; |
237 return icon; |
232 } |
238 } |