Skip to content

Commit

Permalink
fix(build): dlabel build failed
Browse files Browse the repository at this point in the history
Some compilation condition adjustments
  • Loading branch information
kegechen committed Oct 24, 2024
1 parent acc60fb commit e235f12
Showing 1 changed file with 68 additions and 104 deletions.
172 changes: 68 additions & 104 deletions src/widgets/dlabel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ DWIDGET_BEGIN_NAMESPACE
\a parent The argument is sent to the QLabel constructor.
*/
DLabel::DLabel(QWidget *parent, Qt::WindowFlags f)
: QLabel(parent, f), DObject(*new DLabelPrivate(this))
: QLabel(parent, f)
, DObject(*new DLabelPrivate(this))
{
D_D(DLabel);
d->init();
Expand All @@ -41,14 +42,16 @@ DLabel::DLabel(QWidget *parent, Qt::WindowFlags f)
\a parent Specifying the parent object.
*/
DLabel::DLabel(const QString &text, QWidget *parent)
: QLabel(text, parent), DObject(*new DLabelPrivate(this))
: QLabel(text, parent)
, DObject(*new DLabelPrivate(this))
{
D_D(DLabel);
d->init();
}

DLabel::~DLabel()
{

}

/*!
Expand Down Expand Up @@ -83,8 +86,7 @@ void DLabel::setForegroundRole(DPalette::ColorType color)
void DLabel::setElideMode(Qt::TextElideMode elideMode)
{
D_D(DLabel);
if (d->elideMode == elideMode)
{
if (d->elideMode == elideMode) {
return;
}
d->elideMode = elideMode;
Expand All @@ -109,7 +111,8 @@ Qt::TextElideMode DLabel::elideMode() const
\a parent Parent control
*/
DLabel::DLabel(DLabelPrivate &dd, QWidget *parent)
: QLabel(parent), DObject(dd)
: QLabel(parent)
, DObject(dd)
{
dd.init();
}
Expand All @@ -123,8 +126,7 @@ void DLabel::initPainter(QPainter *painter) const
{
D_DC(DLabel);
QLabel::initPainter(painter);
if (d->color != DPalette::NoType)
{
if (d->color != DPalette::NoType) {
QBrush color = DPaletteHelper::instance()->palette(this).brush(d->color);
painter->setPen(QPen(color.color()));
}
Expand All @@ -139,38 +141,34 @@ void DLabel::initPainter(QPainter *painter) const
void DLabel::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event)
QLabelPrivate *d = static_cast<QLabelPrivate *>(d_ptr.data());
QLabelPrivate *d = static_cast<QLabelPrivate*>(d_ptr.data());
QStyle *style = QWidget::style();
QPainter painter(this);
drawFrame(&painter);
QRect cr = contentsRect();
cr.adjust(d->margin, d->margin, -d->margin, -d->margin);
int align = QStyle::visualAlignment(d->isTextLabel ? DLabelPrivate::textDirection(d)
: layoutDirection(),
QFlag(d->align));
: layoutDirection(), QFlag(d->align));

#if QT_CONFIG(movie)
if (d->movie && !d->movie->currentPixmap().isNull())
{
if (d->movie && !d->movie->currentPixmap().isNull()) {
if (d->scaledcontents)
style->drawItemPixmap(&painter, cr, align, d->movie->currentPixmap().scaled(cr.size()));
else
style->drawItemPixmap(&painter, cr, align, d->movie->currentPixmap());
}
else
#endif
if (d->isTextLabel)
{
if (d->isTextLabel) {
QRectF lr = DLabelPrivate::layoutRect(d).toAlignedRect();
QStyleOption opt;
opt.initFrom(this);

if (d->control)
{
if (d->control) {
#ifndef QT_NO_SHORTCUT
const bool underline = (bool)style->styleHint(QStyle::SH_UnderlineShortcut, 0, this, 0);
if (d->shortcutId != 0 && underline != d->shortcutCursor.charFormat().fontUnderline())
{
if (d->shortcutId != 0
&& underline != d->shortcutCursor.charFormat().fontUnderline()) {
QTextCharFormat fmt;
fmt.setFontUnderline(underline);
d->shortcutCursor.mergeCharFormat(fmt);
Expand All @@ -181,12 +179,9 @@ void DLabel::paintEvent(QPaintEvent *event)
// Adjust the palette
context.palette = opt.palette;

if (d_func()->color != DPalette::NoType)
{
if (d_func()->color != DPalette::NoType) {
context.palette.setBrush(QPalette::Text, DPaletteHelper::instance()->palette(this).brush(d_func()->color));
}
else if (foregroundRole() != QPalette::Text && isEnabled())
{
} else if (foregroundRole() != QPalette::Text && isEnabled()) {
context.palette.setColor(QPalette::Text, context.palette.color(foregroundRole()));
}

Expand All @@ -196,40 +191,33 @@ void DLabel::paintEvent(QPaintEvent *event)
d->control->setPalette(context.palette);
d->control->drawContents(&painter, QRectF(), this);
painter.restore();
}
else
{
} else {
int flags = align | (DLabelPrivate::textDirection(d) == Qt::LeftToRight ? Qt::TextForceLeftToRight
: Qt::TextForceRightToLeft);
if (d->hasShortcut)
{
if (d->hasShortcut) {
flags |= Qt::TextShowMnemonic;
if (!style->styleHint(QStyle::SH_UnderlineShortcut, &opt, this))
flags |= Qt::TextHideMnemonic;
}

QPalette palette = opt.palette;

if (d_func()->color != DPalette::NoType)
{
if (d_func()->color != DPalette::NoType) {
palette.setBrush(foregroundRole(), DPaletteHelper::instance()->palette(this).brush(d_func()->color));
}

QString text = d->text;
if (elideMode() != Qt::ElideNone)
{
if (elideMode() != Qt::ElideNone) {
const QFontMetrics fm(fontMetrics());
text = fm.elidedText(text, elideMode(), width(), Qt::TextShowMnemonic);
}
const DToolTip::ToolTipShowMode &toolTipShowMode = DToolTip::toolTipShowMode(this);
if (toolTipShowMode != DToolTip::Default)
{
const bool showToolTip = (toolTipShowMode == DToolTip::AlwaysShow) || ((toolTipShowMode == DToolTip::ShowWhenElided) && (d->text != text));
if (DToolTip::needUpdateToolTip(this, showToolTip))
{
if (toolTipShowMode != DToolTip::Default) {
const bool showToolTip = (toolTipShowMode == DToolTip::AlwaysShow)
|| ((toolTipShowMode == DToolTip::ShowWhenElided) && (d->text != text));
if (DToolTip::needUpdateToolTip(this, showToolTip)) {
QString toolTip;
if (showToolTip)
{
if (showToolTip) {
QTextOption textOption;
textOption.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
textOption.setTextDirection(opt.direction);
Expand All @@ -242,47 +230,38 @@ void DLabel::paintEvent(QPaintEvent *event)
}
style->drawItemText(&painter, lr.toRect(), flags, palette, isEnabled(), text, foregroundRole());
}
}
else
} else
#ifndef QT_NO_PICTURE
if (d->picture)
{
if (d->picture) {
QRect br = d->picture->boundingRect();
int rw = br.width();
int rh = br.height();
if (d->scaledcontents)
{
if (d->scaledcontents) {
painter.save();
painter.translate(cr.x(), cr.y());
painter.scale((double)cr.width() / rw, (double)cr.height() / rh);
painter.scale((double)cr.width()/rw, (double)cr.height()/rh);
painter.drawPicture(-br.x(), -br.y(), *d->picture);
painter.restore();
}
else
{
} else {
int xo = 0;
int yo = 0;
if (align & Qt::AlignVCenter)
yo = (cr.height() - rh) / 2;
yo = (cr.height()-rh)/2;
else if (align & Qt::AlignBottom)
yo = cr.height() - rh;
yo = cr.height()-rh;
if (align & Qt::AlignRight)
xo = cr.width() - rw;
xo = cr.width()-rw;
else if (align & Qt::AlignHCenter)
xo = (cr.width() - rw) / 2;
painter.drawPicture(cr.x() + xo - br.x(), cr.y() + yo - br.y(), *d->picture);
xo = (cr.width()-rw)/2;
painter.drawPicture(cr.x()+xo-br.x(), cr.y()+yo-br.y(), *d->picture);
}
}
else
} else
#endif
if (d->pixmap && !d->pixmap->isNull())
{
if (d->pixmap && !d->pixmap->isNull()) {
QPixmap pix;
if (d->scaledcontents)
{
if (d->scaledcontents) {
QSize scaledSize = cr.size() * devicePixelRatioF();
if (!d->scaledpixmap || d->scaledpixmap->size() != scaledSize)
{
if (!d->scaledpixmap || d->scaledpixmap->size() != scaledSize) {
#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
if (!d->cachedimage)
#endif
Expand All @@ -291,21 +270,17 @@ void DLabel::paintEvent(QPaintEvent *event)
delete d->scaledpixmap;
#else
#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
d->cachedimage = QImage(d->pixmap->toImage());
d->cachedimage = QImage(d->pixmap->toImage());
#endif
d->scaledpixmap.reset();
#endif
#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0)
QImage scaledImage =
d->cachedimage->scaled(scaledSize,
#else
d->scaledpixmap.reset();
d->scaledpixmap = d->pixmap->scaled(scaledSize,
#endif
Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
#else
d->scaledpixmap = d->pixmap->scaled(scaledSize,
Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
d->scaledpixmap = d->pixmap->scaled(scaledSize,
Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
#endif
#if QT_VERSION < QT_VERSION_CHECK(6, 4, 2)
d->scaledpixmap = new QPixmap(QPixmap::fromImage(scaledImage));
Expand All @@ -317,8 +292,7 @@ void DLabel::paintEvent(QPaintEvent *event)
d->scaledpixmap->setDevicePixelRatio(devicePixelRatioF());
}
pix = *d->scaledpixmap;
}
else
} else
pix = *d->pixmap;
QStyleOption opt;
opt.initFrom(this);
Expand All @@ -335,12 +309,12 @@ DLabelPrivate::DLabelPrivate(DLabel *q)

void DLabelPrivate::init()
{

}

Qt::LayoutDirection DLabelPrivate::textDirection(QLabelPrivate *d)
{
if (d->control)
{
if (d->control) {
QTextOption opt = d->control->document()->defaultTextOption();
return opt.textDirection();
}
Expand All @@ -350,18 +324,16 @@ Qt::LayoutDirection DLabelPrivate::textDirection(QLabelPrivate *d)

QRectF DLabelPrivate::documentRect(QLabelPrivate *d)
{
QLabel *q = qobject_cast<QLabel *>(d->q_ptr);
QLabel *q = qobject_cast<QLabel*>(d->q_ptr);
Q_ASSERT_X(d->isTextLabel, "documentRect", "document rect called for label that is not a text label!");
QRect cr = q->contentsRect();
cr.adjust(d->margin, d->margin, -d->margin, -d->margin);
const int align = QStyle::visualAlignment(d->isTextLabel ? textDirection(d)
: q->layoutDirection(),
QFlag(d->align));
: q->layoutDirection(), QFlag(d->align));
int m = d->indent;
if (m < 0 && q->frameWidth()) // no indent, but we do have a frame
m = q->fontMetrics().horizontalAdvance(QLatin1Char('x')) / 2 - d->margin;
if (m > 0)
{
if (m > 0) {
if (align & Qt::AlignLeft)
cr.setLeft(cr.left() + m);
if (align & Qt::AlignRight)
Expand All @@ -384,64 +356,56 @@ QRectF DLabelPrivate::layoutRect(QLabelPrivate *d)
qreal rh = d->control->document()->documentLayout()->documentSize().height();
qreal yo = 0;
if (d->align & Qt::AlignVCenter)
yo = qMax((cr.height() - rh) / 2, qreal(0));
yo = qMax((cr.height()-rh)/2, qreal(0));
else if (d->align & Qt::AlignBottom)
yo = qMax(cr.height() - rh, qreal(0));
yo = qMax(cr.height()-rh, qreal(0));
return QRectF(cr.x(), yo + cr.y(), cr.width(), cr.height());
}

void DLabelPrivate::ensureTextLayouted(QLabelPrivate *d)
{
if (d->textLayoutDirty)
{
if (d->textDirty)
{
if (d->control)
{
if (d->textLayoutDirty) {
if (d->textDirty) {
if (d->control) {
QTextDocument *doc = d->control->document();
if (d->textDirty)
{
#ifndef QT_NO_TEXTHTMLPARSER
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
if (d->textDirty) {
#ifndef QT_NO_TEXTHTMLPARSER
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
if (d->textformat == Qt::TextFormat::RichText)
#else
#else
if (d->isRichText)
#endif
#endif
doc->setHtml(d->text);
else
doc->setPlainText(d->text);
#else
#else
doc->setPlainText(d->text);
#endif
#endif
doc->setUndoRedoEnabled(false);

#ifndef QT_NO_SHORTCUT
if (d->hasShortcut)
{
#ifndef QT_NO_SHORTCUT
if (d->hasShortcut) {
// Underline the first character that follows an ampersand (and remove the others ampersands)
int from = 0;
bool found = false;
QTextCursor cursor;
while (!(cursor = d->control->document()->find((QLatin1String("&")), from)).isNull())
{
while (!(cursor = d->control->document()->find((QLatin1String("&")), from)).isNull()) {
cursor.deleteChar(); // remove the ampersand
cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor);
from = cursor.position();
if (!found && cursor.selectedText() != QLatin1String("&"))
{ // not a second &
if (!found && cursor.selectedText() != QLatin1String("&")) { //not a second &
found = true;
d->shortcutCursor = cursor;
}
}
}
#endif
#endif
}
}
d->textDirty = false;
}

if (d->control)
{
if (d->control) {
QTextDocument *doc = d->control->document();
QTextOption opt = doc->defaultTextOption();

Expand Down

0 comments on commit e235f12

Please sign in to comment.