}
}
-QString KStandardItemListWidget::elideRightKeepExtension(const QString &text, int elidingWidth) const
-{
- const auto extensionIndex = text.lastIndexOf('.');
- if (extensionIndex != -1) {
- // has file extension
- const auto extensionLength = text.length() - extensionIndex;
- const auto extensionWidth = m_customizedFontMetrics.horizontalAdvance(text.right(extensionLength));
- if (elidingWidth > extensionWidth && extensionLength < 6 && (float(extensionWidth) / float(elidingWidth)) < 0.3) {
- // if we have room to display the file extension and the extension is not too long
- QString ret = m_customizedFontMetrics.elidedText(text.chopped(extensionLength), Qt::ElideRight, elidingWidth - extensionWidth);
- ret.append(QStringView(text).right(extensionLength));
- return ret;
- }
- }
- return m_customizedFontMetrics.elidedText(text, Qt::ElideRight, elidingWidth);
-}
-
QString KStandardItemListWidget::escapeString(const QString &text) const
{
QString escaped(text);
qreal lastLineWidth;
do {
QString lastTextLine = nameText.mid(line.textStart());
- lastTextLine = elideRightKeepExtension(lastTextLine, elidingWidth);
+ lastTextLine = m_customizedFontMetrics.elidedText(lastTextLine, Qt::ElideMiddle, elidingWidth);
const QString elidedText = nameText.left(line.textStart()) + lastTextLine;
nameTextInfo->staticText.setText(elidedText);
textLine.setLineWidth(maxWidth);
requiredWidth = textLine.naturalTextWidth();
if (requiredWidth > maxWidth) {
- const QString elidedText = elideRightKeepExtension(text, maxWidth);
+ const QString elidedText = m_customizedFontMetrics.elidedText(text, Qt::ElideMiddle, maxWidth);
textInfo->staticText.setText(elidedText);
requiredWidth = m_customizedFontMetrics.horizontalAdvance(elidedText);
} else if (role == "rating") {
qreal requiredWidth = m_customizedFontMetrics.horizontalAdvance(text);
if (requiredWidth > maxWidth) {
requiredWidth = maxWidth;
- const QString elidedText = elideRightKeepExtension(text, maxWidth);
+ const QString elidedText = m_customizedFontMetrics.elidedText(text, Qt::ElideMiddle, maxWidth);
textInfo->staticText.setText(elidedText);
}
}
if (requiredWidth > availableTextWidth) {
- text = elideRightKeepExtension(text, availableTextWidth);
+ text = m_customizedFontMetrics.elidedText(text, Qt::ElideMiddle, availableTextWidth);
requiredWidth = m_customizedFontMetrics.horizontalAdvance(text);
}