summaryrefslogtreecommitdiffstats
path: root/hoverwindow.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2010-12-13 19:31:16 +0100
committerArno <am@disconnect.de>2010-12-13 19:31:16 +0100
commitc7bffca4cfc626c62c0eae6bc6b06d92cb2a8340 (patch)
treedcc9a9b47f05690052896d5747018ee087b5437e /hoverwindow.cpp
parent0336e3e0e2eb02f9ad8925f1def081d6e46d750b (diff)
downloadSheMov-c7bffca4cfc626c62c0eae6bc6b06d92cb2a8340.tar.gz
SheMov-c7bffca4cfc626c62c0eae6bc6b06d92cb2a8340.tar.bz2
SheMov-c7bffca4cfc626c62c0eae6bc6b06d92cb2a8340.zip
Set caption for HoverWindow
Implement a caption for HoverWindow. Used to show the filename when hovering.
Diffstat (limited to 'hoverwindow.cpp')
-rw-r--r--hoverwindow.cpp30
1 files changed, 30 insertions, 0 deletions
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;