- m_generatingPreview = true;
- KIO::PreviewJob* job = KIO::filePreview(KFileItemList() << m_item,
- PREVIEW_WIDTH,
- PREVIEW_HEIGHT);
-
- connect(job, SIGNAL(gotPreview(const KFileItem&, const QPixmap&)),
- this, SLOT(setPreviewPix(const KFileItem&, const QPixmap&)));
- connect(job, SIGNAL(failed(const KFileItem&)),
- this, SLOT(previewFailed(const KFileItem&)));
-}
-
-
-void ToolTipManager::setPreviewPix(const KFileItem& item,
- const QPixmap& pixmap)
-{
- if (m_item.url() != item.url()) {
- m_generatingPreview = false;
- return;
- }
-
- if (m_previewIsLate) {
- // always use the maximal width
- QPixmap paddedImage(QSize(PREVIEW_WIDTH, pixmap.height()));
- paddedImage.fill(Qt::transparent);
- QPainter painter(&paddedImage);
- painter.drawPixmap((PREVIEW_WIDTH - pixmap.width()) / 2, 0, pixmap);
- m_pix = paddedImage;
- } else {
- m_pix = pixmap;
- }
- m_preview = true;
- m_generatingPreview = false;
-}
-
-void ToolTipManager::previewFailed(const KFileItem& item)
-{
- Q_UNUSED(item);
- m_generatingPreview = false;
+ QWidget* tipContent = new QWidget();
+
+ // add pixmap
+ QLabel* pixmapLabel = new QLabel(tipContent);
+ pixmapLabel->setPixmap(pixmap);
+ pixmapLabel->setFixedSize(pixmap.size());
+
+ // add item name
+ QLabel* nameLabel = new QLabel(tipContent);
+ nameLabel->setText(m_item.text());
+ nameLabel->setWordWrap(true);
+ QFont font = nameLabel->font();
+ font.setBold(true);
+ nameLabel->setFont(font);
+ nameLabel->setAlignment(Qt::AlignHCenter);
+ nameLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+
+ // add meta data
+ KMetaDataWidget* metaDataWidget = new KMetaDataWidget(tipContent);
+ metaDataWidget->setModel(new KMetaDataModel(tipContent));
+ metaDataWidget->setForegroundRole(QPalette::ToolTipText);
+ metaDataWidget->setItem(m_item);
+ metaDataWidget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+ metaDataWidget->setReadOnly(true);
+
+ // the stretchwidget allows the metadata widget to be top aligned and fills
+ // the remaining vertical space
+ QWidget* stretchWidget = new QWidget(tipContent);
+ stretchWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);
+
+ QWidget* textContainer = new QWidget(tipContent);
+ QVBoxLayout* textLayout = new QVBoxLayout(textContainer);
+ textLayout->addWidget(nameLabel);
+ textLayout->addWidget(new KSeparator());
+ textLayout->addWidget(metaDataWidget);
+ textLayout->addWidget(stretchWidget);
+
+ QHBoxLayout* tipLayout = new QHBoxLayout(tipContent);
+ tipLayout->setMargin(0);
+ tipLayout->addWidget(pixmapLabel);
+ tipLayout->addWidget(textContainer);
+
+ return tipContent;