#ifndef TONESTYLEMANAGER_H
#define TONESTYLEMANAGER_H

#include <QObject>
#include <QString>
#include <QList>
#include <QJsonDocument>
#include <QUuid>
#include <QFile>
#include "../global/kaglobal.h"

class ToneStyleManager : public QObject
{
    Q_OBJECT
public:
    static ToneStyleManager* getInstance();

    // 基本操作接口
    bool addToneStyle(const ToneStyle& toneStyle);
    bool removeToneStyle(const QString& uuid);
    bool updateToneStyle(const QString& uuid, const ToneStyle& newData);
    ToneStyle getToneStyle(const QString& uuid) const;
    QList<ToneStyle> getAllToneStyles() const;

    // 查找接口
    QList<ToneStyle> findToneStylesByName(const QString& name) const;
    bool toneStyleExists(const QString& uuid) const;

    // 文件操作
    bool loadFromFile(const QString& filePath = "");
    bool saveToFile(const QString& filePath = "");

    // 获取配置信息
    QString getDataFilePath() const { return m_dataFilePath; }
    int getToneStyleCount() const { return m_toneStyles.size(); }

signals:
    void toneStyleAdded(const ToneStyle& newToneStyle);
    void toneStyleRemoved(const QString& uuid);
    void toneStyleUpdated(const ToneStyle& updatedToneStyle);
    void dataLoaded();
    void dataSaved();

private:
    explicit ToneStyleManager(QObject* parent = nullptr);
    ~ToneStyleManager();

    // 默认数据
    void loadInitialTemplates();

    // 禁用拷贝和赋值
    ToneStyleManager(const ToneStyleManager&) = delete;
    ToneStyleManager& operator=(const ToneStyleManager&) = delete;

    // 生成UUID
    QString generateUUID() const;

    // 成员变量
    static ToneStyleManager* m_instance;
    QList<ToneStyle> m_toneStyles;
    QString m_dataFilePath;
};

#endif // TONESTYLEMANAGER_H
