summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--filestreewidget.cpp1
-rw-r--r--hoverwindow.cpp30
-rw-r--r--hoverwindow.h1
3 files changed, 32 insertions, 0 deletions
diff --git a/filestreewidget.cpp b/filestreewidget.cpp
index bc60541..b6189c5 100644
--- a/filestreewidget.cpp
+++ b/filestreewidget.cpp
@@ -424,6 +424,7 @@ void FilesTreeView::doHover(const QModelIndex &idx){
}
}
mHoverWin->setPixmap(pm, scale);
+ mHoverWin->setCaption(idx.data(FilesTreeModel::FileNameRole).toString());
mHoverWin->setPos();
mHoverWin->setVisible(true);
}
diff --git a/hoverwindow.cpp b/hoverwindow.cpp
index e9fcc64..b478879 100644
--- a/hoverwindow.cpp
+++ b/hoverwindow.cpp
@@ -12,6 +12,14 @@
#include <QSize>
#include <QTextDocument>
#include <QSettings>
+#include <QPixmap>
+#include <QImage>
+#include <QPainter>
+#include <QFontMetrics>
+#include <QBrush>
+#include <QPen>
+#include <QColor>
+#include <QApplication>
#include "hoverwindow.h"
#include "smglobals.h"
@@ -89,6 +97,28 @@ void HoverWindow::setData(const QList<QVariant> &data){
setContent(data.at(0).toString(), dataList);
}
+void HoverWindow::setCaption(const QString &caption){
+ const QPixmap *pm = mLabel->pixmap();
+ if(!pm){
+ return;
+ }
+ QFontMetrics fm = qApp->fontMetrics();
+ QString elidedCap = fm.elidedText(caption, Qt::ElideMiddle, pm->size().width() - 18, Qt::TextSingleLine);
+ QSize captionSize = fm.size(Qt::TextSingleLine, elidedCap);
+ QImage img = pm->toImage();
+ QPainter *p = new QPainter(&img);
+ QColor bgColor(Qt::white);
+ p->setBrush(QBrush(bgColor));
+ p->setPen(Qt::NoPen);
+ qreal xStart = (pm->size().width() - captionSize.width()) / 2.0;
+ QRectF bgRect(xStart, 5, captionSize.width() + 6, captionSize.height());
+ p->drawRect(bgRect);
+ p->setPen(Qt::black);
+ p->drawText(bgRect.topLeft().x() + 3, bgRect.topLeft().y() + fm.ascent(), elidedCap);
+ delete p;
+ mLabel->setPixmap(QPixmap::fromImage(img));
+}
+
int HoverWindow::pixmapHeight() const{
const QPixmap *pm = mLabel->pixmap();
return pm ? pm->height() : 0;
diff --git a/hoverwindow.h b/hoverwindow.h
index af2f084..6e94a3e 100644
--- a/hoverwindow.h
+++ b/hoverwindow.h
@@ -23,6 +23,7 @@ class HoverWindow : public QWidget {
void setContent(const QString &parent, const QStringList &children);
void setPixmap(const QPixmap &pm, bool scale = true);
void setData(const QList<QVariant> &data);
+ void setCaption(const QString &caption);
int pixmapHeight() const;
void setPos();
QPoint hoverOffset() const { return mHoverOffset; }