Core: optimize search result item text generation

Do not append an alignment string if no additional information needs
to be aligned.

Change-Id: Ia40c1b683fe20af275974d98a74d56b10970e908
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
David Schulz
2022-11-21 13:33:45 +01:00
parent 5b6bf29143
commit 8ff969d149

View File

@@ -37,32 +37,28 @@ static std::pair<int, QString> lineNumberInfo(const QStyleOptionViewItem &option
} }
// Aligns text by appending spaces // Aligns text by appending spaces
static QPair<QString, QString> align(QString text, const QString& containingFunction) { static QString align(QString text)
{
constexpr int minimumTextSize = 80; constexpr int minimumTextSize = 80;
constexpr int textSizeIncrement = 20; constexpr int textSizeIncrement = 20;
int textSize = ((text.size() / textSizeIncrement) + 1) * textSizeIncrement; int textSize = ((text.size() / textSizeIncrement) + 1) * textSizeIncrement;
textSize = std::max(minimumTextSize, textSize); textSize = std::max(minimumTextSize, textSize);
text.resize(textSize, ' '); text.resize(textSize, ' ');
return QPair<QString, QString>{std::move(text), containingFunction}; return text;
} }
static QPair<QString, QString> itemText(const QModelIndex &index) static QPair<QString, QString> itemText(const QModelIndex &index)
{ {
QString text = index.data(Qt::DisplayRole).toString(); QString text = index.data(Qt::DisplayRole).toString();
// show number of subresults in displayString // show number of subresults in displayString
QString containingFunction; if (index.model()->hasChildren(index))
const auto contFnName = index.data(ItemDataRoles::ContainingFunctionNameRole).toString(); text += " (" + QString::number(index.model()->rowCount(index)) + ')';
if (contFnName.length())
containingFunction = QLatin1String("[in ") + contFnName + QLatin1String("]");
if (index.model()->hasChildren(index)) { const auto functionName = index.data(ItemDataRoles::ContainingFunctionNameRole).toString();
QString textAndCount{text + QLatin1String(" (") if (!functionName.isEmpty())
+ QString::number(index.model()->rowCount(index)) + QLatin1Char(')')}; return {align(std::move(text)), "[in " + functionName + "]"};
return {text, {}};
return align(std::move(textAndCount), containingFunction);
}
return align(std::move(text), containingFunction);
} }
LayoutInfo SearchResultTreeItemDelegate::getLayoutInfo(const QStyleOptionViewItem &option, LayoutInfo SearchResultTreeItemDelegate::getLayoutInfo(const QStyleOptionViewItem &option,