/************************************************************************
 * This file has been generated automatically from                      *
 *                                                                      *
 * src/core/qgsmaplayermodel.h                                          *
 *                                                                      *
 * Do not edit manually ! Edit header and run scripts/sipify.py again   *
 ************************************************************************/





class QgsMapLayerModel : QAbstractItemModel
{
%Docstring(signature="appended")
The :py:class:`QgsMapLayerModel` class is a model to display layers in
widgets.

.. seealso:: :py:class:`QgsMapLayerProxyModel` to sort and/filter the layers

.. seealso:: :py:class:`QgsFieldModel` to combine in with a field selector.
%End

%TypeHeaderCode
#include "qgsmaplayermodel.h"
%End
  public:


    enum class CustomRole /BaseType=IntEnum/
    {
      LayerId,
      Layer,
      Empty,
      Additional,
    };

    explicit QgsMapLayerModel( QObject *parent /TransferThis/ = 0, QgsProject *project = 0 );
%Docstring
QgsMapLayerModel creates a model to display layers in widgets.

If a specific ``project`` is not specified then the
:py:func:`QgsProject.instance()` project will be used to populate the
model.
%End

    explicit QgsMapLayerModel( const QList<QgsMapLayer *> &layers, QObject *parent = 0, QgsProject *project = 0 );
%Docstring
QgsMapLayerModel creates a model to display a specific list of layers in
a widget.

If a specific ``project`` is not specified then the
:py:func:`QgsProject.instance()` project will be used to populate the
model.
%End

    void setItemsCheckable( bool checkable );
%Docstring
setItemsCheckable defines if layers should be selectable in the widget
%End

    void setProject( QgsProject *project );
%Docstring
Sets the :py:class:`QgsProject` from which map layers are shown

.. versionadded:: 3.24
%End

    void setItemsCanBeReordered( bool allow );
%Docstring
Sets whether items in the model can be reordered via drag and drop.

.. seealso:: :py:func:`itemsCanBeReordered`

.. versionadded:: 3.14
%End

    bool itemsCanBeReordered() const;
%Docstring
Returns ``True`` if items in the model can be reordered via drag and
drop.

.. seealso:: :py:func:`setItemsCanBeReordered`

.. versionadded:: 3.14
%End

    void checkAll( Qt::CheckState checkState );
%Docstring
checkAll changes the checkstate for all the layers
%End

    void setAllowEmptyLayer( bool allowEmpty, const QString &text = QString(), const QIcon &icon = QIcon() );
%Docstring
Sets whether an optional empty layer ("not set") option is present in
the model.

Since QGIS 3.20, the optional ``text`` and ``icon`` arguments allows the
text and icon for the empty layer item to be set.

.. seealso:: :py:func:`allowEmptyLayer`
%End

    bool allowEmptyLayer() const;
%Docstring
Returns ``True`` if the model allows the empty layer ("not set") choice.

.. seealso:: :py:func:`setAllowEmptyLayer`
%End

    void setShowCrs( bool showCrs );
%Docstring
Sets whether the CRS of layers is also included in the model's display
role.

.. seealso:: :py:func:`showCrs`
%End

    bool showCrs() const;
%Docstring
Returns ``True`` if the model includes layer's CRS in the display role.

.. seealso:: :py:func:`setShowCrs`
%End

    QList<QgsMapLayer *> layersChecked( Qt::CheckState checkState = Qt::Checked );
%Docstring
layersChecked returns the list of layers which are checked (or
unchecked)
%End

    void setLayersChecked( const QList< QgsMapLayer * > &layers );
%Docstring
Sets which layers are checked in the model.
%End

    bool itemsCheckable() const;
%Docstring
returns if the items can be checked or not
%End

    QModelIndex indexFromLayer( QgsMapLayer *layer ) const;
%Docstring
indexFromLayer returns the model index for a given layer

.. seealso:: :py:func:`layerFromIndex`
%End

    QgsMapLayer *layerFromIndex( const QModelIndex &index ) const;
%Docstring
Returns the map layer corresponding to the specified ``index``.

.. seealso:: :py:func:`indexFromLayer`
%End

    void setAdditionalItems( const QStringList &items );
%Docstring
Sets a list of additional (non map layer) items to include at the end of
the model. These may represent additional layers such as layers which
are not included in the active project, or paths to layers which have
not yet been loaded into QGIS.

.. seealso:: :py:func:`additionalItems`
%End

    QStringList additionalItems() const;
%Docstring
Returns the list of additional (non map layer) items included at the end
of the model.

.. seealso:: :py:func:`setAdditionalItems`
%End

    void setAdditionalLayers( const QList<QgsMapLayer *> &layers );
%Docstring
Sets a list of additional ``layers`` to include in the model.

This method allows adding additional layers, which are not part of a
project's layers, into the model.

.. seealso:: :py:func:`additionalLayers`

.. versionadded:: 3.22
%End

    QList< QgsMapLayer * > additionalLayers() const;
%Docstring
Returns the list of additional layers added to the model.

.. seealso:: :py:func:`setAdditionalLayers`

.. versionadded:: 3.22
%End

    virtual QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const;

    virtual QModelIndex parent( const QModelIndex &child ) const;

    virtual int rowCount( const QModelIndex &parent = QModelIndex() ) const;

    virtual int columnCount( const QModelIndex &parent = QModelIndex() ) const;

    virtual QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const;

    virtual bool setData( const QModelIndex &index, const QVariant &value, int role = Qt::EditRole );

    virtual Qt::ItemFlags flags( const QModelIndex &index ) const;

    virtual bool insertRows( int row, int count, const QModelIndex &parent = QModelIndex() );

    virtual bool removeRows( int row, int count, const QModelIndex &parent = QModelIndex() );

    virtual QStringList mimeTypes() const;

    virtual bool canDropMimeData( const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent ) const;

    virtual QMimeData *mimeData( const QModelIndexList &indexes ) const;

    virtual bool dropMimeData( const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent );

    virtual Qt::DropActions supportedDropActions() const;



    static QIcon iconForLayer( QgsMapLayer *layer );
%Docstring
Returns the icon corresponding to a specified map ``layer``.
%End

  protected slots:
    void removeLayers( const QStringList &layerIds );
    void addLayers( const QList<QgsMapLayer *> &layers );

  protected:


};

/************************************************************************
 * This file has been generated automatically from                      *
 *                                                                      *
 * src/core/qgsmaplayermodel.h                                          *
 *                                                                      *
 * Do not edit manually ! Edit header and run scripts/sipify.py again   *
 ************************************************************************/
