Files
cbh/ElaWidgetTools/DeveloperComponents/ElaFooterDelegate.h
2025-09-20 01:41:33 +08:00

45 lines
1.7 KiB
C++

#ifndef ELAFOOTERDELEGATE_H
#define ELAFOOTERDELEGATE_H
#include <QModelIndex>
#include <QStyledItemDelegate>
#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