src/hbcore/image/hbbadgeicon.cpp
changeset 7 923ff622b8b9
parent 5 627c4a0fd0e7
equal deleted inserted replaced
6:c3690ec91ef8 7:923ff622b8b9
    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 }