X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/a5c25d2de5c05f2aa30c02493b7f7f35942d3d03..230fe13d1f:/src/views/tooltips/filemetadatatooltip.cpp diff --git a/src/views/tooltips/filemetadatatooltip.cpp b/src/views/tooltips/filemetadatatooltip.cpp index 1f4fb69ae..2fbba8b9c 100644 --- a/src/views/tooltips/filemetadatatooltip.cpp +++ b/src/views/tooltips/filemetadatatooltip.cpp @@ -22,17 +22,24 @@ #include "filemetadatatooltip.h" #include -#include #include -#include +// For the blurred tooltip background +#include +#include +#include #include #include #include #include +#include +#include -// For the blurred tooltip background -#include +#ifndef HAVE_BALOO +#include +#else +#include +#endif FileMetaDataToolTip::FileMetaDataToolTip(QWidget* parent) : QWidget(parent), @@ -40,9 +47,6 @@ FileMetaDataToolTip::FileMetaDataToolTip(QWidget* parent) : m_name(0), m_fileMetaDataWidget(0) { - setAttribute(Qt::WA_TranslucentBackground); - setWindowFlags(Qt::ToolTip | Qt::FramelessWindowHint); - // Create widget for file preview m_preview = new QLabel(this); m_preview->setAlignment(Qt::AlignTop); @@ -50,16 +54,28 @@ FileMetaDataToolTip::FileMetaDataToolTip(QWidget* parent) : // Create widget for file name m_name = new QLabel(this); m_name->setForegroundRole(QPalette::ToolTipText); + m_name->setTextFormat(Qt::PlainText); + m_name->setAlignment(Qt::AlignHCenter); + QFont font = m_name->font(); font.setBold(true); m_name->setFont(font); + QFontMetrics fontMetrics(font); + m_name->setMaximumWidth(fontMetrics.averageCharWidth() * 40); + // Create widget for the meta data +#ifndef HAVE_BALOO m_fileMetaDataWidget = new KFileMetaDataWidget(this); + connect(m_fileMetaDataWidget, &KFileMetaDataWidget::metaDataRequestFinished, + this, &FileMetaDataToolTip::metaDataRequestFinished); +#else + m_fileMetaDataWidget = new Baloo::FileMetaDataWidget(this); + connect(m_fileMetaDataWidget, &Baloo::FileMetaDataWidget::metaDataRequestFinished, + this, &FileMetaDataToolTip::metaDataRequestFinished); +#endif m_fileMetaDataWidget->setForegroundRole(QPalette::ToolTipText); m_fileMetaDataWidget->setReadOnly(true); - connect(m_fileMetaDataWidget, SIGNAL(metaDataRequestFinished(KFileItemList)), - this, SIGNAL(metaDataRequestFinished(KFileItemList))); QVBoxLayout* textLayout = new QVBoxLayout(); textLayout->addWidget(m_name); @@ -98,7 +114,33 @@ QPixmap FileMetaDataToolTip::preview() const void FileMetaDataToolTip::setName(const QString& name) { - m_name->setText(name); + QTextOption textOption; + textOption.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere); + + const QString processedName = Qt::mightBeRichText(name) ? name : KStringHandler::preProcessWrap(name); + + QTextLayout textLayout(processedName); + textLayout.setFont(m_name->font()); + textLayout.setTextOption(textOption); + + QString wrappedText; + wrappedText.reserve(processedName.length()); + + // wrap the text to fit into the maximum width of m_name + textLayout.beginLayout(); + QTextLine line = textLayout.createLine(); + while (line.isValid()) { + line.setLineWidth(m_name->maximumWidth()); + wrappedText += processedName.midRef(line.textStart(), line.textLength()); + + line = textLayout.createLine(); + if (line.isValid()) { + wrappedText += QChar::LineSeparator; + } + } + textLayout.endLayout(); + + m_name->setText(wrappedText); } QString FileMetaDataToolTip::name() const @@ -116,21 +158,3 @@ KFileItemList FileMetaDataToolTip::items() const return m_fileMetaDataWidget->items(); } -void FileMetaDataToolTip::paintEvent(QPaintEvent* event) -{ - QStylePainter painter(this); - QStyleOptionFrame option; - option.init(this); - painter.drawPrimitive(QStyle::PE_PanelTipLabel, option); - painter.end(); - - QWidget::paintEvent(event); -} - -void FileMetaDataToolTip::showEvent(QShowEvent *) -{ - Plasma::WindowEffects::overrideShadow(winId(), true); - Plasma::WindowEffects::enableBlurBehind(winId(), true, mask()); -} - -#include "filemetadatatooltip.moc"