644 lines
23 KiB
C++
644 lines
23 KiB
C++
#include "missiondialog.h"
|
|
#include "ui_missiondialog.h"
|
|
#include "QDebug"
|
|
|
|
MissionDialog::MissionDialog(QWidget *parent) :
|
|
QDialog(parent),
|
|
ui(new Ui::MissionDialog)
|
|
{
|
|
ui->setupUi(this);
|
|
setWindowFlags(Qt::WindowStaysOnTopHint);
|
|
|
|
isMissionSettingDialogOpen = false;
|
|
|
|
ui->MovedownButton->setHidden(true);
|
|
ui->MoveupButton->setHidden(true);
|
|
|
|
|
|
|
|
ui->InfoTable->horizontalHeader()->setDefaultAlignment(Qt::AlignHCenter);
|
|
ui->InfoTable->setColumnWidth(0,50);
|
|
ui->InfoTable->setColumnWidth(1,150);
|
|
ui->InfoTable->setColumnWidth(2,150);
|
|
ui->InfoTable->setColumnWidth(3,60);
|
|
ui->InfoTable->setColumnWidth(4,60);
|
|
ui->InfoTable->setColumnWidth(5,60);
|
|
ui->InfoTable->setColumnWidth(6,50);
|
|
ui->InfoTable->verticalHeader()->setVisible(false);
|
|
ui->InfoTable->setSelectionMode(QAbstractItemView::SingleSelection);
|
|
|
|
//waypointcsv = new WayPointCSV();
|
|
//inifile = new IniFile();
|
|
|
|
RouteTimer = new QTimer;
|
|
GetRouteTimer = new QTimer;
|
|
isChangeOnePoint = false;
|
|
PointNum = 0;
|
|
isGet = false;
|
|
connect(RouteTimer,SIGNAL(timeout()),this,SLOT(SendPoint()));
|
|
|
|
|
|
/*if(ui->LoopBox->isChecked())
|
|
{
|
|
quint16 number = ui->InfoTable->rowCount() - 1;
|
|
emit LoopChecked(number,true);
|
|
}*/
|
|
|
|
QString wploop = ReadInit("Map","WPLoop");
|
|
ui->LoopBox->setChecked(wploop.toInt());
|
|
|
|
connect(ui->InfoTable->horizontalHeader(),SIGNAL(sectionDoubleClicked(int)),
|
|
this,SLOT(on_SetHeader(int)));
|
|
}
|
|
|
|
void MissionDialog::isMissionSettingDialogOpenModify(bool flag)
|
|
{
|
|
if(flag == true)
|
|
{
|
|
//MissionSetting->close();
|
|
//delete MissionSetting;
|
|
isMissionSettingDialogOpen = false;
|
|
}
|
|
else
|
|
isMissionSettingDialogOpen = true;
|
|
|
|
qDebug() << isMissionSettingDialogOpen;
|
|
}
|
|
|
|
void MissionDialog::on_SetHeader(int column)
|
|
{
|
|
if(isMissionSettingDialogOpen == false)
|
|
{
|
|
//MissionSetting = new MissionSettingDialog(0,column);
|
|
isMissionSettingDialogOpen = true;
|
|
|
|
//connect(MissionSetting,SIGNAL(isWindowsClose(bool)),
|
|
// this,SLOT(isMissionSettingDialogOpenModify(bool)));
|
|
|
|
//MissionSetting->show();//只是show的话关闭父窗口后子窗口也会关闭
|
|
}
|
|
|
|
}
|
|
|
|
MissionDialog::~MissionDialog()
|
|
{
|
|
emit isWindowClose(ID);
|
|
|
|
/* if(MissionSetting != 0)
|
|
{
|
|
MissionSetting->close();
|
|
delete MissionSetting;
|
|
}*/
|
|
// this->deleteLater();
|
|
delete RouteTimer;
|
|
delete GetRouteTimer;
|
|
delete ui;
|
|
|
|
}
|
|
|
|
|
|
void MissionDialog::ChangePoint(int PointNumber, double Latitude, double Longitude)
|
|
{ //读取文件修改当前文件的特定值
|
|
ui->InfoTable->setItem(PointNumber,0,new QTableWidgetItem(QString::number(PointNumber+1)));
|
|
ui->InfoTable->setItem(PointNumber,1,new QTableWidgetItem(QString::number(Longitude,'f',8)));
|
|
ui->InfoTable->setItem(PointNumber,2,new QTableWidgetItem(QString::number(Latitude,'f',8)));
|
|
|
|
//ui->InfoTable->setItem(PointNumber,3,new QTableWidgetItem(inifile->ReadIni(QString::number(ui->RouteBox->currentIndex()),QString::number(PointNumber+1),"Altitude")));
|
|
//ui->InfoTable->setItem(PointNumber,4,new QTableWidgetItem(inifile->ReadIni(QString::number(ui->RouteBox->currentIndex()),QString::number(PointNumber+1),"Velocity")));
|
|
//ui->InfoTable->setItem(PointNumber,5,new QTableWidgetItem(inifile->ReadIni(QString::number(ui->RouteBox->currentIndex()),QString::number(PointNumber+1),"Radius")));
|
|
//ui->InfoTable->setItem(PointNumber,6,new QTableWidgetItem(inifile->ReadIni(QString::number(ui->RouteBox->currentIndex()),QString::number(PointNumber+1),"Action")));
|
|
|
|
//inifile->WriteIni(QString::number(ui->RouteBox->currentIndex()),QString::number(PointNumber+1),"Longitude",QString::number(Longitude));
|
|
//inifile->WriteIni(QString::number(ui->RouteBox->currentIndex()),QString::number(PointNumber+1),"Latitude",QString::number(Latitude));
|
|
|
|
ui->InfoTable->setVerticalHeaderItem(PointNumber,new QTableWidgetItem(""));
|
|
}
|
|
|
|
void MissionDialog::AddPoint(int PointNumber, QString Latitude, QString Longitude)
|
|
{
|
|
ui->InfoTable->setRowCount(ui->InfoTable->rowCount()+1);
|
|
int rowcount = ui->InfoTable->rowCount();
|
|
|
|
ui->InfoTable->setItem(rowcount-1,0,new QTableWidgetItem(QString::number(PointNumber+1)));
|
|
ui->InfoTable->setItem(rowcount-1,1,new QTableWidgetItem(Longitude));
|
|
ui->InfoTable->setItem(rowcount-1,2,new QTableWidgetItem(Latitude));
|
|
ui->InfoTable->setItem(rowcount-1,3,new QTableWidgetItem(QString::number(200)));
|
|
ui->InfoTable->setItem(rowcount-1,4,new QTableWidgetItem(QString::number(20)));
|
|
ui->InfoTable->setItem(rowcount-1,5,new QTableWidgetItem(QString::number(100)));
|
|
ui->InfoTable->setItem(rowcount-1,6,new QTableWidgetItem(QString::number(0)));
|
|
|
|
/*
|
|
inifile->WriteIni(QString::number(ui->RouteBox->currentIndex()),QString::number(PointNumber+1),"Longitude",Longitude);
|
|
inifile->WriteIni(QString::number(ui->RouteBox->currentIndex()),QString::number(PointNumber+1),"Latitude",Latitude);
|
|
inifile->WriteIni(QString::number(ui->RouteBox->currentIndex()),QString::number(PointNumber+1),"Altitude",QString::number(200));
|
|
inifile->WriteIni(QString::number(ui->RouteBox->currentIndex()),QString::number(PointNumber+1),"Velocity",QString::number(20));
|
|
inifile->WriteIni(QString::number(ui->RouteBox->currentIndex()),QString::number(PointNumber+1),"Radius",QString::number(100));
|
|
inifile->WriteIni(QString::number(ui->RouteBox->currentIndex()),QString::number(PointNumber+1),"Action",QString::number(0));
|
|
*/
|
|
|
|
ui->InfoTable->setVerticalHeaderItem(rowcount-1,new QTableWidgetItem(""));
|
|
}
|
|
|
|
void MissionDialog::DecPoint(void)
|
|
{
|
|
if(ui->InfoTable->rowCount() != 0)
|
|
{
|
|
ui->InfoTable->setRowCount(ui->InfoTable->rowCount()-1);
|
|
}
|
|
}
|
|
|
|
void MissionDialog::on_EditButton_clicked()
|
|
{
|
|
|
|
}
|
|
|
|
void MissionDialog::on_UploadButton_clicked()
|
|
{
|
|
if(RouteTimer->isActive())
|
|
{
|
|
ui->UploadButton->setText(tr("上传航线"));
|
|
isGet = false;
|
|
PointNum = 0;
|
|
RouteTimer->stop();
|
|
ui->progressBar->setValue(0);
|
|
}
|
|
else if(ui->InfoTable->rowCount() >0)
|
|
{
|
|
ui->UploadButton->setText(tr("取消上传"));
|
|
isGet = false;
|
|
PointNum = 0;
|
|
RouteTimer->start(100);
|
|
}
|
|
else
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
void MissionDialog::on_DownloadButton_clicked()//下载航线
|
|
{
|
|
if(ui->DownloadButton->text() == "下载航线")
|
|
{
|
|
ui->DownloadButton->setText(tr("取消下载"));
|
|
ui->InfoTable->setRowCount(0);
|
|
ui->progressBar->setValue(3);
|
|
quint8 Groups = ui->RouteBox->currentIndex();
|
|
Groups |= 0x10;
|
|
emit DeleteAll();
|
|
emit DownLoadWayPoint(0,0,0,0,0,Groups,0,0);
|
|
}
|
|
else if(ui->DownloadButton->text() == "取消下载")
|
|
{
|
|
ui->DownloadButton->setText(tr("下载航线"));
|
|
ui->InfoTable->setRowCount(0);
|
|
ui->progressBar->setValue(0);
|
|
emit DeleteAll();
|
|
emit DownLoadWayPoint(0,0,0,0,0,0,0,0);
|
|
}
|
|
}
|
|
|
|
void MissionDialog::DownLoadPoint(quint8 Groups,quint16 TotalPoint,quint16 CurrentPoint,double latitude,double longitude,quint16 Altitude,quint16 Radius,quint16 Velocity,quint8 Action)
|
|
{
|
|
if((TotalPoint == 0)&&(CurrentPoint == 0))//如果总航点和当前航点都是0,那么说明没有上传航向
|
|
{
|
|
ui->DownloadButton->setText(tr("下载航线"));
|
|
ui->progressBar->setValue(0);
|
|
emit DownLoadWayPoint(0,0,0,0,0,0,0,0);
|
|
return;
|
|
}
|
|
|
|
ui->RouteBox->setCurrentIndex(Groups);
|
|
ui->InfoTable->setRowCount(TotalPoint);
|
|
|
|
ui->InfoTable->setItem(CurrentPoint-1,0,new QTableWidgetItem(QString::number(CurrentPoint)));
|
|
ui->InfoTable->setItem(CurrentPoint-1,1,new QTableWidgetItem(QString::number(longitude,'f',8)));
|
|
ui->InfoTable->setItem(CurrentPoint-1,2,new QTableWidgetItem(QString::number(latitude,'f',8)));
|
|
ui->InfoTable->setItem(CurrentPoint-1,3,new QTableWidgetItem(QString::number(Altitude)));
|
|
ui->InfoTable->setItem(CurrentPoint-1,4,new QTableWidgetItem(QString::number(Velocity)));
|
|
ui->InfoTable->setItem(CurrentPoint-1,5,new QTableWidgetItem(QString::number(Radius)));
|
|
ui->InfoTable->setItem(CurrentPoint-1,6,new QTableWidgetItem(QString::number(Action)));
|
|
|
|
ui->InfoTable->setVerticalHeaderItem(CurrentPoint-1,new QTableWidgetItem(""));
|
|
|
|
if(TotalPoint != CurrentPoint)
|
|
{
|
|
int Value = CurrentPoint * 100 / TotalPoint;
|
|
ui->progressBar->setValue(Value);
|
|
|
|
quint8 Flag = ui->RouteBox->currentIndex();
|
|
Flag |= 0xf0;
|
|
emit DownLoadWayPoint(0,0,0,0,0,Flag,0,0);
|
|
}
|
|
else if(TotalPoint == CurrentPoint)
|
|
{
|
|
ui->DownloadButton->setText(tr("下载航线"));
|
|
ui->progressBar->setValue(0);
|
|
emit DownLoadWayPoint(0,0,0,0,0,0,0,0);
|
|
}
|
|
|
|
emit ShowDownLoadWayPoint(CurrentPoint-1,latitude,longitude);
|
|
|
|
qDebug() << "Recieve"
|
|
<< Groups
|
|
<< TotalPoint
|
|
<< CurrentPoint
|
|
<< longitude
|
|
<< latitude
|
|
<< Altitude
|
|
<< Velocity
|
|
<< Radius
|
|
<< Action;
|
|
}
|
|
|
|
void MissionDialog::on_SaveButton_clicked()//保存航线
|
|
{
|
|
QDir *temp = new QDir;
|
|
if(!temp->exists("./WayPoint"))
|
|
temp->mkdir("./WayPoint");//如果文件夹不存在就新建
|
|
|
|
if(ui->InfoTable->rowCount() > 0)
|
|
{
|
|
QDateTime time = QDateTime::currentDateTime();
|
|
QString Path = "./WayPoint/WP";
|
|
Path.append(time.toString("yyyyMMddHHmmss"));
|
|
|
|
QString FileName = QFileDialog::getSaveFileName(this,tr("保存航线"),Path,"hwp(*.hwp)");
|
|
if(!FileName.isNull())
|
|
{
|
|
QFile file(FileName);
|
|
if(!file.open(QIODevice::WriteOnly | QIODevice::Append))
|
|
{
|
|
return;
|
|
}
|
|
QTextStream writefiletext(&file);
|
|
|
|
QString data = "组别,总航点,航点号,经度,纬度,高度,速度,半径,动作";
|
|
data.append("\n");
|
|
writefiletext<<data;
|
|
data.clear();
|
|
|
|
for(int i = 0;i < ui->InfoTable->rowCount();i++)
|
|
{
|
|
data.append(QString::number(ui->RouteBox->currentIndex()));data.append(",");
|
|
data.append(QString::number(ui->InfoTable->rowCount())); data.append(",");
|
|
data.append(ui->InfoTable->item(i,0)->text()); data.append(",");
|
|
data.append(ui->InfoTable->item(i,1)->text()); data.append(",");
|
|
data.append(ui->InfoTable->item(i,2)->text()); data.append(",");
|
|
data.append(ui->InfoTable->item(i,3)->text()); data.append(",");
|
|
data.append(ui->InfoTable->item(i,4)->text()); data.append(",");
|
|
data.append(ui->InfoTable->item(i,5)->text()); data.append(",");
|
|
data.append(ui->InfoTable->item(i,6)->text()); data.append("\n");
|
|
writefiletext<<data;
|
|
data.clear();
|
|
}
|
|
file.close();
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void MissionDialog::on_ReadButton_clicked()//读取航线
|
|
{
|
|
|
|
QDir *temp = new QDir;
|
|
if(!temp->exists("./WayPoint"))
|
|
temp->mkdir("./WayPoint");//如果文件夹不存在就新建
|
|
|
|
QString FileName = QFileDialog::getOpenFileName(this,tr("保存航线"),"./WayPoint/","hwp(*.hwp)");
|
|
if(!FileName.isNull())
|
|
{
|
|
QFile file(FileName);
|
|
if(!file.open(QIODevice::ReadOnly))
|
|
{
|
|
return;
|
|
}
|
|
emit DeleteAll();//清空所有航点
|
|
|
|
QTextStream * out = new QTextStream(&file);//文本流
|
|
QStringList tempOption = out->readAll().split("\n");//每行以\n区分
|
|
for(int i = 1 ; i < tempOption.count()-1; i++)
|
|
{
|
|
QStringList tempbar = tempOption.at(i).split(",");//一行中的单元格以,区分
|
|
|
|
qDebug() << tempbar.at(2);
|
|
QString Group = tempbar.at(0);
|
|
QString TatolPoint = tempbar.at(1);
|
|
QString CurrentPoint = tempbar.at(2);
|
|
QString longitude = tempbar.at(3);
|
|
QString latitude = tempbar.at(4);
|
|
QString Altitude = tempbar.at(5);
|
|
QString Velocity = tempbar.at(6);
|
|
QString Radius = tempbar.at(7);
|
|
QString Action = tempbar.at(8);
|
|
|
|
ui->RouteBox->setCurrentIndex(Group.toInt());
|
|
ui->InfoTable->setRowCount(TatolPoint.toInt());
|
|
ui->InfoTable->setItem(CurrentPoint.toInt()-1,0,new QTableWidgetItem(CurrentPoint));
|
|
ui->InfoTable->setItem(CurrentPoint.toInt()-1,1,new QTableWidgetItem(longitude));
|
|
ui->InfoTable->setItem(CurrentPoint.toInt()-1,2,new QTableWidgetItem(latitude));
|
|
ui->InfoTable->setItem(CurrentPoint.toInt()-1,3,new QTableWidgetItem(Altitude));
|
|
ui->InfoTable->setItem(CurrentPoint.toInt()-1,4,new QTableWidgetItem(Velocity));
|
|
ui->InfoTable->setItem(CurrentPoint.toInt()-1,5,new QTableWidgetItem(Radius));
|
|
ui->InfoTable->setItem(CurrentPoint.toInt()-1,6,new QTableWidgetItem(Action));
|
|
|
|
ui->InfoTable->setVerticalHeaderItem(CurrentPoint.toInt()-1,new QTableWidgetItem(""));
|
|
|
|
emit ShowDownLoadWayPoint(CurrentPoint.toInt()-1,latitude.toDouble(),longitude.toDouble());
|
|
|
|
}
|
|
file.close();
|
|
}
|
|
}
|
|
|
|
void MissionDialog::on_MoveupButton_clicked()
|
|
{
|
|
QList<QTableWidgetSelectionRange>ranges=ui->InfoTable->selectedRanges();
|
|
int count=ranges.count();//0~ui->InfoTable->count
|
|
|
|
for(int i=0;i<count;i++)
|
|
{
|
|
int topRow=ranges.at(i).topRow();
|
|
int bottomRow=ranges.at(i).bottomRow();
|
|
for(int j=topRow;j<=bottomRow;j++)
|
|
{
|
|
if(j>0)
|
|
{//有bug
|
|
ui->InfoTable->insertRow(j-1);
|
|
|
|
QString str = ui->InfoTable->item(j+1,0)->text();
|
|
ui->InfoTable->setItem(j-1,0,new QTableWidgetItem(str));
|
|
str = ui->InfoTable->item(j+1,1)->text();
|
|
ui->InfoTable->setItem(j-1,1,new QTableWidgetItem(str));
|
|
str = ui->InfoTable->item(j+1,2)->text();
|
|
ui->InfoTable->setItem(j-1,2,new QTableWidgetItem(str));
|
|
str = ui->InfoTable->item(j+1,3)->text();
|
|
ui->InfoTable->setItem(j-1,3,new QTableWidgetItem(str));
|
|
str = ui->InfoTable->item(j+1,4)->text();
|
|
ui->InfoTable->setItem(j-1,4,new QTableWidgetItem(str));
|
|
str = ui->InfoTable->item(j+1,5)->text();
|
|
ui->InfoTable->setItem(j-1,5,new QTableWidgetItem(str));
|
|
str = ui->InfoTable->item(j+1,6)->text();
|
|
ui->InfoTable->setItem(j-1,6,new QTableWidgetItem(str));
|
|
|
|
ui->InfoTable->removeRow(j+1);
|
|
}
|
|
}
|
|
}
|
|
|
|
for(int i=0;i<ui->InfoTable->rowCount();i++)
|
|
{
|
|
ui->InfoTable->setItem(i,0,new QTableWidgetItem(QString::number(i+1)));
|
|
}
|
|
|
|
}
|
|
|
|
void MissionDialog::on_MovedownButton_clicked()
|
|
{
|
|
QList<QTableWidgetSelectionRange>ranges=ui->InfoTable->selectedRanges();
|
|
int count=ranges.count();//0~ui->InfoTable->count
|
|
|
|
for(int i=0;i<count;i++)
|
|
{
|
|
int topRow=ranges.at(i).topRow();
|
|
int bottomRow=ranges.at(i).bottomRow();
|
|
for(int j=topRow;j<=bottomRow;j++)
|
|
{
|
|
if(j<(ui->InfoTable->rowCount()-1))
|
|
{
|
|
ui->InfoTable->insertRow(j+2);
|
|
QString str = ui->InfoTable->item(j,0)->text();
|
|
ui->InfoTable->setItem(j+2,0,new QTableWidgetItem(str));
|
|
str = ui->InfoTable->item(j,1)->text();
|
|
ui->InfoTable->setItem(j+2,1,new QTableWidgetItem(str));
|
|
str = ui->InfoTable->item(j,2)->text();
|
|
ui->InfoTable->setItem(j+2,2,new QTableWidgetItem(str));
|
|
str = ui->InfoTable->item(j,3)->text();
|
|
ui->InfoTable->setItem(j+2,3,new QTableWidgetItem(str));
|
|
str = ui->InfoTable->item(j,4)->text();
|
|
ui->InfoTable->setItem(j+2,4,new QTableWidgetItem(str));
|
|
str = ui->InfoTable->item(j,5)->text();
|
|
ui->InfoTable->setItem(j+2,5,new QTableWidgetItem(str));
|
|
str = ui->InfoTable->item(j,6)->text();
|
|
ui->InfoTable->setItem(j+2,6,new QTableWidgetItem(str));
|
|
|
|
ui->InfoTable->removeRow(j);
|
|
}
|
|
}
|
|
}
|
|
|
|
for(int i=0;i<ui->InfoTable->rowCount();i++)
|
|
{
|
|
ui->InfoTable->setItem(i,0,new QTableWidgetItem(QString::number(i+1)));
|
|
}
|
|
}
|
|
|
|
void MissionDialog::on_DeleteButton_clicked()
|
|
{
|
|
QList<QTableWidgetSelectionRange>ranges=ui->InfoTable->selectedRanges();
|
|
int count=ranges.count();//0~ui->InfoTable->count
|
|
|
|
for(int i=0;i<count;i++)
|
|
{
|
|
int topRow=ranges.at(i).topRow();
|
|
int bottomRow=ranges.at(i).bottomRow();
|
|
for(int j=topRow;j<=bottomRow;j++)
|
|
{
|
|
qDebug() <<"selectRow"<<j+1;
|
|
ui->InfoTable->removeRow(j);
|
|
emit DeletePoint(j);
|
|
}
|
|
}
|
|
|
|
for(int i=0;i<ui->InfoTable->rowCount();i++)
|
|
{
|
|
ui->InfoTable->setItem(i,0,new QTableWidgetItem(QString::number(i+1)));
|
|
}
|
|
|
|
}
|
|
|
|
void MissionDialog::on_ClearButton_clicked()
|
|
{
|
|
ui->InfoTable->setRowCount(0);
|
|
emit DeleteAll();
|
|
}
|
|
|
|
|
|
void MissionDialog::GetWayPoint(mapcontrol::WayPointItem *Item)
|
|
{
|
|
int PointNnm = Item->Number();
|
|
QString Latitude,Longitude;
|
|
Latitude = QString::number(Item->Coord().Lat(),'f',8);
|
|
Longitude = QString::number(Item->Coord().Lng(),'f',8);
|
|
|
|
AddPoint(PointNnm,Latitude,Longitude);
|
|
}
|
|
|
|
void MissionDialog::isSendPointComplete(quint8 CMD1,quint8 CMD2,quint8 CMD3,quint8 CMD4,
|
|
quint8 GetRoute,quint8 Error2,quint8 Error3,quint8 Error4)
|
|
{
|
|
CMD1 = CMD1;
|
|
CMD2 = CMD2;
|
|
CMD3 = CMD3;
|
|
CMD4 = CMD4;
|
|
Error2 = Error2;
|
|
Error3 = Error3;
|
|
Error4 = Error4;
|
|
|
|
if(GetRoute == 0x07)
|
|
{
|
|
isGet = true;
|
|
}
|
|
else
|
|
{
|
|
isGet = false;
|
|
}
|
|
}
|
|
|
|
void MissionDialog::SendPoint()
|
|
{
|
|
quint8 Groups = 0;
|
|
quint16 TotalPoint = 0,CurrentPoint = 0;
|
|
double Latitude = 0,Longitude = 0;
|
|
quint16 Altitude = 0,Radius = 0,Velocity = 0;
|
|
quint8 Action = 0;
|
|
|
|
if(isGet)
|
|
{
|
|
PointNum ++;
|
|
isGet = false;
|
|
}
|
|
if(PointNum == ui->InfoTable->rowCount())
|
|
{
|
|
ui->progressBar->setValue(0);
|
|
ui->UploadButton->setText(tr("上传航点"));
|
|
RouteTimer->stop();
|
|
return;
|
|
}
|
|
|
|
if(ui->InfoTable->rowCount() != 0)
|
|
{
|
|
Groups = ui->RouteBox->currentIndex();
|
|
TotalPoint = ui->InfoTable->rowCount();
|
|
CurrentPoint = ui->InfoTable->item(PointNum,0)->text().toInt();
|
|
Latitude = ui->InfoTable->item(PointNum,1)->text().toDouble();
|
|
Longitude = ui->InfoTable->item(PointNum,2)->text().toDouble();
|
|
Altitude = ui->InfoTable->item(PointNum,3)->text().toInt();
|
|
Radius = ui->InfoTable->item(PointNum,4)->text().toInt();
|
|
Velocity = ui->InfoTable->item(PointNum,5)->text().toInt();
|
|
Action = ui->InfoTable->item(PointNum,6)->text().toInt();
|
|
}
|
|
|
|
int Value = (PointNum+1) * 100 / ui->InfoTable->rowCount();
|
|
ui->progressBar->setValue(Value);
|
|
|
|
/*
|
|
inifile->WriteIni(QString::number(Groups),QString::number(CurrentPoint),"Longitude",QString::number(Longitude));
|
|
inifile->WriteIni(QString::number(Groups),QString::number(CurrentPoint),"Latitude",QString::number(Latitude));
|
|
inifile->WriteIni(QString::number(Groups),QString::number(CurrentPoint),"Altitude",QString::number(Altitude));
|
|
inifile->WriteIni(QString::number(Groups),QString::number(CurrentPoint),"Velocity",QString::number(Velocity));
|
|
inifile->WriteIni(QString::number(Groups),QString::number(CurrentPoint),"Radius",QString::number(Radius));
|
|
inifile->WriteIni(QString::number(Groups),QString::number(CurrentPoint),"Action",QString::number(Action));
|
|
*/
|
|
|
|
|
|
emit SendOnePoint(Groups,TotalPoint,CurrentPoint,Latitude,Longitude,Altitude,Radius,Velocity,Action);
|
|
|
|
|
|
}
|
|
|
|
void MissionDialog::on_LoopBox_clicked()
|
|
{
|
|
bool Flag = ui->LoopBox->isChecked();
|
|
emit SetWPLoop(Flag);
|
|
this->WriteInit("Map","WPLoop",QString::number(Flag));
|
|
//qDebug() << ui->LoopBox->isChecked();
|
|
}
|
|
|
|
|
|
void MissionDialog::RecieveWayPoint(void)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
//初始化数据保存
|
|
void MissionDialog::WriteInit(QString Group, QString Name, QString Value)
|
|
{
|
|
QDir *temp = new QDir;
|
|
if(!temp->exists("./Init"))
|
|
temp->mkdir("./Init");//如果文件夹不存在就新建
|
|
|
|
//Qt中使用QSettings类读写ini文件
|
|
//QSettings构造函数的第一个参数是ini文件的路径,第二个参数表示针对ini文件,第三个参数可以缺省
|
|
QSettings *configIniWrite = new QSettings("./Init/FGCS.ini", QSettings::IniFormat);
|
|
//向ini文件中写入内容,setValue函数的两个参数是键值对
|
|
//向ini文件的第一个节写入内容,ip节下的第一个参数
|
|
QString str = "/";
|
|
str.append(Group);
|
|
str.append("/");
|
|
str.append(Name);
|
|
configIniWrite->setValue(str,Value);
|
|
//写入完成后删除指针
|
|
delete configIniWrite;
|
|
}
|
|
|
|
QString MissionDialog::ReadInit(QString Group,QString Name)
|
|
{
|
|
QDir *temp = new QDir;
|
|
if(!temp->exists("./Init"))
|
|
{
|
|
return NULL;//如果文件夹不存在就不执行
|
|
}
|
|
|
|
QSettings *configIniRead = new QSettings("./Init/FGCS.ini", QSettings::IniFormat);
|
|
//将读取到的ini文件保存在QString中,先取值,然后通过toString()函数转换成QString类型
|
|
QString str = "/";
|
|
str.append(Group);
|
|
str.append("/");
|
|
str.append(Name);
|
|
QString ipResult = configIniRead->value(str).toString();
|
|
//读入入完成后删除指针
|
|
delete configIniRead;
|
|
//qDebug() << ipResult;
|
|
return ipResult;
|
|
}
|
|
|
|
|
|
|
|
void MissionDialog::on_InfoTable_cellChanged(int row, int column)//行列
|
|
{
|
|
row = row;
|
|
column = column;
|
|
/*
|
|
QString data = ui->InfoTable->item(row+1,column)->text();
|
|
switch(column)
|
|
{
|
|
case 1:{
|
|
inifile->WriteIni(QString::number(ui->RouteBox->currentIndex()),QString::number(row+1),"Longitude",
|
|
data);
|
|
}break;
|
|
case 2:{
|
|
inifile->WriteIni(QString::number(ui->RouteBox->currentIndex()),QString::number(row+1),"Latitude",
|
|
data);
|
|
}break;
|
|
case 3:{
|
|
inifile->WriteIni(QString::number(ui->RouteBox->currentIndex()),QString::number(row+1),"Altitude",
|
|
data);
|
|
}break;
|
|
case 4:{
|
|
inifile->WriteIni(QString::number(ui->RouteBox->currentIndex()),QString::number(row+1),"Velocity",
|
|
data);
|
|
}break;
|
|
case 5:{
|
|
inifile->WriteIni(QString::number(ui->RouteBox->currentIndex()),QString::number(row+1),"Radius",
|
|
data);
|
|
}break;
|
|
case 6:{
|
|
inifile->WriteIni(QString::number(ui->RouteBox->currentIndex()),QString::number(row+1),"Action",
|
|
data);
|
|
}break;
|
|
}*/
|
|
//qDebug() <<ui->InfoTable->item(row,column)->text();
|
|
}
|
|
|