16 #ifndef QGSLAYERTREEMODEL_H 
   17 #define QGSLAYERTREEMODEL_H 
   19 #include "qgis_core.h" 
   20 #include <QAbstractItemModel> 
   60     if ( sipCpp->inherits( 
"QgsLayerTreeModel" ) )
 
   61       sipType = sipType_QgsLayerTreeModel;
 
   80     int rowCount( 
const QModelIndex &parent = QModelIndex() ) 
const override;
 
   81     int columnCount( 
const QModelIndex &parent = QModelIndex() ) 
const override;
 
   82     QModelIndex index( 
int row, 
int column, 
const QModelIndex &parent = QModelIndex() ) 
const override;
 
   83     QModelIndex parent( 
const QModelIndex &child ) 
const override;
 
   84     QVariant data( 
const QModelIndex &index, 
int role = Qt::DisplayRole ) 
const override;
 
   85     Qt::ItemFlags flags( 
const QModelIndex &index ) 
const override;
 
   86     bool setData( 
const QModelIndex &index, 
const QVariant &value, 
int role = Qt::EditRole ) 
override;
 
   87     Qt::DropActions supportedDropActions() 
const override;
 
   88     QStringList mimeTypes() 
const override;
 
   89     QMimeData *mimeData( 
const QModelIndexList &indexes ) 
const override;
 
   90     bool dropMimeData( 
const QMimeData *data, Qt::DropAction action, 
int row, 
int column, 
const QModelIndex &parent ) 
override;
 
   91     bool removeRows( 
int row, 
int count, 
const QModelIndex &parent = QModelIndex() ) 
override;
 
   99       ShowLegendAsTree           = 0x0004,  
 
  100       DeferredLegendInvalidation = 0x0008,  
 
  101       UseEmbeddedWidgets         = 0x0010,  
 
  102       UseTextFormatting          = 0x0020,  
 
  105       AllowNodeReorder           = 0x1000,  
 
  106       AllowNodeRename            = 0x2000,  
 
  107       AllowNodeChangeVisibility  = 0x4000,  
 
  108       AllowLegendChangeState     = 0x8000,  
 
  109       ActionHierarchical         = 0x10000, 
 
  111     Q_DECLARE_FLAGS( Flags, Flag )
 
  114     void setFlags( QgsLayerTreeModel::Flags f );
 
  116     void setFlag( Flag f, 
bool on = 
true );
 
  120     bool testFlag( Flag f ) 
const;
 
  135     QList<QgsLayerTreeNode *> indexes2nodes( 
const QModelIndexList &list, 
bool skipInternal = 
false ) 
const;
 
  157     QList<QgsLayerTreeModelLegendNode *> layerLegendNodes( 
QgsLayerTreeLayer *nodeLayer, 
bool skipNodeEmbeddedInParent = 
false );
 
  164     QList<QgsLayerTreeModelLegendNode *> layerOriginalLegendNodes( 
QgsLayerTreeLayer *nodeLayer );
 
  198     QModelIndex currentIndex() 
const;
 
  200     void setCurrentIndex( 
const QModelIndex ¤tIndex );
 
  203     void setLayerTreeNodeFont( 
int nodeType, 
const QFont &font );
 
  205     QFont layerTreeNodeFont( 
int nodeType ) 
const;
 
  219     void setLegendFilterByScale( 
double scale );
 
  259     void setLegendMapViewData( 
double mapUnitsPerPixel, 
int dpi, 
double scale );
 
  266     void legendMapViewData( 
double *mapUnitsPerPixel 
SIP_OUT, 
int *dpi 
SIP_OUT, 
double *scale  
SIP_OUT ) 
const;
 
  272     QMap<QString, QString> layerStyleOverrides() 
const;
 
  278     void setLayerStyleOverrides( 
const QMap<QString, QString> &overrides );
 
  300     void nodeWillAddChildren( 
QgsLayerTreeNode *node, 
int indexFrom, 
int indexTo );
 
  301     void nodeAddedChildren( 
QgsLayerTreeNode *node, 
int indexFrom, 
int indexTo );
 
  302     void nodeWillRemoveChildren( 
QgsLayerTreeNode *node, 
int indexFrom, 
int indexTo );
 
  303     void nodeRemovedChildren();
 
  313     void nodeCustomPropertyChanged( 
QgsLayerTreeNode *node, 
const QString &key );
 
  315     void nodeLayerLoaded();
 
  316     void nodeLayerWillBeUnloaded();
 
  317     void layerLegendChanged();
 
  323     void layerFlagsChanged();
 
  325     void layerNeedsUpdate();
 
  327     void legendNodeDataChanged();
 
  329     void invalidateLegendMapBasedData();
 
  340     void connectToRootNode();
 
  341     void disconnectFromRootNode();
 
  344     void recursivelyEmitDataChanged( 
const QModelIndex &index = QModelIndex() );
 
  351     void refreshScaleBasedLayers( 
const QModelIndex &index = QModelIndex(), 
double previousScale = 0.0 );
 
  353     static QIcon iconGroup();
 
  356     QList<QgsLayerTreeModelLegendNode *> filterLegendNodes( 
const QList<QgsLayerTreeModelLegendNode *> &nodes );
 
  358     QModelIndex indexOfParentLayerTreeNode( 
QgsLayerTreeNode *parentNode ) 
const;
 
  369     void legendCleanup();
 
  370     void legendInvalidateMapBasedData();
 
  396       QMap<QgsLayerTreeModelLegendNode *, QgsLayerTreeModelLegendNode *> 
parents;
 
  398       QMap<QgsLayerTreeModelLegendNode *, QList<QgsLayerTreeModelLegendNode *> > 
children;
 
  444     QHash<QgsLayerTreeLayer *, LayerLegendData> 
mLegend;
 
  470     void legendNodeSizeChanged();
 
  499       mRuleKey = QStringLiteral( 
"embedded-widget-" ) + QUuid::createUuid().toString();
 
  502     QVariant 
data( 
int role )
 const override 
  504       if ( role == RuleKeyRole )
 
MessageLevel
Level for messages This will be used both for message log and message bar in application.
Class for parsing and evaluation of expressions (formerly called "search strings").
A geometry is the spatial representation of a feature.
Layer tree group node serves as a container for layers and further groups.
Layer tree node points to a map layer.
The QgsLegendRendererItem class is abstract interface for legend items returned from QgsMapLayerLegen...
virtual QVariant data(int role) const =0
Returns data associated with the item. Must be implemented in derived class.
@ EmbeddedWidget
Embedded widget placeholder node type.
@ NodeTypeRole
Type of node. Added in 3.16.
The QgsLayerTreeModel class is model implementation for Qt item views framework.
QTimer mDeferLegendInvalidationTimer
double mLegendFilterByScale
scale denominator for filtering of legend nodes (<= 0 means no filtering)
int autoCollapseLegendNodes() const
Returns at what number of legend nodes the layer node should be collapsed. -1 means no auto-collapse ...
double legendFilterByScale() const
Returns the scale which restricts the legend nodes which are visible.
double mLegendMapViewScale
std::unique_ptr< QgsMapSettings > mLegendFilterMapSettings
std::unique_ptr< QgsMapHitTest > mLegendFilterHitTest
bool mLegendFilterUsesExtent
whether to use map filtering
void setAutoCollapseLegendNodes(int nodeCount)
Sets at what number of legend nodes the layer node should be collapsed. Setting -1 disables the auto-...
QHash< QgsLayerTreeLayer *, LayerLegendData > mLegend
Per layer data about layer's legend nodes.
const QgsMapSettings * legendFilterMapSettings() const
Returns the current map settings used for the current legend filter (or nullptr if none is enabled)
QPersistentModelIndex mCurrentIndex
Current index - will be underlined.
void messageEmitted(const QString &message, Qgis::MessageLevel level=Qgis::MessageLevel::Info, int duration=5)
Emits a message than can be displayed to the user in a GUI class.
int mAutoCollapseLegendNodesCount
Minimal number of nodes when legend should be automatically collapsed. -1 = disabled.
double mLegendMapViewMupp
QMap< QString, QString > mLayerStyleOverrides
Overrides of map layers' styles: key = layer ID, value = style XML.
QSet< QgsLayerTreeLayer * > mInvalidatedNodes
Keep track of layer nodes for which the legend size needs to be recalculated.
Flags mFlags
Sets of flags for the model.
This class is a base class for nodes in a layer tree.
Namespace with helper functions for layer tree operations.
Class that runs a hit test with given map settings.
The QgsMapSettings class contains configuration for rendering of the map.
Contains information about the context of a rendering operation.
int scaleIconSize(int standardSize)
Scales an icon size to compensate for display pixel density, making the icon size hi-dpi friendly,...
QgsLayerTreeModelLegendNode * legendNode(const QString &rule, QgsLayerTreeModel &model)
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)
Q_DECLARE_OPERATORS_FOR_FLAGS(QgsField::ConfigurationFlags) CORE_EXPORT QDataStream &operator<<(QDataStream &out
Writes the field to stream out. QGIS version compatibility is not guaranteed.
Structure that stores all data associated with one map layer.
LayerLegendData()=default
QList< QgsLayerTreeModelLegendNode * > originalNodes
Data structure for storage of legend nodes.
QList< QgsLayerTreeModelLegendNode * > activeNodes
Active legend nodes.
Structure that stores tree representation of map layer's legend.
QMap< QgsLayerTreeModelLegendNode *, QgsLayerTreeModelLegendNode * > parents
Pointer to parent for each active node. Top-level nodes have nullptr parent. Pointers are not owned.
QMap< QgsLayerTreeModelLegendNode *, QList< QgsLayerTreeModelLegendNode * > > children
List of children for each active node. Top-level nodes are under nullptr key. Pointers are not owned.