void QUrlModel::setUrl(const QModelIndex &index, const QUrl &url, const QModelIndex &dirIndex) { setData(index, url, UrlRole); if (url.path().isEmpty()) { setData(index, fileSystemModel->myComputer()); setData(index, fileSystemModel->myComputer(Qt::DecorationRole), Qt::DecorationRole); } else { QString newName = dirIndex.data(QFileSystemModel::FilePathRole).toString(); QIcon newIcon = qvariant_cast<QIcon>(dirIndex.data(Qt::DecorationRole)); if (!dirIndex.isValid()) { newIcon = fileSystemModel->iconProvider()->icon(QFileIconProvider::Folder); newName = QFileInfo(url.toLocalFile()).fileName(); if (!invalidUrls.contains(url)) invalidUrls.append(url); //The bookmark is invalid then we set to false the EnabledRole setData(index, false, EnabledRole); } else { //The bookmark is valid then we set to true the EnabledRole setData(index, true, EnabledRole); } // Make sure that we have at least 32x32 images const QSize size = newIcon.actualSize(QSize(32,32)); if (size.width() < 32) { QPixmap smallPixmap = newIcon.pixmap(QSize(32, 32)); newIcon.addPixmap(smallPixmap.scaledToWidth(32, Qt::SmoothTransformation)); } if (index.data().toString() != newName) setData(index, newName); QIcon oldIcon = qvariant_cast<QIcon>(index.data(Qt::DecorationRole)); if (oldIcon.cacheKey() != newIcon.cacheKey()) setData(index, newIcon, Qt::DecorationRole); } }
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { TMessageViewer *v = dynamic_cast<TMessageViewer *>(parent()); assert(v); QIcon ic = ((QStandardItemModel *)sourceModel())->item(sourceRow)->icon(); if (ic.cacheKey() == gGreenIcon.cacheKey()) return v->m_greenCheck->isChecked(); else if (ic.cacheKey() == gYellowIcon.cacheKey()) return v->m_yellowCheck->isChecked(); else if (ic.cacheKey() == gRedIcon.cacheKey()) return v->m_redCheck->isChecked(); else return true; }
void SystemTrayIcon::setAttentionIcon( const QIcon & icon ) { if ( d->attentionIcon.cacheKey() == icon.cacheKey() ) return; d->attentionIcon = icon; if ( d->attentionWanted() && d->attentionIconShown ) setIcon( icon ); }
/*! \property QWinThumbnailToolButton::icon \brief the icon of the button */ void QWinThumbnailToolButton::setIcon(const QIcon &icon) { Q_D(QWinThumbnailToolButton); if (d->icon.cacheKey() != icon.cacheKey()) { d->icon = icon; emit changed(); } }
void ViewProperties::setIcon(const QIcon& icon) { // the icon's cache key is used to determine whether this icon is the same // as the old one. if so no signal is emitted. if ( icon.cacheKey() != _icon.cacheKey() ) { _icon = icon; emit iconChanged(this); } }
const QIcon& CIconProvider::iconForFilesystemObject( const CFileSystemObject& object ) { if (_iconForObject.count(object.properties().hash) == 0) { const QIcon icon = QFileIconProvider().icon(object.absoluteFilePath()); const quint64 iconHash = icon.cacheKey(); if (_iconCache.count(iconHash) == 0) _iconCache[iconHash] = icon; _iconForObject[object.properties().hash] = iconHash; return _iconCache[iconHash]; } return _iconCache[_iconForObject[object.properties().hash]]; }
void DeclarativeIcon::setIcon(const QIcon &icon) { if (icon.cacheKey() == d->icon.cacheKey()) return; const QString oldName = d->icon.name(); const bool oldIsNull = d->icon.isNull(); d->icon = icon; emit iconChanged(icon); if (oldName != d->icon.name()) emit nameChanged(d->icon.name()); if (oldIsNull == d->icon.isNull()) emit isNullChanged(d->icon.isNull()); }
QImage AlbumCoverSearcher::Exec(const QString& artist, const QString& album) { ui_->artist->setText(artist); ui_->album->setText(album); ui_->artist->setFocus(); if (!artist.isEmpty() || !album.isEmpty()) { Search(); } if (exec() == QDialog::Rejected) return QImage(); QModelIndex selected = ui_->covers->currentIndex(); if (!selected.isValid() || !selected.data(Role_ImageFetchFinished).toBool()) return QImage(); QIcon icon = selected.data(Qt::DecorationRole).value<QIcon>(); if (icon.cacheKey() == no_cover_icon_.cacheKey()) return QImage(); return icon.pixmap(icon.availableSizes()[0]).toImage(); }
// Draws a cached pixmap with shadow void StyleHelper::drawIconWithShadow(const QIcon &icon, const QRect &rect, QPainter *p, QIcon::Mode iconMode, int radius, const QColor &color, const QPoint &offset) { QPixmap cache; QString pixmapName = QString("icon %0 %1 %2").arg(icon.cacheKey()).arg(iconMode).arg(rect.height()); if (!QPixmapCache::find(pixmapName, cache)) { QPixmap px = icon.pixmap(rect.size()); cache = QPixmap(px.size() + QSize(radius * 2, radius * 2)); cache.fill(Qt::transparent); QPainter cachePainter(&cache); if (iconMode == QIcon::Disabled) { QImage im = px.toImage().convertToFormat(QImage::Format_ARGB32); for (int y=0; y<im.height(); ++y) { QRgb *scanLine = (QRgb*)im.scanLine(y); for (int x=0; x<im.width(); ++x) { QRgb pixel = *scanLine; char intensity = qGray(pixel); *scanLine = qRgba(intensity, intensity, intensity, qAlpha(pixel)); ++scanLine; } } px = QPixmap::fromImage(im); } // Draw shadow QImage tmp(px.size() + QSize(radius * 2, radius * 2 + 1), QImage::Format_ARGB32_Premultiplied); tmp.fill(Qt::transparent); QPainter tmpPainter(&tmp); tmpPainter.setCompositionMode(QPainter::CompositionMode_Source); tmpPainter.drawPixmap(QPoint(radius, radius), px); tmpPainter.end(); // blur the alpha channel QImage blurred(tmp.size(), QImage::Format_ARGB32_Premultiplied); blurred.fill(Qt::transparent); QPainter blurPainter(&blurred); qt_blurImage(&blurPainter, tmp, radius, false, true); blurPainter.end(); tmp = blurred; // blacken the image... tmpPainter.begin(&tmp); tmpPainter.setCompositionMode(QPainter::CompositionMode_SourceIn); tmpPainter.fillRect(tmp.rect(), color); tmpPainter.end(); tmpPainter.begin(&tmp); tmpPainter.setCompositionMode(QPainter::CompositionMode_SourceIn); tmpPainter.fillRect(tmp.rect(), color); tmpPainter.end(); // draw the blurred drop shadow... cachePainter.drawImage(QRect(0, 0, cache.rect().width(), cache.rect().height()), tmp); // Draw the actual pixmap... cachePainter.drawPixmap(QPoint(radius, radius) + offset, px); QPixmapCache::insert(pixmapName, cache); } QRect targetRect = cache.rect(); targetRect.moveCenter(rect.center()); p->drawPixmap(targetRect.topLeft() - offset, cache); }
// Draws a cached pixmap with shadow void FancyTabBar::drawIconWithShadow(const QIcon &icon, const QRect &rect, QPainter *p, QIcon::Mode iconMode, int dipRadius, const QColor &color, const QPoint &dipOffset) { QPixmap cache; QString pixmapName = QString::fromLatin1("icon %0 %1 %2").arg(icon.cacheKey()).arg(iconMode).arg(rect.height()); if (!QPixmapCache::find(pixmapName, cache)) { // High-dpi support: The in parameters (rect, radius, offset) are in // device-independent pixels. The call to QIcon::pixmap() below might // return a high-dpi pixmap, which will in that case have a devicePixelRatio // different than 1. The shadow drawing caluculations are done in device // pixels. QPixmap px = icon.pixmap(rect.size()); //jassuncao int devicePixelRatio = qCeil(px.devicePixelRatio()); int devicePixelRatio = 1; int radius = dipRadius * devicePixelRatio; QPoint offset = dipOffset * devicePixelRatio; cache = QPixmap(px.size() + QSize(radius * 2, radius * 2)); cache.fill(Qt::transparent); QPainter cachePainter(&cache); if (iconMode == QIcon::Disabled) { QImage im = px.toImage().convertToFormat(QImage::Format_ARGB32); for (int y=0; y<im.height(); ++y) { QRgb *scanLine = (QRgb*)im.scanLine(y); for (int x=0; x<im.width(); ++x) { QRgb pixel = *scanLine; char intensity = qGray(pixel); *scanLine = qRgba(intensity, intensity, intensity, qAlpha(pixel)); ++scanLine; } } px = QPixmap::fromImage(im); } // Draw shadow QImage tmp(px.size() + QSize(radius * 2, radius * 2 + 1), QImage::Format_ARGB32_Premultiplied); tmp.fill(Qt::transparent); QPainter tmpPainter(&tmp); tmpPainter.setCompositionMode(QPainter::CompositionMode_Source); tmpPainter.drawPixmap(QRect(radius, radius, px.width(), px.height()), px); tmpPainter.end(); // blur the alpha channel QImage blurred(tmp.size(), QImage::Format_ARGB32_Premultiplied); blurred.fill(Qt::transparent); QPainter blurPainter(&blurred); qt_blurImage(&blurPainter, tmp, radius, false, true); blurPainter.end(); tmp = blurred; // blacken the image... tmpPainter.begin(&tmp); tmpPainter.setCompositionMode(QPainter::CompositionMode_SourceIn); tmpPainter.fillRect(tmp.rect(), color); tmpPainter.end(); tmpPainter.begin(&tmp); tmpPainter.setCompositionMode(QPainter::CompositionMode_SourceIn); tmpPainter.fillRect(tmp.rect(), color); tmpPainter.end(); // draw the blurred drop shadow... cachePainter.drawImage(QRect(0, 0, cache.rect().width(), cache.rect().height()), tmp); // Draw the actual pixmap... cachePainter.drawPixmap(QRect(QPoint(radius, radius) + offset, QSize(px.width(), px.height())), px); //jassuncao: cache.setDevicePixelRatio(devicePixelRatio); QPixmapCache::insert(pixmapName, cache); } QRect targetRect = cache.rect(); //jassuncao targetRect.setSize(targetRect.size() / cache.devicePixelRatio()); targetRect.moveCenter(rect.center() - dipOffset); p->drawPixmap(targetRect, cache); }
static inline bool isSameIcon(const QIcon &i1, const QIcon &i2) { return i1.cacheKey() == i2.cacheKey(); }