X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/af98817d43e37a3044eb1908fc2a98f37a3aeb32..509464cce954f7fc4b00a9dafc2bc6355eb99ec6:/src/views/tooltips/filemetadatatooltip.cpp diff --git a/src/views/tooltips/filemetadatatooltip.cpp b/src/views/tooltips/filemetadatatooltip.cpp index a9cc2c163..1f4fb69ae 100644 --- a/src/views/tooltips/filemetadatatooltip.cpp +++ b/src/views/tooltips/filemetadatatooltip.cpp @@ -1,6 +1,7 @@ /*************************************************************************** - * Copyright (C) 2010 by Peter Penz * + * Copyright (C) 2010 by Peter Penz * * Copyright (C) 2008 by Fredrik Höglund * + * Copyright (C) 2012 by Mark Gaiser * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -26,9 +27,13 @@ #include #include -#include +#include +#include #include +// For the blurred tooltip background +#include + FileMetaDataToolTip::FileMetaDataToolTip(QWidget* parent) : QWidget(parent), m_preview(0), @@ -44,12 +49,13 @@ FileMetaDataToolTip::FileMetaDataToolTip(QWidget* parent) : // Create widget for file name m_name = new QLabel(this); + m_name->setForegroundRole(QPalette::ToolTipText); QFont font = m_name->font(); font.setBold(true); m_name->setFont(font); // Create widget for the meta data - m_fileMetaDataWidget = new KFileMetaDataWidget(); + m_fileMetaDataWidget = new KFileMetaDataWidget(this); m_fileMetaDataWidget->setForegroundRole(QPalette::ToolTipText); m_fileMetaDataWidget->setReadOnly(true); connect(m_fileMetaDataWidget, SIGNAL(metaDataRequestFinished(KFileItemList)), @@ -84,7 +90,7 @@ void FileMetaDataToolTip::setPreview(const QPixmap& pixmap) QPixmap FileMetaDataToolTip::preview() const { - if (m_preview->pixmap() != 0) { + if (m_preview->pixmap()) { return *m_preview->pixmap(); } return QPixmap(); @@ -112,51 +118,19 @@ KFileItemList FileMetaDataToolTip::items() const void FileMetaDataToolTip::paintEvent(QPaintEvent* event) { - Q_UNUSED(event); - - QPainter painter(this); - - QColor toColor = palette().brush(QPalette::ToolTipBase).color(); - QColor fromColor = KColorScheme::shade(toColor, KColorScheme::LightShade, 0.2); + QStylePainter painter(this); + QStyleOptionFrame option; + option.init(this); + painter.drawPrimitive(QStyle::PE_PanelTipLabel, option); + painter.end(); - const bool haveAlphaChannel = KWindowSystem::compositingActive(); - if (haveAlphaChannel) { - painter.setRenderHint(QPainter::Antialiasing); - painter.translate(0.5, 0.5); - toColor.setAlpha(220); - fromColor.setAlpha(220); - } - - QLinearGradient gradient(QPointF(0.0, 0.0), QPointF(0.0, height())); - gradient.setColorAt(0.0, fromColor); - gradient.setColorAt(1.0, toColor); - painter.setPen(Qt::NoPen); - painter.setBrush(gradient); - - const QRect rect(0, 0, width(), height()); - if (haveAlphaChannel) { - const qreal radius = 5.0; - - QPainterPath path; - path.moveTo(rect.left(), rect.top() + radius); - arc(path, rect.left() + radius, rect.top() + radius, radius, 180, -90); - arc(path, rect.right() - radius, rect.top() + radius, radius, 90, -90); - arc(path, rect.right() - radius, rect.bottom() - radius, radius, 0, -90); - arc(path, rect.left() + radius, rect.bottom() - radius, radius, 270, -90); - path.closeSubpath(); - - painter.drawPath(path); - } else { - painter.drawRect(rect); - } + QWidget::paintEvent(event); } -void FileMetaDataToolTip::arc(QPainterPath& path, - qreal cx, qreal cy, - qreal radius, qreal angle, - qreal sweepLength) +void FileMetaDataToolTip::showEvent(QShowEvent *) { - path.arcTo(cx-radius, cy-radius, radius * 2, radius * 2, angle, sweepLength); + Plasma::WindowEffects::overrideShadow(winId(), true); + Plasma::WindowEffects::enableBlurBehind(winId(), true, mask()); } #include "filemetadatatooltip.moc"