#ifndef FOLDERTREEDELEGATEEDITOR_H // 头文件保护
#define FOLDERTREEDELEGATEEDITOR_H

#include <QWidget> // 包含QWidget类
#include <QStyleOptionViewItem> // 包含样式选项视图项
#include <QModelIndex> // 包含模型索引
#include <QFont> // 包含字体类
#include "editorsettingsoptions.h" // 包含编辑器设置选项

class QTreeView; // 前向声明QTreeView类
class QLabel; // 前向声明QLabel类
class PushButtonType; // 前向声明PushButtonType类
class LabelEditType; // 前向声明LabelEditType类
class QListView; // 前向声明QListView类

class FolderTreeDelegateEditor : public QWidget // 继承自QWidget
{
    Q_OBJECT // 宏，用于支持Qt的信号和槽机制

            public
        : explicit FolderTreeDelegateEditor(QTreeView *view,
                                            const QStyleOptionViewItem &option, // 构造函数
                                            const QModelIndex &index, QListView *listView,
                                            QWidget *parent = nullptr);
    void setTheme(Theme::Value theme); // 设置主题的方法

private:
    QStyleOptionViewItem m_option; // 样式选项视图项
    QModelIndex m_index; // 模型索引
    QString m_displayFont; // 显示字体
    QFont m_titleFont; // 标题字体
    QColor m_titleColor; // 标题颜色
    QColor m_titleSelectedColor; // 选中标题颜色
    QColor m_activeColor; // 活动颜色
    QColor m_hoverColor; // 悬浮颜色
    QColor m_folderIconColor; // 文件夹图标颜色
    QTreeView *m_view; // 树视图
    QListView *m_listView; // 列表视图
    LabelEditType *m_label; // 标签编辑类型
    PushButtonType *m_folderIcon; // 文件夹图标按钮
    QPixmap m_expanded; // 展开的图标
    QPixmap m_notExpanded; // 未展开的图标
    QLabel *m_expandIcon; // 展开图标标签
    PushButtonType *m_contextButton; // 上下文按钮
    Theme::Value m_theme; // 主题枚举值

    void updateDelegate(); // 更新委托的方法

    // QWidget接口
protected:
    virtual void paintEvent(QPaintEvent *event) override; // 重写绘画事件
    virtual void mouseDoubleClickEvent(QMouseEvent *event) override; // 重写鼠标双击事件
};

#endif // FOLDERTREEDELEGATEEDITOR_H