#ifndef FILEDIALOGHELPER_H
#define FILEDIALOGHELPER_H

#include <QObject>
#include <QString>
#include <QStringList>

class QWidget;
class QQuickWindow;

/**
 * @brief FileDialogHelper
 * 统一封装文件选择/保存对话框的接口，提供给 C++ 与 QML 调用。
 */
class FileDialogHelper : public QObject
{
    Q_OBJECT
public:
    explicit FileDialogHelper(QObject *parent = nullptr);

    /**
     * @brief 写作相关的文件选择
     * @param flag 0: 上传本地文件；1: 选择知识库文件（保留占位）；2: 打开语气设置页面；其它：打开写作字数设置弹窗
     * @return 选中的文件路径或其它业务返回值，取消则为空
     */
    Q_INVOKABLE QString openWritingFile(int flag);


    /**
     * @brief 保存图片（从 base64 数据）
     * @param base64Image base64 编码的图片数据（可包含 data:image/png;base64, 前缀）
     * @return 保存成功返回 true，取消或失败返回 false
     */
    Q_INVOKABLE bool saveImage(const QString &base64Image);

    // ---- 静态 C++ 帮助接口（可在各个模块直接调用） ----
    static QString openSupportedFile(int typeNum, QWidget *parent);
    static QString openWritingFile(int flag, QWidget *parent);
    static bool saveImage(const QString &base64Image, QQuickWindow *quickWindow);

private:
    static void setupRemovableSidebar(class QFileDialog &dialog);
};

#endif // FILEDIALOGHELPER_H


