void ToolTipManager::setPreviewPix(const KFileItem& item,
const QPixmap& pixmap)
{
- // If the url has changed, don't do anything.
- if ( m_item.url().url() == item.url().url() )
- {
- QPixmap icon = pixmap;
- // only paint borders if the pixmap is opaque
- if (!icon.hasAlphaChannel())
- {
- // border painter (adapted from dolphin/src/iconmanager.cpp)
- // the frame is painted on top of the pixmap, this is needed to keep
- // the text preview visually nice (the previewer adds ugly borders)
- QPainter painter;
- // make a buffer pixmap, tends to crash when 'icon' is directly painted ...
- QPixmap framedIcon(icon.size().width(), pixmap.size().height());
- framedIcon.fill();
- const int width = framedIcon.width() - 1;
- const int height = framedIcon.height() - 1;
-
- // draw the pixmap
- painter.begin(&framedIcon);
- painter.drawPixmap(0,0, icon);
-
- // draw the frame
- painter.setRenderHint(QPainter::Antialiasing, false);
- painter.setPen(QColor(0, 0, 0));
- painter.drawRect(0, 0, width-0, height-1);
- painter.drawRect(1, 1, width-2, height-2);
- painter.setPen(QColor(255, 255, 255));
- painter.drawRect(2, 2, width-4, height-4);
-
- painter.end();
- icon = framedIcon;
-
- // provide an alpha channel for the frame
- QPixmap alphaChannel(icon.size());
- alphaChannel.fill();
-
- QPainter alphaPainter(&alphaChannel);
- alphaPainter.setBrush(Qt::NoBrush);
- alphaPainter.setRenderHint(QPainter::Antialiasing, false);
- alphaPainter.setPen(QColor(32, 32, 32));
- alphaPainter.drawRect(0, 0, width, height);
- alphaPainter.setPen(QColor(64, 64, 64));
- alphaPainter.drawRect(1, 1, width-2, height-2);
-
- icon.setAlphaChannel(alphaChannel);
- }
+ if (m_item.url() != item.url()) {
+ return;
+ }
+
+ QPixmap icon = pixmap;
+ // only paint borders if the pixmap is opaque
+ if (!icon.hasAlphaChannel()) {
+ // TODO: Make code from IconManager for drawing a border accessible for
+ // other classes (the following code has been adapted from IconManager).
+ // The frame is painted on top of the pixmap, this is needed to keep
+ // the text preview visually nice (the previewer adds ugly borders).
+ QPainter painter;
+ // make a buffer pixmap, tends to crash when 'icon' is directly painted ...
+ QPixmap framedIcon(icon.size().width(), pixmap.size().height());
+ framedIcon.fill();
+ const int width = framedIcon.width() - 1;
+ const int height = framedIcon.height() - 1;
+
+ // draw the pixmap
+ painter.begin(&framedIcon);
+ painter.drawPixmap(0,0, icon);
+
+ // draw the frame
+ painter.setRenderHint(QPainter::Antialiasing, false);
+ painter.setPen(QColor(0, 0, 0));
+ painter.drawRect(0, 0, width - 0, height - 1);
+ painter.drawRect(1, 1, width - 2, height - 2);
+ painter.setPen(QColor(255, 255, 255));
+ painter.drawRect(2, 2, width - 4, height - 4);
+
+ painter.end();
+ icon = framedIcon;
+
+ // provide an alpha channel for the frame
+ QPixmap alphaChannel(icon.size());
+ alphaChannel.fill();
+
+ QPainter alphaPainter(&alphaChannel);
+ alphaPainter.setBrush(Qt::NoBrush);
+ alphaPainter.setRenderHint(QPainter::Antialiasing, false);
+ alphaPainter.setPen(QColor(32, 32, 32));
+ alphaPainter.drawRect(0, 0, width, height);
+ alphaPainter.setPen(QColor(64, 64, 64));
+ alphaPainter.drawRect(1, 1, width - 2, height - 2);
+
+ icon.setAlphaChannel(alphaChannel);
+ }
- if (m_previewIsLate) {
- // always use the maximal width
- QPixmap paddedImage(QSize(PREVIEW_WIDTH, icon.height()));
- paddedImage.fill(Qt::transparent);
- QPainter painter(&paddedImage);
- painter.drawPixmap((PREVIEW_WIDTH - icon.width()) / 2, 0, icon);
- m_pix = paddedImage;
- }
- else {
- m_pix = icon;
- }
- m_preview = true;
- m_generatingPreview = false;
- }
+ if (m_previewIsLate) {
+ // always use the maximal width
+ QPixmap paddedImage(QSize(PREVIEW_WIDTH, icon.height()));
+ paddedImage.fill(Qt::transparent);
+ QPainter painter(&paddedImage);
+ painter.drawPixmap((PREVIEW_WIDTH - icon.width()) / 2, 0, icon);
+ m_pix = paddedImage;
+ } else {
+ m_pix = icon;
+ }
+ m_preview = true;
+ m_generatingPreview = false;
}
void ToolTipManager::previewFailed(const KFileItem& item)