diff -r 89c329efa980 -r e48454f237ca ganeswidgets/src/hgwidgetitem.cpp --- a/ganeswidgets/src/hgwidgetitem.cpp Mon Apr 19 14:40:06 2010 +0300 +++ b/ganeswidgets/src/hgwidgetitem.cpp Mon May 03 13:32:54 2010 +0300 @@ -16,9 +16,11 @@ */ #include "hgwidgetitem.h" #include "hgquadrenderer.h" +#include "trace.h" #include #include #include +#include "hgvgimage.h" HgWidgetItem::HgWidgetItem(HgQuadRenderer* renderer): mTitle(""), @@ -48,13 +50,15 @@ delete mHgImage; } -void HgWidgetItem::setImage( QImage image ) +void HgWidgetItem::setImage(const QImage &image) { if (!mHgImage) { mHgImage = mRenderer->createNativeImage(); } + mHgImage->setImage(image); + if (!mVisibility) mHgImage->setAlpha(0); @@ -120,8 +124,11 @@ if (size.width() != 0 && size.height() != 0 ){ QPixmap pixmap = qicon.pixmap(size); if (!pixmap.isNull()){ - setImage(pixmap.toImage()); - mValidData = true; + QImage tempImage = pixmap.toImage(); + if (!tempImage.isNull()) { + setImage(tempImage); + mValidData = true; + } } break; } @@ -133,15 +140,25 @@ // QIcon too. QIcon tempIcon = image.value(); QList sizes = tempIcon.availableSizes(); - QSize size; - foreach(size, sizes){ - if (size.width() != 0 && size.height() != 0 ){ - QPixmap pixmap = tempIcon.pixmap(size); - if (!pixmap.isNull()){ - setImage(pixmap.toImage()); - mValidData = true; + if (sizes.count() == 0 && !(tempIcon.isNull())) { + QPixmap pixmap = tempIcon.pixmap(tempIcon.actualSize(QSize(250, 250))); + if (!pixmap.isNull()){ + INFO("Valid image found for" << mModelIndex); + setImage(pixmap.toImage()); + mValidData = true; + } + } + else { + QSize size; + foreach(size, sizes){ + if (size.width() != 0 && size.height() != 0 ){ + QPixmap pixmap = tempIcon.pixmap(size); + if (!pixmap.isNull()){ + setImage(pixmap.toImage()); + mValidData = true; + } + break; } - break; } } } @@ -165,6 +182,9 @@ mValidData = false; if (mHgImage) mHgImage->releaseImage(); + + delete mHgImage; + mHgImage = 0; } bool HgWidgetItem::validData() const