File indexing completed on 2024-04-28 11:42:28

0001 /*
0002     SPDX-FileCopyrightText: 2009 Stephen Kelly <steveire@gmail.com>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #ifndef DYNAMICTREEWIDGET_H
0008 #define DYNAMICTREEWIDGET_H
0009 
0010 #include <QWidget>
0011 
0012 #include "proxymodeltestsuite_export.h"
0013 
0014 class QModelIndex;
0015 
0016 class QComboBox;
0017 class QPlainTextEdit;
0018 class QTreeView;
0019 class QRadioButton;
0020 
0021 class DynamicTreeModel;
0022 
0023 class PROXYMODELTESTSUITE_EXPORT DynamicTreeWidget : public QWidget
0024 {
0025     Q_OBJECT
0026 public:
0027     DynamicTreeWidget(DynamicTreeModel *rootModel, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
0028 
0029     void setInitialTree(const QString &treeString);
0030 
0031     DynamicTreeModel *model() const
0032     {
0033         return m_dynamicTreeModel;
0034     }
0035     QTreeView *treeView() const
0036     {
0037         return m_treeView;
0038     }
0039     QPlainTextEdit *textEdit() const
0040     {
0041         return m_textEdit;
0042     }
0043 
0044 private Q_SLOTS:
0045     void currentChanged(int index);
0046     void setTreePredefine(int index);
0047     void setInsertSubTreePredefine(int index);
0048 
0049     void removeSelected();
0050     void insertSelected();
0051     void resetModel();
0052 
0053 private:
0054     void stringToModel(const QString &treeString);
0055     QString modelTreeToString(int depth, const QModelIndex &parent);
0056 
0057 private:
0058     enum Tab {
0059         EditTab,
0060         ViewTab,
0061     };
0062 
0063     QString m_initialString;
0064     DynamicTreeModel *m_dynamicTreeModel;
0065     QTreeView *m_treeView;
0066     QPlainTextEdit *m_textEdit;
0067 
0068     QPlainTextEdit *m_insertPatternTextEdit;
0069     QRadioButton *m_insertChildren;
0070     QRadioButton *m_insertSiblingsAbove;
0071     QRadioButton *m_insertSiblingsBelow;
0072     QComboBox *m_insertSubTreePredefines;
0073     QComboBox *m_treePredefines;
0074 };
0075 
0076 #endif