/*************************************************************************** qgsstacitemlistmodel.h --------------------- begin : November 2024 copyright : (C) 2024 by Stefanos Natsis email : uclaros at gmail dot com *************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef QGSSTACITEMLISTMODEL_H #define QGSSTACITEMLISTMODEL_H #include #include ///@cond PRIVATE #define SIP_NO_FILE class QgsStacItem; class QgsStacCollection; class QgsStacItemListModel : public QAbstractListModel { Q_OBJECT public: enum Role { StacObject = Qt::UserRole + 1, Id, Title, Thumbnail, Uris, MediaTypes, Geometry, Extent, Collection, Formats, }; QgsStacItemListModel( QObject *parent = nullptr ); int rowCount( const QModelIndex &parent = QModelIndex() ) const override; QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const override; void clear(); //! Builds collection dictionary. Does not take ownership void setCollections( const QVector &collections ); //! Add items to the model. Takes ownership void addItems( const QVector &items, const QString &authcfg ); //! Returns all items in the model. Does not transfer ownership QVector items() const; private: QVector mItems; QMap mThumbnails; QMap mCollections; }; class QgsStacItemDelegate : public QStyledItemDelegate { Q_OBJECT public: explicit QgsStacItemDelegate( QObject *parent = nullptr ); void paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ) const override; QSize sizeHint( const QStyleOptionViewItem &option, const QModelIndex &index ) const override; private: int mRoundedRectSizePixels = 5; }; ///@endcond #endif // QGSSTACITEMLISTMODEL_H