#ifndef ELAFOOTERDELEGATE_H #define ELAFOOTERDELEGATE_H #include #include #include "ElaDef.h" class ElaNavigationNode; class QPropertyAnimation; class ElaBaseListView; class ElaFooterDelegate : public QStyledItemDelegate { Q_OBJECT Q_PRIVATE_CREATE(ElaBaseListView *, ElaListView); Q_PRIVATE_CREATE(QModelIndex, PressIndex); public: explicit ElaFooterDelegate(QObject *parent = nullptr); ~ElaFooterDelegate(); void navigationNodeStateChange(QVariantMap data); protected: void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override; private: int _leftPadding{11}; int _iconAreaWidth{40}; int _textRightSpacing{3}; int _indicatorIconAreaWidth{24}; qreal _lastSelectMarkTop{10}; qreal _lastSelectMarkBottom{10}; qreal _selectMarkTop{10}; qreal _selectMarkBottom{10}; bool _isSelectMarkDisplay{true}; ElaNavigationNode *_lastSelectedNode{nullptr}; ElaThemeType::ThemeMode _themeMode; QPropertyAnimation *_lastSelectMarkTopAnimation{nullptr}; QPropertyAnimation *_lastSelectMarkBottomAnimation{nullptr}; QPropertyAnimation *_selectMarkTopAnimation{nullptr}; QPropertyAnimation *_selectMarkBottomAnimation{nullptr}; bool _compareItemY(ElaNavigationNode *node1, ElaNavigationNode *node2); }; #endif // ELAFOOTERDELEGATE_H