#ifndef INTELLIGENCEUI_H
#define INTELLIGENCEUI_H

#include <QMainWindow>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QProcess>
#include <QMessageBox>
#include <QDebug>
#include <QComboBox>
#include <QTextEdit>
#include <QProgressBar>
#include <QFileDialog>
#include <QTimer>
#include <QMediaRecorder>
#include <QAudioRecorder>
#include <QAudioInput>
#include <QAudioFormat>
#include <QUrl>
#include <QDir>

QT_BEGIN_NAMESPACE
namespace Ui {
class IntelligenceUI;
}
QT_END_NAMESPACE

class IntelligenceUI : public QMainWindow
{
    Q_OBJECT

public:
    IntelligenceUI(QWidget *parent = nullptr);
    ~IntelligenceUI();

private slots:
    // 播放音频按钮
    void on_playSelectedAudio_clicked();
    
    // 杀死wsaudio进程按钮
    void on_killWSAudio_clicked();
    
    // 刷新音频文件列表
    void on_refreshAudioList_clicked();
    
    // 保存SSH连接设置
    void on_saveSshSettings_clicked();
    
    // 上传并播放
    void on_browseButton_clicked();
    void on_uploadAndPlayButton_clicked();
    void onFileUploadFinished(int exitCode, QProcess::ExitStatus exitStatus);

    // SSH进程处理
    void onSshProcessFinished(int exitCode, QProcess::ExitStatus exitStatus);
    void onSshProcessError(QProcess::ProcessError error);

    // 新增录制功能相关槽函数
    void on_recordButton_clicked();
    void on_stopRecordButton_clicked();
    void on_playRecordedButton_clicked();
    
    // 录制相关处理
    void onRecordingFinished();
    void onRecordingError(QMediaRecorder::Error error);
    void updateAudioLevel();

    // 新增TTS功能相关槽函数
    void on_generateTtsButton_clicked();
    void on_playTtsButton_clicked();
    void onTtsGenerationFinished(int exitCode, QProcess::ExitStatus exitStatus);

private:
    Ui::IntelligenceUI *ui;
    QProcess *sshProcess;
    QProcess *fileTransferProcess;
    QString currentCommand;
    
    // SSH连接信息
    QString m_sshHost;
    QString m_sshUser;
    QString m_sshPassword;
    
    // 本地文件路径
    QString m_localAudioPath;
    
    // 录制相关
    QAudioRecorder *audioRecorder;
    QAudioInput *audioInput;
    QTimer *volumeTimer;
    QString recordedFilePath;
    
    // TTS相关
    QProcess *ttsProcess;
    QString ttsOutputPath;
    
    // 核心方法
    void executeSSHCommand(const QString &command, const QString &description);
    //qxq:
    void killWSAudioProcess();
    void playAudioFile(const QString &audioFile);
    void refreshAudioFileList();
    void updateSshSettings();
    
    // UI设置
    void setupUI();
    void updateStatus(const QString &message, bool isError = false);
    
    // 录制相关私有方法
    void setupAudioRecorder();
    void updateRecordingStatus(const QString &status);
    void enableRecordingControls(bool recording);
    
    // TTS相关私有方法
    void setupTTS();
    void updateTtsStatus(const QString &status);
};

#endif // INTELLIGENCEUI_H 