#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <qmessagebox>
#include <qfiledialog>
#include <string>
#include <math.h> /* cos */
mainwindow::mainwindow(qwidget *parent) :
qmainwindow(parent),
ui(new ui::mainwindow)
{
ui->setupui(this);
connect(ui->pushbutton,signal(clicked()),this,slot(findcliecked()));
connect(ui->pushbutton_2,signal(clicked()),this,slot(parselogcliecked()));
}
mainwindow::~mainwindow()
delete ui;
void mainwindow::findcliecked()
qstringlist filenamelist;
qfiledialog* fd = new qfiledialog(this);
fd->resize(240,320);
//fd->setfixedheight(tr("allfile(*.*);;vplog(*.vpl)")); //?置檔案??器
fd->setviewmode(qfiledialog::list);
if ( fd->exec() == qdialog::accepted )
{
filenamelist = fd->selectedfiles();
ui->textedit->settext(filenamelist[0]);
}
else
fd->close();
void mainwindow::parselogcliecked()
qstring qfilename = ui->textedit->toplaintext();
if (qfilename.isempty())
return;
std::string filename = qfilename.tostdstring();
file * fp = fopen(filename.c_str(),"rb");
file * wfp = null;
if (fp)
int n = filename.rfind('/');
std::string cvsfilename;
if (n != std::string::npos)
{
cvsfilename = filename.substr(0,n+1);
cvsfilename += "vp.csv";
wfp = fopen(cvsfilename.c_str(),"wb");
if (!wfp)
{
fclose(fp);
return;
}
char buff[] = "time,x,y,z\n";
fwrite(buff, 1, strlen(buff),wfp);
}
char line[1024] = {0};
char outline[1024] = {0};
while(fgets(line,1024,fp))
std::string strline = line;
std::string strtime = parseline(strline,"time:","]");
int m = strtime.find(',');
if (m != std::string::npos)
strtime.replace(m,1," ");
std::string strx = parseline(strline,"x:",",");
std::string stry = parseline(strline,"y:",",");
std::string strz = parseline(strline,"z:",",");
if (!strx.empty())
sprintf(outline,"%s,%s,%s,%s\n",strtime.c_str(),strx.c_str(),stry.c_str(),strz.c_str());
fwrite(outline,1,strlen(outline),wfp);
fclose(fp);
fclose(wfp);
qmessagebox message(qmessagebox::noicon, "title", "finished.");
message.exec();
std::string mainwindow::parseline(const std::string & strline, const char* start,
const char* end)
std::string strresutl;
int pos = strline.find(start);
if (pos != std::string::npos)
int pos2= strline.find(end,pos);
if (std::string::npos != pos2)
strresutl = strline.substr(pos+2,(pos2 -(pos+2)));
return strresutl;