InformationPanel: Improve video arrow overlay appearance

This commit is contained in:
Méven Car 2022-02-02 15:45:19 +01:00 committed by Méven Car
parent 487e95376d
commit 08a9aaad2c

View file

@ -385,22 +385,25 @@ void InformationPanelContent::showPreview(const KFileItem& item,
KIconLoader::global()->drawOverlays(item.overlays(), p, KIconLoader::Desktop);
if (m_isVideo) {
// adds a play arrow
// adds a play arrow overlay
auto maxDim = qMax(p.width(), p.height());
auto arrowSize = qMax(PLAY_ARROW_SIZE, maxDim / 8);
// compute relative pixel positions
const int zeroX = static_cast<int>((p.width() / 2 - PLAY_ARROW_SIZE / 2) / pixmap.devicePixelRatio());
const int zeroY = static_cast<int>((p.height() / 2 - PLAY_ARROW_SIZE / 2) / pixmap.devicePixelRatio());
const int zeroX = static_cast<int>((p.width() / 2 - arrowSize / 2) / pixmap.devicePixelRatio());
const int zeroY = static_cast<int>((p.height() / 2 - arrowSize / 2) / pixmap.devicePixelRatio());
QPolygon arrow;
arrow << QPoint(zeroX, zeroY);
arrow << QPoint(zeroX, zeroY + PLAY_ARROW_SIZE);
arrow << QPoint(zeroX + PLAY_ARROW_SIZE, zeroY + PLAY_ARROW_SIZE / 2);
arrow << QPoint(zeroX, zeroY + arrowSize);
arrow << QPoint(zeroX + arrowSize, zeroY + arrowSize / 2);
QPainterPath path;
path.addPolygon(arrow);
QLinearGradient gradient(QPointF(zeroX, zeroY),
QPointF(zeroX + PLAY_ARROW_SIZE,zeroY + PLAY_ARROW_SIZE));
QLinearGradient gradient(QPointF(zeroX, zeroY + arrowSize / 2),
QPointF(zeroX + arrowSize, zeroY + arrowSize / 2));
QColor whiteColor = Qt::white;
QColor blackColor = Qt::black;