From 011db4495d98932cbffa5fc2268ee1a3e2984aa6 Mon Sep 17 00:00:00 2001 From: Keshav Bhatt Date: Fri, 27 Jan 2023 02:57:48 +0530 Subject: chore: cleanup - move methods to page --- src/widgets/elidedlabel/elidedlabel.cpp | 52 +++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/widgets/elidedlabel/elidedlabel.cpp (limited to 'src/widgets/elidedlabel/elidedlabel.cpp') diff --git a/src/widgets/elidedlabel/elidedlabel.cpp b/src/widgets/elidedlabel/elidedlabel.cpp new file mode 100644 index 0000000..e870959 --- /dev/null +++ b/src/widgets/elidedlabel/elidedlabel.cpp @@ -0,0 +1,52 @@ +#include "elidedlabel.h" + +#include +#include +#include +#include + +ElidedLabel::ElidedLabel(QWidget *parent) + : QLabel(parent), m_elide_mode(Qt::ElideRight) { + setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred); +} + +ElidedLabel::ElidedLabel(const QString &txt, QWidget *parent) + : QLabel(txt, parent), m_elide_mode(Qt::ElideRight) { + setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred); +} + +ElidedLabel::ElidedLabel(const QString &txt, Qt::TextElideMode elideMode, + QWidget *parent) + : QLabel(txt, parent), m_elide_mode(elideMode) { + setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred); +} + +void ElidedLabel::setText(const QString &txt) { + QLabel::setText(txt); + cacheElidedText(geometry().width()); + setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred); +} + +void ElidedLabel::cacheElidedText(int w) { + m_cached_elided_text = fontMetrics().elidedText( + text(), m_elide_mode, w, (buddy() == nullptr) ? 0 : Qt::TextShowMnemonic); +} + +void ElidedLabel::resizeEvent(QResizeEvent *e) { + QLabel::resizeEvent(e); + cacheElidedText(e->size().width()); +} + +void ElidedLabel::paintEvent(QPaintEvent *e) { + if (m_elide_mode == Qt::ElideNone) { + QLabel::paintEvent(e); + } else { + QPainter p(this); + p.drawText(0, 0, geometry().width(), geometry().height(), + QStyle::visualAlignment(text().isRightToLeft() ? Qt::RightToLeft + : Qt::LeftToRight, + alignment()) | + ((buddy() == nullptr) ? 0 : Qt::TextShowMnemonic), + m_cached_elided_text); + } +} -- cgit v1.2.3