#ifndef TAGPOOL_H
#  define TAGPOOL_H

#  include <QObject>
#  include <QMap>
#  include "tagdata.h"

class DBManager;

// 标签池类，管理标签数据
class TagPool : public QObject
{
    Q_OBJECT
public:
    // 构造函数，初始化标签池和数据库管理器
    explicit TagPool(DBManager *dbManager, QObject *parent = nullptr);
    // 获取指定ID的标签数据
    TagData getTag(int id) const;
    // 检查是否包含指定ID的标签
    bool contains(int id) const;
    // 获取所有标签的ID列表
    QList<int> tagIds() const;

signals:
    // 数据重置信号
    void dataReset();
    // 数据更新信号，携带更新的标签ID
    void dataUpdated(int tagId);
    // 标签删除信号，携带删除的标签ID
    void tagDeleted(int tagId);

private slots:
    // 标签删除的槽函数
    void onTagDeleted(int id);
    // 标签添加的槽函数
    void onTagAdded(const TagData &tag);
    // 标签重命名的槽函数
    void onTagRenamed(int id, const QString &newName);
    // 标签颜色改变的槽函数
    void onTagColorChanged(int id, const QString &newColor);

private:
    QMap<int, TagData> m_pool; // 标签数据池
    DBManager *m_dbManager; // 数据库管理器指针

    // 设置标签池
    void setTagPool(const QMap<int, TagData> &newPool);
};

#endif // TAGPOOL_H    void onTagRenamed(int id, const QString &newName);
// 标签颜色改变的槽函数
void onTagColorChanged(int id, const QString &newColor);

private:
QMap<int, TagData> m_pool; // 标签数据池
DBManager *m_dbManager; // 数据库管理器指针

// 设置标签