8#include "decorationlabel.h"
10#include <QDesktopServices>
13#include <QResizeEvent>
19 , mDecorationElement(e)
20 , mShortText(e->shortText())
21 , mLongText(e->longText())
22 , mExtensiveText(e->extensiveText())
23 , mPixmap(e->newPixmap(size()))
28 connect(e, &CalendarDecoration::Element::gotNewExtensiveText,
this, &DecorationLabel::setExtensiveText);
29 connect(e, &CalendarDecoration::Element::gotNewLongText,
this, &DecorationLabel::setLongText);
30 connect(e, &CalendarDecoration::Element::gotNewPixmap,
this, &DecorationLabel::setPixmap);
31 connect(e, &CalendarDecoration::Element::gotNewShortText,
this, &DecorationLabel::setShortText);
32 connect(e, &CalendarDecoration::Element::gotNewUrl,
this, &DecorationLabel::setUrl);
33 squeezeContentsToLabel();
36DecorationLabel::DecorationLabel(
const QString &shortText,
43 , mShortText(shortText)
45 , mExtensiveText(extensiveText)
50 squeezeContentsToLabel();
53DecorationLabel::~DecorationLabel()
55 delete mDecorationElement;
58void DecorationLabel::mouseReleaseEvent(QMouseEvent *event)
62 switch (
event->button()) {
64 if (!mUrl.isEmpty()) {
76void DecorationLabel::resizeEvent(QResizeEvent *event)
78 mPixmap = mDecorationElement->newPixmap(
event->size());
80 squeezeContentsToLabel();
83void DecorationLabel::setExtensiveText(
const QString &text)
85 mExtensiveText =
text;
86 squeezeContentsToLabel();
89void DecorationLabel::setLongText(
const QString &text)
92 squeezeContentsToLabel();
95void DecorationLabel::setPixmap(
const QPixmap &pixmap)
98 squeezeContentsToLabel();
101void DecorationLabel::setShortText(
const QString &text)
104 squeezeContentsToLabel();
107void DecorationLabel::setText(
const QString &text)
112void DecorationLabel::setUrl(
const QUrl &url)
132void DecorationLabel::squeezeContentsToLabel()
134 if (!mAutomaticSqueeze) {
140 int labelWidth =
size().width();
141 int longTextWidth = fm.boundingRect(mLongText).width();
142 int extensiveTextWidth = fm.boundingRect(mExtensiveText).width();
144 if (!mPixmap.isNull()) {
146 }
else if ((!mExtensiveText.isEmpty()) && (extensiveTextWidth <= labelWidth)) {
147 useExtensiveText(
true);
148 }
else if ((!mLongText.isEmpty()) && (longTextWidth <= labelWidth)) {
163void DecorationLabel::useDefaultText()
165 mAutomaticSqueeze =
false;
166 squeezeContentsToLabel();
169void DecorationLabel::useExtensiveText(
bool allowAutomaticSqueeze)
171 mAutomaticSqueeze = allowAutomaticSqueeze;
176void DecorationLabel::useLongText(
bool allowAutomaticSqueeze)
178 mAutomaticSqueeze = allowAutomaticSqueeze;
180 setToolTip(mExtensiveText.isEmpty() ? QString() : mExtensiveText);
183void DecorationLabel::usePixmap(
bool allowAutomaticSqueeze)
185 mAutomaticSqueeze = allowAutomaticSqueeze;
187 setToolTip(mExtensiveText.isEmpty() ? mLongText : mExtensiveText);
190void DecorationLabel::useShortText(
bool allowAutomaticSqueeze)
192 mAutomaticSqueeze = allowAutomaticSqueeze;
194 setToolTip(mExtensiveText.isEmpty() ? mLongText : mExtensiveText);
197#include "moc_decorationlabel.cpp"
Class for calendar decoration elements.
Namespace EventViews provides facilities for displaying incidences, including events,...
bool openUrl(const QUrl &url)
void setUnderline(bool enable)
virtual bool event(QEvent *e) override
void setAlignment(Qt::Alignment)
virtual QSize minimumSizeHint() const const override
virtual void mouseReleaseEvent(QMouseEvent *ev) override
void setWordWrap(bool on)
void setHeight(int height)
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)
bool isEmpty() const const