16#ifndef QGSSETTINGSTREEMODEL_H
17#define QGSSETTINGSTREEMODEL_H
23#include <QAbstractItemModel>
24#include <QItemDelegate>
25#include <QSortFilterProxyModel>
45class GUI_EXPORT QgsSettingsTreeModelNodeData :
public QObject
60 static QgsSettingsTreeModelNodeData *createRootNodeData(
const QgsSettingsTreeNode *rootNode, QObject *parent );
66 bool isRoot()
const {
return !mParent; }
69 QStringList namedParentNodes()
const {
return mNamedParentNodes; }
72 QList<QgsSettingsTreeModelNodeData *> children()
const {
return mChildren; }
75 QgsSettingsTreeModelNodeData *parent()
const {
return mParent; }
78 Type type()
const {
return mType; }
81 QString name()
const {
return mName; }
84 QVariant value()
const {
return mValue; }
87 QVariant originalValue()
const {
return mOriginalValue; }
90 bool setValue(
const QVariant &value );
93 bool exists()
const {
return mExists; }
96 bool isEdited()
const {
return mIsEdited; }
102 const QgsSettingsEntryBase *setting()
const {
return mSetting; }
106 QgsSettingsTreeModelNodeData( QObject *parent )
109 void addChildForTreeNode(
const QgsSettingsTreeNode *node );
110 void addChildForNamedListItemNode(
const QString &item,
const QgsSettingsTreeNamedListNode *namedListNode );
111 void addChildForSetting(
const QgsSettingsEntryBase *setting );
114 Type mType = Type::TreeNode;
117 QVariant mOriginalValue;
118 QStringList mNamedParentNodes;
119 bool mExists =
false;
120 bool mIsEdited =
false;
122 QList<QgsSettingsTreeModelNodeData *> mChildren;
123 QgsSettingsTreeModelNodeData *mParent =
nullptr;
125 const QgsSettingsTreeNode *mTreeNode =
nullptr;
126 const QgsSettingsEntryBase *mSetting =
nullptr;
139class GUI_EXPORT QgsSettingsTreeItemDelegate :
public QItemDelegate
145 explicit QgsSettingsTreeItemDelegate( QgsSettingsTreeModel *model, QObject *parent =
nullptr );
147 QWidget *createEditor( QWidget *parent,
const QStyleOptionViewItem &option,
const QModelIndex &index )
const override;
148 void setEditorData( QWidget *editor,
const QModelIndex &index )
const override;
149 void setModelData( QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index )
const override;
152 QgsSettingsTreeModel *mModel =
nullptr;
190 QgsSettingsTreeModelNodeData *index2node(
const QModelIndex &index )
const SIP_SKIP;
193 QModelIndex node2index( QgsSettingsTreeModelNodeData *node )
const SIP_SKIP;
196 QModelIndex index(
int row,
int column,
const QModelIndex &parent )
const override;
197 QModelIndex parent(
const QModelIndex &child )
const override;
198 int rowCount(
const QModelIndex &parent )
const override;
199 int columnCount(
const QModelIndex &parent )
const override;
200 QVariant data(
const QModelIndex &index,
int role )
const override;
201 QVariant headerData(
int section, Qt::Orientation orientation,
int role )
const override;
202 Qt::ItemFlags flags(
const QModelIndex &index )
const override;
203 bool setData(
const QModelIndex &index,
const QVariant &value,
int role )
override;
206 QModelIndex indexOfParentSettingsTreeNode( QgsSettingsTreeModelNodeData *parentNode )
const;
208 QgsSettingsTreeModelNodeData *mRootNode =
nullptr;
210 QColor mEditedColorBack;
211 QColor mEditedColorFore;
234 void setFilterText(
const QString &filterText = QString() );
238 bool filterAcceptsRow(
int source_row,
const QModelIndex &source_parent )
const override;
243 bool nodeShown( QgsSettingsTreeModelNodeData *node )
const;
Represents a settings entry and provides methods for reading and writing settings values.
A tree model for the settings tree.
QgsSettingsTreeModel(QgsSettingsTreeNode *rootNode=nullptr, QObject *parent=nullptr)
Constructor.
A named list tree node for the settings tree to help organizing and introspecting the tree.
A tree node for the settings tree to help organizing and introspecting the tree.
void applyChanges()
Apply pending changes in the model to the corresponding settings.
QgsSettingsTreeProxyModel(QgsSettingsTreeNode *rootNode=nullptr, QObject *parent=nullptr)
Constructor.