#include "filemetadatatooltip.h"
#include <KColorScheme>
-#include <kfilemetadatawidget.h>
#include <KSeparator>
-#include <KWindowSystem>
+// For the blurred tooltip background
+#include <KWindowEffects>
+#include <KStringHandler>
+#include <QTextDocument>
#include <QLabel>
#include <QStyleOptionFrame>
#include <QStylePainter>
#include <QVBoxLayout>
+#include <QTextLayout>
+#include <QTextLine>
-// For the blurred tooltip background
-#include <plasma/windoweffects.h>
+#ifndef HAVE_BALOO
+#include <KFileMetaDataWidget>
+#else
+#include <Baloo/FileMetaDataWidget>
+#endif
FileMetaDataToolTip::FileMetaDataToolTip(QWidget* parent) :
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);
// 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);
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
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"