#ifndef ELACALENDARDELEGATE_H #define ELACALENDARDELEGATE_H #include #include #include "ElaCalendarModel.h" #include "ElaDef.h" class ElaCalendarDelegate : public QStyledItemDelegate { Q_OBJECT Q_PRIVATE_CREATE(int, ItemWidth) Q_PRIVATE_CREATE(int, ItemHeight) Q_PRIVATE_CREATE(bool, IsTransparent) public: explicit ElaCalendarDelegate(ElaCalendarModel *calendarModel, QObject *parent = nullptr); ~ElaCalendarDelegate(); Q_SLOT void onCalendarModelDisplayModeChanged(); void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override; private: ElaCalendarModel *_calendarModel{nullptr}; ElaThemeType::ThemeMode _themeMode; QDate _nowDate; void _drawYearOrMonth(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; void _drawDays(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; }; #endif // ELACALENDARDELEGATE_H