#include "commandwidget.h"

#include "ui_commandwidget.h"

CommandWidget::CommandWidget(QWidget *parent)
    : QWidget(parent), ui(new Ui::CommandWidget) {
    ui->setupUi(this);
    ui->stopConnectionToolBtn->setDisabled(true);
    ui->settingToolBtn->setIcon(QIcon(":/images/settings.png"));
    ui->settingToolBtn->setText("通信设置");
    ui->settingToolBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);

    udpSocket = new QUdpSocket(this);
    connect(&settingDlg, &CommunicationSettingDlg::sendErrorMessage, this,
            &CommandWidget::receiveMessageSlots);
}

CommandWidget::~CommandWidget() {
    delete ui;
    if (udpSocket) udpSocket->deleteLater();
}

void CommandWidget::on_settingToolBtn_clicked() {
    settingDlg.exec();
}

// 连接
void CommandWidget::on_startConnectionToolBtn_clicked() {
    ui->startConnectionToolBtn->setDisabled(true);
    if (!g_networkSettingInfo) return;
    int dataSourceType = g_networkSettingInfo->value("DataSource").toInt();
    QString groupName = "";
    switch (dataSourceType) {
        case 0:
            groupName = "LLink";
            break;
        case 1:
            groupName = "SATCOM1";
            break;
        case 2:
            groupName = "SATCOM2";
            break;
        default:
            break;
    }

    m_remoteIP =
        g_networkSettingInfo->value(groupName + "/remoteIP").toString();
    m_remotePort =
        g_networkSettingInfo->value(groupName + "/remotePort").toInt();
    int localPort =
        g_networkSettingInfo->value(groupName + "/localPort").toInt();
    QString localIP =
        g_networkSettingInfo->value(groupName + "/localIP").toString();

    if (dataSourceType == 0) {  // 组播
        emit startConnectionSignal(m_remoteIP, m_remotePort);
    } else {  // 单播
        emit startConnectionSignal(localIP, localPort);
    }

    ui->stopConnectionToolBtn->setDisabled(false);
}

// 断开
void CommandWidget::on_stopConnectionToolBtn_clicked() {
    ui->stopConnectionToolBtn->setDisabled(true);

    emit stopConnectionSignal();

    // ui->stopConnectionToolBtn->setDisabled(false);
    ui->startConnectionToolBtn->setDisabled(false);
}

void CommandWidget::receiveMessageSlots(QString message, int type) {
    emit sendErrorMessage(message, type);
}