Rework MessageDelegate in cpp

Rework MessageDelegate to be mostly a cpp class. This allows us to only load the components that are actually needed saving memory.

In testing using memtest it saved ~30% versus the current implementation.
This commit is contained in:
James Graham
2025-05-05 16:25:40 +01:00
parent 97d5be9d81
commit f4799a4287
16 changed files with 1089 additions and 537 deletions

View File

@@ -26,14 +26,12 @@ void DelegateSizeHelper::setParentItem(QQuickItem *parentItem)
if (m_parentItem) {
connect(m_parentItem, &QQuickItem::widthChanged, this, [this]() {
Q_EMIT availablePercentageWidthChanged();
Q_EMIT availableWidthChanged();
calcWidthsChanged();
});
}
Q_EMIT parentItemChanged();
Q_EMIT availablePercentageWidthChanged();
Q_EMIT availableWidthChanged();
calcWidthsChanged();
}
qreal DelegateSizeHelper::leftPadding() const
@@ -48,8 +46,7 @@ void DelegateSizeHelper::setLeftPadding(qreal leftPadding)
}
m_leftPadding = leftPadding;
Q_EMIT leftPaddingChanged();
Q_EMIT availablePercentageWidthChanged();
Q_EMIT availableWidthChanged();
calcWidthsChanged();
}
qreal DelegateSizeHelper::rightPadding() const
@@ -64,8 +61,7 @@ void DelegateSizeHelper::setRightPadding(qreal rightPadding)
}
m_rightPadding = rightPadding;
Q_EMIT rightPaddingChanged();
Q_EMIT availablePercentageWidthChanged();
Q_EMIT availableWidthChanged();
calcWidthsChanged();
}
qreal DelegateSizeHelper::startBreakpoint() const
@@ -80,6 +76,7 @@ void DelegateSizeHelper::setStartBreakpoint(qreal startBreakpoint)
}
m_startBreakpoint = startBreakpoint;
Q_EMIT startBreakpointChanged();
calcWidthsChanged();
}
qreal DelegateSizeHelper::endBreakpoint() const
@@ -94,6 +91,7 @@ void DelegateSizeHelper::setEndBreakpoint(qreal endBreakpoint)
}
m_endBreakpoint = endBreakpoint;
Q_EMIT endBreakpointChanged();
calcWidthsChanged();
}
int DelegateSizeHelper::startPercentWidth() const
@@ -108,6 +106,7 @@ void DelegateSizeHelper::setStartPercentWidth(int startPercentWidth)
}
m_startPercentWidth = startPercentWidth;
Q_EMIT startPercentWidthChanged();
calcWidthsChanged();
}
int DelegateSizeHelper::endPercentWidth() const
@@ -122,6 +121,7 @@ void DelegateSizeHelper::setEndPercentWidth(int endPercentWidth)
}
m_endPercentWidth = endPercentWidth;
Q_EMIT endPercentWidthChanged();
calcWidthsChanged();
}
qreal DelegateSizeHelper::maxWidth() const
@@ -143,6 +143,7 @@ void DelegateSizeHelper::setMaxWidth(qreal maxWidth)
}
m_maxWidth = maxWidth;
Q_EMIT maxWidthChanged();
calcWidthsChanged();
}
qreal DelegateSizeHelper::maxAvailableWidth() const
@@ -188,4 +189,20 @@ qreal DelegateSizeHelper::availableWidth() const
return std::round(std::min(absoluteWidth, maxWidth()));
}
qreal DelegateSizeHelper::leftX() const
{
return m_leftPadding + (maxAvailableWidth() - availableWidth()) / 2;
}
qreal DelegateSizeHelper::rightX() const
{
return m_leftPadding + maxAvailableWidth() - (maxAvailableWidth() - availableWidth()) / 2;
}
void DelegateSizeHelper::calcWidthsChanged()
{
Q_EMIT availablePercentageWidthChanged();
Q_EMIT availableWidthChanged();
}
#include "moc_delegatesizehelper.cpp"