#include "gddcSet.h"
#include "ui_gddcSet.h"
#include <QSettings>

// #pragma execution_character_set(“utf-8”)

GDDCSet::GDDCSet(QWidget *parent) : QWidget(parent), ui(new Ui::GDDCSet) {
  ui->setupUi(this);
  initWindow();
  initParam();
  initUDPSocket();
}

GDDCSet::~GDDCSet() { delete ui; }
void GDDCSet::initWindow() {
  setWindowTitle("通信设置");
  setAttribute(Qt::WA_QuitOnClose, false);

  // 交付时隐藏部分未开发接口
  ui->label_5->hide();
  ui->label_6->hide();
  ui->lineEdit_playURL2->hide();
  ui->pushButton_ConnectURL2->hide();
  ui->groupBox_2->hide();
  ui->radioButton_NetCtrlTCP->hide();
}
void GDDCSet::initUDPSocket() {}
void GDDCSet::initParam() {
  // m_myPairNetwork("",0,"",0);
  //  QSettings setting("./sentence.ini",QSettings::IniFormat);
  //  setting.setIniCodec(QTextCodec::codecForName("UTF-8")); //重点

  ui->comboBox_streamType->addItem("RTSP");
  // ui->comboBox_streamType->addItem("UDP Raw");
  // ui->comboBox_streamType->addItem("UDP 422");
  // ui->comboBox_streamType->addItem("UDP TS");
  ui->comboBox_playURL1->addItem("rtsp://192.168.55.65:554/live/track0");
  ui->comboBox_playURL1->addItem(
      "rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid");
  ui->comboBox_playURL1->setEditable(true);

  /*"rtsp://192.168.1.160:554/live/track0"*/
  /*"rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid"*/

  ui->radioButton_NetCtrlUDP->setChecked(true);
  ui->radioButton_NetCtrlTCP->setChecked(false);

  // 读取本机网络设备
  QString urlFile = QCoreApplication::applicationDirPath() + "/config.ini";
  // QString urlFile = QDir::currentPath() + "./config.ini";
  m_configIniPath = urlFile.toLatin1();
  char *strSysIniName = m_configIniPath.data(); // 系统配置文件路径
  char inBuf[100];

  ::GetPrivateProfileStringA("光电吊舱-视频连接-显示窗口2", "播放URL", "-1",
                             inBuf, 100, strSysIniName);
  m_playURL2 = QString::fromUtf8(inBuf);
  ui->lineEdit_playURL2->setText(m_playURL2);

  ::GetPrivateProfileStringA("光电吊舱-推流", "推流URL", "-1", inBuf, 100,
                             strSysIniName);
  m_pushURL = QString::fromUtf8(inBuf);
  ui->lineEdit_pushURL->setText(m_pushURL);

  ::GetPrivateProfileStringA("光电吊舱-网络控制", "远端IP", "-1", inBuf, 100,
                             strSysIniName);
  m_myPairNetwork.setRemoteIP(QString::fromUtf8(inBuf));
  ::GetPrivateProfileStringA("光电吊舱-网络控制", "远端Port", "-1", inBuf, 100,
                             strSysIniName);
  m_myPairNetwork.setRemotePort(atoi(inBuf));
  ::GetPrivateProfileStringA("光电吊舱-网络控制", "本地IP", "-1", inBuf, 100,
                             strSysIniName);
  m_myPairNetwork.setLocalIP(QString::fromUtf8(inBuf));
  ::GetPrivateProfileStringA("光电吊舱-网络控制", "本地Port", "-1", inBuf, 100,
                             strSysIniName);
  m_myPairNetwork.setLocalPort(atoi(inBuf));
  ui->lineEdit_NetCtrlRemoteIp->setText(m_myPairNetwork.getRemoteIP());
  ui->lineEdit_NetCtrlRemotePort->setText(
      QString::number(m_myPairNetwork.getRemotePort()));
  ui->lineEdit_NetCtrlLocalIp->setText(m_myPairNetwork.getLocalIP());
  ui->lineEdit_NetCtrlLocalPort->setText(
      QString::number(m_myPairNetwork.getLocalPort()));
}
// 视频连接-显示窗口1-连接
void GDDCSet::on_pushButton_ConnectURL1_clicked() {
  saveDataToLocalIni();
  if (ui->pushButton_ConnectURL1->text() == "连接") {
    emit SignalStartConnect(1);
    ui->pushButton_ConnectURL1->setText("断开");
  } else {
    emit SignalStopConnect(1);
    ui->pushButton_ConnectURL1->setText("连接");
  }
}

// 视频连接-显示窗口2-连接
void GDDCSet::on_pushButton_ConnectURL2_clicked() {
  saveDataToLocalIni();
  if (ui->pushButton_ConnectURL2->text() == "连接") {
    emit SignalStartConnect(2);
    ui->pushButton_ConnectURL2->setText("断开");
  } else {
    emit SignalStopConnect(2);
    ui->pushButton_ConnectURL2->setText("连接");
  }
}

// 串口控制-刷新
void GDDCSet::on_pushButton_serialControlRefalsh_clicked() {
  saveDataToLocalIni();
}

// 串口控制-连接
void GDDCSet::on_pushButton_serialControlConnect_clicked() {
  saveDataToLocalIni();
  if (ui->pushButton_serialControlConnect->text() == "连接") {
    emit SignalStartConnect(3);
    ui->pushButton_serialControlConnect->setText("断开");
  } else {
    emit SignalStopConnect(3);
    ui->pushButton_serialControlConnect->setText("连接");
  }
}

// 网络控制-连接
void GDDCSet::on_pushButton_NetCtrlConnect_clicked() {
  saveDataToLocalIni();
  if (ui->pushButton_NetCtrlConnect->text() == "连接") {
    if (ui->radioButton_NetCtrlUDP->isChecked()) {
      emit SignalStartConnect(4);
    } else {
      emit SignalStartConnect(5);
    }

    ui->pushButton_NetCtrlConnect->setText("断开");
  } else {
    emit SignalStopConnect(4);
    emit SignalStopConnect(5);
    ui->pushButton_NetCtrlConnect->setText("连接");
  }
}

// 推流
void GDDCSet::on_pushButton_pushURL_clicked() {
  saveDataToLocalIni();
  if (ui->pushButton_pushURL->text() == "推送") {
    emit SignalStartConnect(6);
    ui->pushButton_pushURL->setText("停止推送");
  } else {
    emit SignalStopConnect(6);
    ui->pushButton_pushURL->setText("推送");
  }
}

// 保存数据至本地ini文件
void GDDCSet::saveDataToLocalIni() {
  char *strSysIniName = m_configIniPath.data(); // 系统配置文件路径
  char *inBuf;
  QByteArray ba;

  m_myPairNetwork.setLocalIP(ui->lineEdit_NetCtrlLocalIp->text());
  ba = m_myPairNetwork.getLocalIP().toLocal8Bit();
  inBuf = ba.data(); // toLatin1,toUtf8
  ::WritePrivateProfileStringA("光电吊舱-网络控制", "本地IP", inBuf,
                               strSysIniName);

  m_myPairNetwork.setLocalPort(ui->lineEdit_NetCtrlLocalPort->text().toInt());
  _itoa_s(
      m_myPairNetwork.getLocalPort(), inBuf, 10,
      10); // 要转换的数字,存放转换结果的字符串,存放结果的字符数组长度,转化的进制数,2表示2进制,10表示10进制
  ::WritePrivateProfileStringA("光电吊舱-网络控制", "本地Port", inBuf,
                               strSysIniName);

  m_myPairNetwork.setRemoteIP(ui->lineEdit_NetCtrlRemoteIp->text());
  ba = m_myPairNetwork.getRemoteIP().toLocal8Bit();
  inBuf = ba.data();
  ::WritePrivateProfileStringA("光电吊舱-网络控制", "远端IP", inBuf,
                               strSysIniName);

  m_myPairNetwork.setRemotePort(ui->lineEdit_NetCtrlRemotePort->text().toInt());
  _itoa_s(m_myPairNetwork.getRemotePort(), inBuf, 10, 10);
  ::WritePrivateProfileStringA("光电吊舱-网络控制", "远端Port", inBuf,
                               strSysIniName);

  m_playURL2 = ui->lineEdit_playURL2->text();
  ba = m_playURL2.toLocal8Bit();
  inBuf = ba.data();
  ::WritePrivateProfileStringA("光电吊舱-视频连接-显示窗口2", "播放URL", inBuf,
                               strSysIniName);

  m_pushURL = ui->lineEdit_pushURL->text();
  ba = m_pushURL.toLocal8Bit();
  inBuf = ba.data();
  ::WritePrivateProfileStringA("光电吊舱-推流", "推流URL", inBuf,
                               strSysIniName);

  m_playURL1 = ui->comboBox_playURL1->currentText();
}