diff --git a/framework/src/qquicktreemodeladaptor.h b/framework/src/qquicktreemodeladaptor.h index 2f79f02b..78d623d8 100644 --- a/framework/src/qquicktreemodeladaptor.h +++ b/framework/src/qquicktreemodeladaptor.h @@ -1,166 +1,168 @@ /**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Quick Controls module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 3 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL3 included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 3 requirements ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 2.0 or (at your option) the GNU General ** Public license version 3 or any later version approved by the KDE Free ** Qt Foundation. The licenses are as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-2.0.html and ** https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef QQUICKTREEMODELADAPTOR_H #define QQUICKTREEMODELADAPTOR_H // // W A R N I N G // ------------- // // This file is not part of the Qt API. It exists purely as an // implementation detail. This header file may change from version to // version without notice, or even be removed. // // We mean it. // +#include "kube_export.h" + #include #include #include #include class QAbstractItemModel; -class QQuickTreeModelAdaptor1 : public QAbstractListModel +class KUBE_EXPORT QQuickTreeModelAdaptor1 : public QAbstractListModel { Q_OBJECT Q_PROPERTY(QAbstractItemModel *model READ model WRITE setModel NOTIFY modelChanged) Q_PROPERTY(QModelIndex rootIndex READ rootIndex WRITE setRootIndex RESET resetRootIndex NOTIFY rootIndexChanged) struct TreeItem; public: explicit QQuickTreeModelAdaptor1(QObject *parent = 0); QAbstractItemModel *model() const; const QModelIndex &rootIndex() const; void setRootIndex(const QModelIndex &idx); void resetRootIndex(); enum { DepthRole = Qt::UserRole - 5, ExpandedRole, HasChildrenRole, HasSiblingRole, ModelIndexRole }; QHash roleNames() const; int rowCount(const QModelIndex &parent = QModelIndex()) const; QVariant data(const QModelIndex &, int role) const; bool setData(const QModelIndex &index, const QVariant &value, int role); void clearModelData(); bool isVisible(const QModelIndex &index); bool childrenVisible(const QModelIndex &index); const QModelIndex &mapToModel(const QModelIndex &index) const; Q_INVOKABLE QModelIndex mapRowToModelIndex(int row) const; Q_INVOKABLE QItemSelection selectionForRowRange(const QModelIndex &fromIndex, const QModelIndex &toIndex) const; void showModelTopLevelItems(bool doInsertRows = true); void showModelChildItems(const TreeItem &parent, int start, int end, bool doInsertRows = true, bool doExpandPendingRows = true); int itemIndex(const QModelIndex &index) const; void expandPendingRows(bool doInsertRows = true); int lastChildIndex(const QModelIndex &index); void removeVisibleRows(int startIndex, int endIndex, bool doRemoveRows = true); void expandRow(int n); void collapseRow(int n); bool isExpanded(int row) const; Q_INVOKABLE bool isExpanded(const QModelIndex &) const; void dump() const; bool testConsistency(bool dumpOnFail = false) const; signals: void modelChanged(QAbstractItemModel *model); void rootIndexChanged(); void expanded(const QModelIndex &index); void collapsed(const QModelIndex &index); public slots: void expand(const QModelIndex &); void collapse(const QModelIndex &); void setModel(QAbstractItemModel *model); private slots: void modelHasBeenDestroyed(); void modelHasBeenReset(); void modelDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRigth, const QVector &roles); void modelLayoutAboutToBeChanged(const QList &parents, QAbstractItemModel::LayoutChangeHint hint); void modelLayoutChanged(const QList &parents, QAbstractItemModel::LayoutChangeHint hint); void modelRowsAboutToBeInserted(const QModelIndex & parent, int start, int end); void modelRowsAboutToBeMoved(const QModelIndex & sourceParent, int sourceStart, int sourceEnd, const QModelIndex & destinationParent, int destinationRow); void modelRowsAboutToBeRemoved(const QModelIndex & parent, int start, int end); void modelRowsInserted(const QModelIndex & parent, int start, int end); void modelRowsMoved(const QModelIndex & sourceParent, int sourceStart, int sourceEnd, const QModelIndex & destinationParent, int destinationRow); void modelRowsRemoved(const QModelIndex & parent, int start, int end); private: struct TreeItem { QPersistentModelIndex index; int depth; bool expanded; explicit TreeItem(const QModelIndex &idx = QModelIndex(), int d = 0, int e = false) : index(idx), depth(d), expanded(e) { } inline bool operator== (const TreeItem &other) const { return this->index == other.index; } }; QPointer m_model; QPersistentModelIndex m_rootIndex; QList m_items; QSet m_expandedItems; QList m_itemsToExpand; mutable int m_lastItemIndex; }; #endif // QQUICKTREEMODELADAPTOR_H