#include "readsonicpoint.h"
#include "marinebase.h"
#include "QMessageBox"
#include "qfiledialog.h"
ReadSonicPoint::ReadSonicPoint(QWidget *parent, QString filepath)
: QDialog(parent)
{
ui.setupUi(this);
QList csv_data_list;
QVector point_list;
csv_data_list = readSonicPointFile(filepath);
point_list = readStringListData(csv_data_list, 0);
setEnableAllAxis(true, true, true, false);
setQwtPlotTitle(" (m/s)"," (m)"," (℃)");
//setXScale();
setInputData(point_list, "curve 1");
}
void ReadSonicPoint::openFilePath()
{
QString filepath = QFileDialog::getOpenFileName(NULL, " ", "", "CSV(*.CSV)");
if (filepath.isEmpty())
{
QMessageBox::warning(NULL, " ", " ", " ");
return;
}
}
QVector ReadSonicPoint::readStringListData(QList sonic_data_list, int flag)
{
QVector sonic_point_list;
QString sonic_data;
QList sonicpointdata;
//flag = 0: / flag = 1: /
for (int i = 0; i < sonic_data_list.size(); i++)
{
sonic_data = sonic_data_list[i];
sonicpointdata = sonic_data.split(",");
if (flag == 0)
{
QPointF point;
point.setX(sonicpointdata[0].toDouble());
point.setY(sonicpointdata[1].toDouble());
sonic_point_list.append(point);
}
else if (flag == 1)
{
QPointF point;
point.setX(sonic_data_list[0].toDouble());
point.setY(sonic_data_list[1].toDouble());
sonic_point_list.append(point);
}
}
return sonic_point_list;
}
QList ReadSonicPoint::readSonicPointFile(QString csv_path)
{
MSSetProperty(QString::fromLocal8Bit("TXTDSC"), csv_path); //
QFile csvFile(csv_path);
QList sonic_data_list;
QString sonic_data;
if (csvFile.open(QIODevice::ReadWrite))
{
QTextStream stream(&csvFile);
int i = 0;
while (!stream.atEnd())
{
i = i + 1;
sonic_data = stream.readLine();
if (i > 2)
{
sonic_data_list.append(sonic_data);
}
}
csvFile.close();
}
return sonic_data_list;
}
void ReadSonicPoint::setQwtPlotTitle(QString yLeftName, QString xBottomName, QString yRightName)
{
ui.qwtPlot_Sonic->setAxisTitle(QwtPlot::yLeft, yLeftName);
ui.qwtPlot_Sonic->setAxisTitle(QwtPlot::xBottom, xBottomName);
ui.qwtPlot_Sonic->setAxisTitle(QwtPlot::yRight, yRightName);
}
void ReadSonicPoint::setInputData(QVector vector , QString lineTitle)
{
QwtPointSeriesData* series = new QwtPointSeriesData(vector);
QwtPlotCurve* curve1 = new QwtPlotCurve(lineTitle);
//
curve1->setData(series);
// qwtPlot
curve1->attach(ui.qwtPlot_Sonic);
curve1->setPen(QColor(255, 0, 0), 2, Qt::SolidLine);//
//
QwtPlotGrid* grid = new QwtPlotGrid();
grid->setPen(QColor(222, 222, 222), 1);
grid->attach(ui.qwtPlot_Sonic);
ui.qwtPlot_Sonic->replot();
ui.qwtPlot_Sonic->show();
}
void ReadSonicPoint::setEnableAllAxis(bool yLeftEnable, bool yRightEnable, bool xBottomEnable, bool xTopEnable)
{
ui.qwtPlot_Sonic->enableAxis(QwtPlot::yLeft, yLeftEnable);
ui.qwtPlot_Sonic->enableAxis(QwtPlot::yRight, yRightEnable);
ui.qwtPlot_Sonic->enableAxis(QwtPlot::xBottom, xBottomEnable);
ui.qwtPlot_Sonic->enableAxis(QwtPlot::xTop, xTopEnable);
}
void ReadSonicPoint::setXScale()
{
ui.qwtPlot_Sonic->setAxisScale(QwtPlot::xBottom,1,30);
ui.qwtPlot_Sonic->setAxisScale(QwtPlot::yLeft, 1530,1550);
}
ReadSonicPoint::~ReadSonicPoint()
{
}