LeechCraft 0.6.70-18450-gabe19ee3b0
Modular cross-platform feature rich live environment.
Loading...
Searching...
No Matches
elidinglabel.cpp
Go to the documentation of this file.
1/**********************************************************************
2 * LeechCraft - modular cross-platform feature rich internet client.
3 * Copyright (C) 2006-2014 Georg Rudoy
4 *
5 * Distributed under the Boost Software License, Version 1.0.
6 * (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7 **********************************************************************/
8
9#include "elidinglabel.h"
10
11#include <QEvent>
12
13namespace LC::Util
14{
16 : QLabel { parent }
17 {
18 setTextFormat (Qt::PlainText);
19 }
20
21 void ElidingLabel::SetFullText (const QString& text)
22 {
23 if (FullText_ == text)
24 return;
25
26 FullText_ = text;
27 UpdateElide ();
28 }
29
31 {
32 return FullText_;
33 }
34
35 void ElidingLabel::SetElideMode (Qt::TextElideMode mode)
36 {
37 if (ElideMode_ == mode)
38 return;
39
40 ElideMode_ = mode;
41 UpdateElide ();
42 }
43
44 Qt::TextElideMode ElidingLabel::GetElideMode () const
45 {
46 return ElideMode_;
47 }
48
50 {
51 const auto& cm = contentsMargins ();
52
53 auto result = QLabel::sizeHint ();
54 const auto textWidth = fontMetrics ().horizontalAdvance (FullText_) + 1;
55 result.setWidth (std::max (result.width (), textWidth + cm.left () + cm.right ()));
56 return result;
57 }
58
59 void ElidingLabel::changeEvent (QEvent *ev)
60 {
61 QLabel::changeEvent (ev);
62 switch (ev->type ())
63 {
64 case QEvent::FontChange:
65 case QEvent::StyleChange:
66 case QEvent::ApplicationFontChange:
67 case QEvent::LayoutDirectionChange:
68 UpdateElide ();
69 break;
70 default:
71 break;
72 }
73 }
74
75 void ElidingLabel::resizeEvent (QResizeEvent *ev)
76 {
77 QLabel::resizeEvent (ev);
78 UpdateElide ();
79 }
80
81 void ElidingLabel::UpdateElide ()
82 {
83 const auto& fm = fontMetrics ();
84
85 const auto& elided = fm.elidedText (FullText_, ElideMode_, contentsRect ().width ());
86 setText (elided);
87 }
88}
void resizeEvent(QResizeEvent *) override
void SetElideMode(Qt::TextElideMode)
void SetFullText(const QString &)
ElidingLabel(QWidget *=nullptr)
QSize sizeHint() const override
void changeEvent(QEvent *) override
Qt::TextElideMode GetElideMode() const
QString GetFullText() const