18#ifndef QGSPROVIDERSUBLAYERMODEL_H 
   19#define QGSPROVIDERSUBLAYERMODEL_H 
   25#include <QAbstractItemModel> 
   26#include <QSortFilterProxyModel> 
   32class QgsProviderSublayerModelNode;
 
   33class QgsProviderSublayerModelGroup;
 
   34class QgsProviderSublayerModelSublayerNode;
 
   63      ProviderKey = Qt::UserRole + 1, 
 
 
  100        QString type() 
const;
 
  106        void setType( 
const QString &type );
 
  112        QString name() 
const;
 
  118        void setName( 
const QString &name );
 
  124        QString description() 
const;
 
  130        void setDescription( 
const QString &description );
 
  142        void setUri( 
const QString &uri );
 
  154        void setIcon( 
const QIcon &icon );
 
  160        SIP_PYOBJECT __repr__();
 
  162        QString str = QStringLiteral( 
"<QgsProviderSublayerModel.NonLayerItem: %1 - %2>" ).arg( sipCpp->type(), sipCpp->name() );
 
  163        sipRes = PyUnicode_FromString( str.toUtf8().constData() );
 
  171        QString mDescription;
 
 
  187    void setSublayerDetails( 
const QList< QgsProviderSublayerDetails > &details );
 
  194    QList< QgsProviderSublayerDetails > sublayerDetails() 
const;
 
  211    QModelIndex index( 
int row, 
int column, 
const QModelIndex &parent = QModelIndex() ) 
const override;
 
  212    QModelIndex parent( 
const QModelIndex &index ) 
const override;
 
  213    int columnCount( 
const QModelIndex &parent = QModelIndex() ) 
const override;
 
  214    int rowCount( 
const QModelIndex &parent ) 
const override;
 
  215    Qt::ItemFlags flags( 
const QModelIndex &index ) 
const override;
 
  216    QVariant data( 
const QModelIndex &index, 
int role ) 
const override;
 
  217    QVariant headerData( 
int section, Qt::Orientation orientation, 
int role = Qt::DisplayRole ) 
const override;
 
  225    QgsProviderSublayerModelNode *index2node( 
const QModelIndex &index ) 
const SIP_SKIP;
 
  233    std::unique_ptr< QgsProviderSublayerModelGroup > 
mRootNode;
 
  236    QModelIndex indexOfParentNode( QgsProviderSublayerModelNode *parentNode ) 
const;
 
  238    QModelIndex node2index( QgsProviderSublayerModelNode *node ) 
const;
 
 
  245class CORE_EXPORT QgsProviderSublayerModelNode
 
  249    virtual ~QgsProviderSublayerModelNode();
 
  256    QgsProviderSublayerModelGroup *parent() { 
return mParent; }
 
  261    virtual QVariant data( 
int role = Qt::DisplayRole, 
int column = 0 ) 
const = 0;
 
  266    virtual int childCount() 
const = 0;
 
  270    QgsProviderSublayerModelGroup *mParent = 
nullptr;
 
  272    friend class QgsProviderSublayerModelGroup;
 
  275class CORE_EXPORT QgsProviderSublayerModelGroup : 
public QgsProviderSublayerModelNode
 
  282    QgsProviderSublayerModelGroup( 
const QString &title );
 
  284    QgsProviderSublayerModelGroup( QgsProviderSublayerModelGroup &&other ) = 
default;
 
  285    QgsProviderSublayerModelGroup &operator=( QgsProviderSublayerModelGroup && ) = 
default;
 
  290    QString name()
 const { 
return mGroupTitle; }
 
  295    QgsProviderSublayerModelNode *addChild( std::unique_ptr< QgsProviderSublayerModelNode > child );
 
  302    int indexOf( QgsProviderSublayerModelNode *child ) 
const;
 
  307    QgsProviderSublayerModelNode *childAt( 
int index );
 
  312    void removeChildAt( 
int index );
 
  317    QgsProviderSublayerModelGroup *findGroup( 
const QString &name ) 
const;
 
  322    QgsProviderSublayerModelGroup *findGroupForPath( 
const QStringList &path ) 
const;
 
  326    int childCount() const override final { 
return mChildren.size(); }
 
  327    QVariant data( 
int role = Qt::DisplayRole, 
int column = 0 ) 
const override;
 
  329    void populateFromSublayers( 
const QList<QgsProviderSublayerDetails> &sublayers );
 
  334    std::deque< std::unique_ptr< QgsProviderSublayerModelNode > > mChildren;
 
  340class CORE_EXPORT QgsProviderSublayerModelSublayerNode : 
public QgsProviderSublayerModelNode
 
  345    int childCount() const override final { 
return 0; }
 
  346    QVariant data( 
int role = Qt::DisplayRole, 
int column = 0 ) 
const override;
 
  354class CORE_EXPORT QgsProviderSublayerModelNonLayerItemNode : 
public QgsProviderSublayerModelNode
 
  359    int childCount() const override final { 
return 0; }
 
  360    QVariant data( 
int role = Qt::DisplayRole, 
int column = 0 ) 
const override;
 
  395    QString filterString() 
const;
 
  402    void setFilterString( 
const QString &filter );
 
  409    bool includeSystemTables() 
const;
 
  416    void setIncludeSystemTables( 
bool include );
 
  424    bool includeEmptyLayers() 
const;
 
  432    void setIncludeEmptyLayers( 
bool include );
 
  435    bool filterAcceptsRow( 
int source_row, 
const QModelIndex &source_parent ) 
const override;
 
  436    bool lessThan( 
const QModelIndex &source_left, 
const QModelIndex &source_right ) 
const override;
 
  440    QString mFilterString;
 
  441    bool mIncludeSystemTables = 
false;
 
  442    bool mIncludeEmptyLayers = 
true;
 
 
Contains details about a sub layer available from a dataset.
 
Contains details for a non-sublayer item to include in a QgsProviderSublayerModel.
 
A model for representing the sublayers present in a URI.
 
QList< QgsProviderSublayerDetails > mSublayers
Sublayer list.
 
std::unique_ptr< QgsProviderSublayerModelGroup > mRootNode
 
A QSortFilterProxyModel for filtering and sorting a QgsProviderSublayerModel.
 
bool operator==(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)
 
bool operator!=(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)