X-Git-Url: http://git.maemo.org/git/?p=speedfreak;a=blobdiff_plain;f=Client%2Froutedialog.cpp;h=07357530e287e2237c0134ed1b2f07686213e24c;hp=42f5faadb9376c23a275beae1b37ceafd8774c69;hb=711ece5e3a718c47646650e163d45ed1418664c0;hpb=38d06879b8d8d625c666621b4eba6356ad6cf683 diff --git a/Client/routedialog.cpp b/Client/routedialog.cpp index 42f5faa..0735753 100644 --- a/Client/routedialog.cpp +++ b/Client/routedialog.cpp @@ -8,12 +8,14 @@ #include "routedialog.h" #include "ui_routedialog.h" +#include "usersettings.h" #include #include #include #include #include #include +#include /* * Vector class. @@ -22,16 +24,19 @@ */ class Vector { - qreal x, y, z; + qreal x, y, z; // Location + qreal v; // Velocity public: Vector() { x=0.; y=0. ; z=0.; }; Vector( qreal initX, qreal initY, qreal initZ) { x = initX, y = initY; z = initZ; }; void setX( qreal newX) { x = newX; }; void setY( qreal newY) { y = newY; }; void setZ( qreal newZ) { z = newZ; }; + void setV( qreal newV) { v = newV; }; qreal getX() { return x; }; qreal getY() { return y; }; qreal getZ() { return z; }; + qreal getV() { return v; }; qreal length() { return sqrt(x*x+y*y+z*z); }; Vector operator+(Vector v) { @@ -163,7 +168,15 @@ RouteDialog::RouteDialog(QWidget *parent) : ui(new Ui::RouteDialog) { ui->setupUi(this); - left = 5; top = 5; right = 395; bottom = 195; // Limits in screen coordinates + this->setWindowTitle("Route"); + left = 5; top = 5; right = 495; bottom = 295; // Limits in screen coordinates + + // Send rout to server button disable/enable. + ui->sendPushButton->setEnabled(false); + if (loginSaved()) + { + ui->sendPushButton->setEnabled(true); + } } RouteDialog::~RouteDialog() @@ -182,7 +195,75 @@ void RouteDialog::changeEvent(QEvent *e) break; } } +int RouteDialog::getLeft() +{ + return left; +} +int RouteDialog::getRight() +{ + return right; +} +int RouteDialog::getTop() +{ + return top; +} +int RouteDialog::getBottom() +{ + return bottom; +} + +void drawFlag( RouteDialog *rD, QPainter *p, int x, int y) +{ + /*QPolygon pg; + + pg.setPoint(0,x, y-25); + pg.setPoint(1,x+10,y-20); + pg.setPoint(2,x, y-15); + pg.setPoint(3,x,y-20);*/ + if (y> (rD->getTop() + 25)) + { + // Upside + p->drawLine(x,y,x,y-15); + if (x <= (rD->getRight()-20)) + { + // flag right + p->drawLine( x, y-25, x+10, y-20); + p->drawLine( x+10, y-20, x, y-15); + p->drawLine( x, y-15, x, y-25); + } + else + { + // Flag left + p->drawLine( x, y-25, x-10, y-20); + p->drawLine( x-10, y-20, x, y-15); + p->drawLine( x, y-15, x, y-25); + } + } + else if (y <= (rD->getTop() + 25)) + { + // downside + p->drawLine(x,y,x,y+15); + if (x <= (rD->getRight()-20)) + { + // flag right + p->drawLine( x, y+25, x+10, y+20); + p->drawLine( x+10, y+20, x, y+15); + p->drawLine( x, y+15, x, y+25); + } + else + { + // Flag left + p->drawLine( x, y+25, x-10, y+20); + p->drawLine( x-10, y+20, x, y+15); + p->drawLine( x, y+15, x, y+25); + } + } + //p->drawPolygon(); + // p->drawPolygon( pg,Qt::OddEvenFill); + //p->drawPolyline( &pg); + //p->drawPoints( pg); +} /** * Draws route to the route dialog. @@ -201,15 +282,15 @@ void RouteDialog::paintEvent(QPaintEvent *) QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true); - painter.setPen(QPen((Qt::black),2)); + painter.setPen(QPen((Qt::white),2)); painter.setBrush(QBrush((Qt::yellow), Qt::SolidPattern)); // Draw route window frame /*painter.drawLine(left,top,right,top); painter.drawLine(right,top,right,bottom); painter.drawLine(left,top,left,bottom); - painter.drawLine(left,bottom,right,bottom); - */ + painter.drawLine(left,bottom,right,bottom);*/ + maxi = vertexList.size(); for (i=0; i maxv) + { + maxv = v.getV(); + maxvx = v.getX(); + maxvy = v.getY(); + } + } + // Translate world coordinates to screen coordinates + x1Screen = left + (maxvx-xmin)/(xmax-xmin)*(right-left); + y1Screen = top + (ymax-maxvy)/(ymax-ymin)*(bottom-top); + + // Show max velocity point by yellow circle + painter.drawEllipse( x1Screen-5, y1Screen-5, 10, 10); + + QString jono; + jono = QString("%1 m/s").arg(maxv); + ui->speedValueLabel->setText(jono); + } } -/* - * Read route coordinates (latitude, longitude, altitude) from file. - */ -bool RouteDialog::readRouteFromFile( QString &filename) -{ +bool RouteDialog::readRouteFromFile( QString &routeFile) + { Vector temp; QString rivi; QFile file; - QString fileName = QFileDialog::getOpenFileName(this, - tr("Read Route"), "./", tr("Route Files (*.txt)")); + //QString fileName = QFileDialog::getOpenFileName(this, + // tr("Read Route"), "./", tr("Route Files (*.txt)")); - file.setFileName( fileName); + //file.setFileName( fileName); + file.setFileName( "routetemp.xml"); if (!file.open(QIODevice::ReadOnly)) { QMessageBox::about(0, "Error", "File not found"); @@ -275,33 +379,84 @@ bool RouteDialog::readRouteFromFile( QString &filename) } vertexList.clear(); + while(!file.atEnd()) { - QString str1, str2, str3; + int count; + bool allRead; + QString astr1, astr2, astr3, astr4; + QString str1, str2, str3, str4; rivi = file.readLine(); + allRead = false; + count = 0; + while( !allRead) + { + astr1 = rivi.section(" ", count*4+1, count*4+1); // latitude="" + astr2 = rivi.section(" ", count*4+2, count*4+2); // longitude="" + astr3 = rivi.section(" ", count*4+3, count*4+3); // altitude="" + astr4 = rivi.section(" ", count*4+4, count*4+4); // speed="" + + { + double x, y, z, v; + str1 = astr1.section('"',1,1); + str2 = astr2.section('"',1,1); + str3 = astr3.section('"',1,1); + str4 = astr4.section('"',1,1); + //QString str = QString("%1 %2 %3 %4").arg(str1).arg(str2).arg(str3).arg(str4); + //QMessageBox::about(0, "LUKEE", str); + /* */ + + if (str1.length() > 0) + { + x = str2.toDouble();// latitude y-value + y = str1.toDouble();// longitude x-value + z = str3.toDouble();// altitude z-value + v = str4.toDouble();// speed m/s + // QString str = QString("%1 %2 %3 %4").arg(x).arg(y).arg(z).arg(v); + // QMessageBox::about(0, "LUKEE", str); + temp.setX( x); // Longitude + temp.setY( y); // Latitude + temp.setZ( z); // altitude + temp.setV( v); + + vertexList.append(temp); + count++; + } + else + { + allRead = true; + } + } + } + // Older version + /* str1 = rivi.section(" ", 0, 0); if (str1.compare("Start:") != 0 && str1.compare("Stop:") != 0) { - str1 = rivi.section(" ", 2, 2); // latitude y-value - str2 = rivi.section(" ", 4, 4); // longitude x-value - str3 = rivi.section(" ", 6, 6); // altitude z-value + str1 = rivi.section(" ", 2, 2); // latitude y-value + str2 = rivi.section(" ", 4, 4); // longitude x-value + str3 = rivi.section(" ", 6, 6); // altitude z-value + str4 = rivi.section(" ", 8, 8); // speed m/s //QString str = QString("la: %1 lo: %2 al: %3").arg(str1).arg(str2).arg(str3); //QMessageBox::about(0, "LUKEE", str); if (str1.length() > 0) { - double x, y, z; + double x, y, z, v; x = str2.toDouble(); y = str1.toDouble(); z = str3.toDouble(); + v = str4.toDouble(); temp.setX( x); // Longitude temp.setY( y); // Latitude temp.setZ( z); // altitude + temp.setV( v); vertexList.append(temp); } } + */ } file.close(); @@ -335,7 +490,7 @@ bool RouteDialog::readRouteFromFile( QString &filename) */ return true; -} + } /* * Find out data range for x-, y- and z-coordinates @@ -574,3 +729,13 @@ void transformseg( Viewing *v, Vector *v1, Vector *v2, int *xscreen1, int *yscre clip3d(x1,y1,z1,x2,y2,z2, xscreen1, yscreen1, xscreen2, yscreen2 ); } + +void RouteDialog::on_newPushButton_clicked() +{ + close(); // go back to previous dialog +} + +void RouteDialog::on_sendPushButton_clicked() +{ + // Send route points file to server +}