From a8541126c49fd1653ff22ce6f3dad4431f427196 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Sat, 12 Apr 2025 01:15:46 +0200 Subject: [PATCH] QmlDesigner: Use std::ranges in ListModelEditorModel Change-Id: Icd0bfb1bf468169ecd90c17ab9946d6ceab88f8a Reviewed-by: Ali Kianian --- .../listmodeleditor/listmodeleditormodel.cpp | 58 ++++++++++--------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/src/plugins/qmldesigner/components/listmodeleditor/listmodeleditormodel.cpp b/src/plugins/qmldesigner/components/listmodeleditor/listmodeleditormodel.cpp index 02c1de2e0ad..6d5197b1bb5 100644 --- a/src/plugins/qmldesigner/components/listmodeleditor/listmodeleditormodel.cpp +++ b/src/plugins/qmldesigner/components/listmodeleditor/listmodeleditormodel.cpp @@ -15,9 +15,12 @@ #include #include #include +#include namespace QmlDesigner { +namespace { + class ListModelItem : public QStandardItem { public: @@ -92,7 +95,6 @@ public: bool hasInvalidValue = false; }; -namespace { QList getPropertyNames(const ModelNode &listElementNode) { auto properties = listElementNode.variantProperties(); @@ -103,7 +105,7 @@ QList getPropertyNames(const ModelNode &listElementNode) for (const auto &property : properties) names.push_back(property.name().toByteArray()); - std::sort(names.begin(), names.end()); + std::ranges::sort(names); return names; } @@ -114,11 +116,7 @@ QList mergeProperyNames(const QList &first, QList merged; merged.reserve(first.size() + second.size()); - std::set_union(first.begin(), - first.end(), - second.begin(), - second.end(), - std::back_inserter(merged)); + std::ranges::set_union(first, second, std::back_inserter(merged)); return merged; } @@ -262,7 +260,7 @@ void ListModelEditorModel::addColumn(const QString &columnName) { PropertyName propertyName = columnName.toUtf8(); - auto found = std::lower_bound(m_propertyNames.begin(), m_propertyNames.end(), propertyName); + auto found = std::ranges::lower_bound(m_propertyNames, propertyName); if (found != m_propertyNames.end() && *found == propertyName) return; @@ -298,21 +296,21 @@ void ListModelEditorModel::removeColumn(int column) void ListModelEditorModel::removeColumns(const QList &indices) { + using std::ranges::views::reverse; + std::vector columns = filterColumns(indices); - std::reverse(columns.begin(), columns.end()); - - for (int column : columns) + for (int column : columns | reverse) removeColumn(column); } void ListModelEditorModel::removeRows(const QList &indices) { + using std::ranges::views::reverse; + std::vector rows = filterRows(indices); - std::reverse(rows.begin(), rows.end()); - - for (int row : rows) + for (int row : rows | reverse) removeRow(row); } @@ -330,7 +328,7 @@ void ListModelEditorModel::renameColumn(int oldColumn, const QString &newColumnN { const PropertyName newPropertyName = newColumnName.toUtf8(); - auto found = std::lower_bound(m_propertyNames.begin(), m_propertyNames.end(), newPropertyName); + auto found = std::ranges::lower_bound(m_propertyNames, newPropertyName); if (found != m_propertyNames.end() && *found == newPropertyName) return; @@ -374,6 +372,8 @@ QItemSelection ListModelEditorModel::moveRowsUp(const QList &indice QItemSelection ListModelEditorModel::moveRowsDown(const QList &indices) { + using std::ranges::views::reverse; + std::vector rows = filterRows(indices); if (rows.empty() || rows.back() >= (rowCount() - 1)) @@ -381,29 +381,35 @@ QItemSelection ListModelEditorModel::moveRowsDown(const QList &indi auto nodeListProperty = m_listModelNode.defaultNodeListProperty(); - std::reverse(rows.begin(), rows.end()); - - for (int row : rows) { + for (int row : rows | reverse) { insertRow(row + 1, takeRow(row)); nodeListProperty.slide(row, row + 1); } - return {index(rows.front() + 1, 0), index(rows.back() + 1, columnCount() - 1)}; + return {index(rows.back() + 1, 0), index(rows.front() + 1, columnCount() - 1)}; } +namespace { +void removeDuplicates(std::vector &container) +{ + std::ranges::sort(container); + + auto removed = std::ranges::unique(container); + container.erase(removed.begin(), removed.end()); +} +} // namespace + std::vector ListModelEditorModel::filterColumns(const QList &indices) { std::vector columns; - columns.reserve(indices.size()); + columns.reserve(Utils::usize(indices)); for (QModelIndex index : indices) { if (index.column() >= 0) columns.push_back(index.column()); } - std::sort(columns.begin(), columns.end()); - - columns.erase(std::unique(columns.begin(), columns.end()), columns.end()); + removeDuplicates(columns); return columns; } @@ -411,16 +417,14 @@ std::vector ListModelEditorModel::filterColumns(const QList &i std::vector ListModelEditorModel::filterRows(const QList &indices) { std::vector rows; - rows.reserve(indices.size()); + rows.reserve(Utils::usize(indices)); for (QModelIndex index : indices) { if (index.row() >= 0) rows.push_back(index.row()); } - std::sort(rows.begin(), rows.end()); - - rows.erase(std::unique(rows.begin(), rows.end()), rows.end()); + removeDuplicates(rows); return rows; }