71 implementation provides no scaling of the badge icon. |
71 implementation provides no scaling of the badge icon. |
72 \internal |
72 \internal |
73 */ |
73 */ |
74 void HbBadgeIcon::addBadge(Qt::Alignment alignment, |
74 void HbBadgeIcon::addBadge(Qt::Alignment alignment, |
75 const HbIcon &icon, |
75 const HbIcon &icon, |
76 int zValue) |
76 int zValue, |
77 { |
77 const QSizeF &sizeFactor, |
78 HbBadgeIconInfo info(icon, alignment, zValue); |
78 Qt::AspectRatioMode aspectRatio) |
79 int size = mBadgeIcons.size(); |
79 { |
80 if (size == 0) { |
80 HbBadgeIconInfo info(icon, alignment, zValue, sizeFactor, aspectRatio); |
|
81 int badgeCount = mBadgeIcons.count(); |
|
82 if (badgeCount == 0) { |
81 mBadgeIcons.append(info); |
83 mBadgeIcons.append(info); |
82 } else { |
84 } else { |
83 bool added = false; |
85 bool added = false; |
84 //Find a spot to insert the badgeinfo in the list. |
86 //Find a spot to insert the badgeinfo in the list. |
85 for (int i = size - 1; i >= 0; i--) { |
87 for (int i = badgeCount - 1; i >= 0; i--) { |
86 if (mBadgeIcons[i].zValue() > zValue) { |
88 if (mBadgeIcons[i].zValue() > zValue) { |
87 mBadgeIcons.insert(i + 1, info); |
89 mBadgeIcons.insert(i + 1, info); |
88 added = true; |
90 added = true; |
89 break; |
91 break; |
90 } |
92 } |
152 bool mirror) |
154 bool mirror) |
153 { |
155 { |
154 int count = mBadgeIcons.count(); |
156 int count = mBadgeIcons.count(); |
155 |
157 |
156 for (int i = count - 1; i >= 0; i--) { |
158 for (int i = count - 1; i >= 0; i--) { |
157 HbBadgeIconInfo aIcon = mBadgeIcons[i]; |
159 HbBadgeIconInfo badge = mBadgeIcons.at(i); |
158 Qt::Alignment align = aIcon.alignment(); |
160 // Fix the alignment. |
|
161 Qt::Alignment align = badge.alignment(); |
159 Qt::Alignment absAlign = align; |
162 Qt::Alignment absAlign = align; |
160 if (mirror) { |
163 if (mirror) { |
161 absAlign = align & ~(Qt::AlignRight | Qt::AlignLeft); |
164 absAlign = align & ~(Qt::AlignRight | Qt::AlignLeft); |
162 |
|
163 if (align & Qt::AlignLeft) { |
165 if (align & Qt::AlignLeft) { |
164 absAlign |= Qt::AlignRight; |
166 absAlign |= Qt::AlignRight; |
165 } |
167 } |
166 if (align & Qt::AlignRight) { |
168 if (align & Qt::AlignRight) { |
167 absAlign |= Qt::AlignLeft; |
169 absAlign |= Qt::AlignLeft; |
168 } |
170 } |
169 } |
171 } |
170 // ... and then draw at the specified location. |
172 // Update the size. |
171 aIcon.icon().paint(painter, |
173 QSizeF sizeFactor = badge.sizeFactor(); |
|
174 if (!sizeFactor.isNull()) { |
|
175 QSizeF targetSizeF(sizeFactor.width() * rect.width(), sizeFactor.height() * rect.height()); |
|
176 QSize targetSize = targetSizeF.toSize(); |
|
177 HbIcon icon = badge.icon(); |
|
178 if (targetSize != icon.size().toSize()) { |
|
179 icon.setSize(targetSize); |
|
180 badge.setIcon(icon); |
|
181 mBadgeIcons[i] = badge; |
|
182 } |
|
183 } |
|
184 // And finally draw the badge. |
|
185 badge.icon().paint(painter, |
172 rect, |
186 rect, |
173 Qt::KeepAspectRatio, |
187 badge.aspectRatio(), |
174 absAlign, |
188 absAlign, |
175 mode, |
189 mode, |
176 state); |
190 state); |
177 } |
191 } |
178 } |
192 } |
180 /*! |
194 /*! |
181 \internal |
195 \internal |
182 */ |
196 */ |
183 void HbBadgeIcon::externalize(QDataStream &stream) |
197 void HbBadgeIcon::externalize(QDataStream &stream) |
184 { |
198 { |
185 int size = mBadgeIcons.size(); |
199 int count = mBadgeIcons.count(); |
186 // Write out how many badges we'll save first |
200 // Write out how many badges we'll save first |
187 stream << size; |
201 stream << count; |
188 // And write each item |
202 // And write each item |
189 for (int i = 0; i < size; i++) { |
203 for (int i = 0; i < count; i++) { |
190 HbBadgeIconInfo aIcon = mBadgeIcons[i]; |
204 const HbBadgeIconInfo &badge(mBadgeIcons.at(i)); |
191 stream << aIcon.icon(); |
205 stream << badge.icon(); |
192 stream << (qint32)(aIcon.alignment()); |
206 stream << (qint32) badge.alignment(); |
193 stream << aIcon.zValue(); |
207 stream << badge.zValue(); |
|
208 stream << badge.sizeFactor(); |
|
209 stream << (qint32) badge.aspectRatio(); |
194 } |
210 } |
195 } |
211 } |
196 |
212 |
197 |
213 |
198 /*! |
214 /*! |
204 stream >> howManyBadges; |
220 stream >> howManyBadges; |
205 for (int i = 0; i < howManyBadges; ++i) { |
221 for (int i = 0; i < howManyBadges; ++i) { |
206 qint32 align; |
222 qint32 align; |
207 qint32 zValue; |
223 qint32 zValue; |
208 HbIcon icon; |
224 HbIcon icon; |
|
225 QSizeF sizeFactor; |
|
226 qint32 aspectRatio; |
209 stream >> icon; |
227 stream >> icon; |
210 stream >> align; |
228 stream >> align; |
211 stream >> zValue; |
229 stream >> zValue; |
212 |
230 stream >> sizeFactor; |
213 HbBadgeIconInfo info(icon, (Qt::Alignment)align, zValue); |
231 stream >> aspectRatio; |
|
232 |
|
233 HbBadgeIconInfo info(icon, (Qt::Alignment) align, zValue, |
|
234 sizeFactor, (Qt::AspectRatioMode) aspectRatio); |
214 mBadgeIcons.append(info); |
235 mBadgeIcons.append(info); |
215 }; |
236 } |
216 } |
237 } |