#pragma once

#include <QListView>// 包含QListView的定义，QListView是Qt框架中的一个列表视图控件
#include "editorsettingsoptions.h"

class TagListView : public QListView// 定义TagListView类，继承自QListView
{
    Q_OBJECT// 宏，用于支持信号和槽机制
public:
    explicit TagListView(QWidget *parent = nullptr); // 构造函数，允许传入父窗口指针，默认为空
    void setTheme(Theme::Value theme); // 设置主题的函数，接受Theme枚举类型中的一个值
    void setBackground(const QColor color);// 设置背景颜色的方法，接受一个QColor对象
signals:
    // QAbstractItemView interface QAbstractItemView接口的信号声明
public slots:
    virtual void reset() override;// 重载reset函数，用于重置视图状态

    // QWidget interface 下面的函数重载自QWidget接口
protected:
    virtual void resizeEvent(QResizeEvent *event) override;// 重载resizeEvent函数，处理窗口大小变化事件
    virtual void mousePressEvent(QMouseEvent *event) override;// 重载mousePressEvent函数，处理鼠标按下事件
    virtual void mouseReleaseEvent(QMouseEvent *event) override;// 重载mouseReleaseEvent函数，处理鼠标释放事件
    virtual void mouseDoubleClickEvent(
            QMouseEvent *event) override; // 重载mouseDoubleClickEvent函数，处理鼠标双击事件
    virtual void mouseMoveEvent(QMouseEvent *event) override;// 重载mouseMoveEvent函数，处理鼠标移动事件

private:
    QColor m_backgroundColor;// 私有成员变量，用于存储背景颜色
};
