// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #pragma once #include "selectioncontext.h" #include #include #include #include #include namespace QmlDesigner { class LayoutInGridLayout { public: static void ensureLayoutImport(const SelectionContext &context); static void layout(const SelectionContext &context); static void reparentToNodeAndRemovePositionForModelNodes(const ModelNode &parentModelNode, const QList &modelNodeList); static void setSizeAsPreferredSize(const QList &modelNodeList); private: using LessThan = std::function; LayoutInGridLayout(const SelectionContext &selectionContext); void doIt(); int columnCount() const; int rowCount() const; void collectItemNodes(); void collectOffsets(); void sortOffsets(); void calculateGridOffsets(); void removeEmtpyRowsAndColumns(); void initializeCells(); void markUsedCells(); void fillEmptyCells(); void setSpanning(const ModelNode &layoutNode); void removeSpacersBySpanning(QList &nodes); LessThan lessThan(); const SelectionContext m_selectionContext; QList m_qmlItemNodes; QmlItemNode m_parentNode; QList m_layoutedNodes; QList m_spacerNodes; QVector m_xTopOffsets; QVector m_xBottomOffsets; QVector m_yTopOffsets; QVector m_yBottomOffsets; QVector m_cells; QVector m_rows; QVector m_columns; int m_startX; int m_startY; }; } //QmlDesigner