X-Git-Url: http://git.maemo.org/git/?p=speedfreak;a=blobdiff_plain;f=Client%2Froutedialog.cpp;h=35f232f1286236c2365113ce2ff14fc423bbb01d;hp=fb96e81fc8f3b3d073f1b05031697e1574266b52;hb=3fa5091583bdd9421a4ecd5851d954e9bed58731;hpb=b4cd10bd441947453d238e1c37e8268bff6929e1 diff --git a/Client/routedialog.cpp b/Client/routedialog.cpp index fb96e81..35f232f 100644 --- a/Client/routedialog.cpp +++ b/Client/routedialog.cpp @@ -1,11 +1,13 @@ /* * RouteDialog class * - * @author Olavi Pulkkinen - * @copyright (c) 2010 Speed Freak team - * @license http://opensource.org/licenses/gpl-license.php GNU Public License + * @author Olavi Pulkkinen + * @author Toni Jussila + * @copyright (c) 2010 Speed Freak team + * @license http://opensource.org/licenses/gpl-license.php GNU Public License */ +#include "routesavedialog.h" #include "routedialog.h" #include "ui_routedialog.h" #include "usersettings.h" @@ -16,8 +18,9 @@ #include #include #include +#include -/* +/** * Vector class. * In starting Qt 4.6 there is QVector3D. * Later (updating Qt version) this class can be removed. @@ -140,7 +143,8 @@ void setFromPoint( Viewing *v); void transformseg( Viewing *v, Vector *v1, Vector *v2, int *xscreen1, int *yscreen1, int *xscreen2, int *yscreen2 ); #define R 6378.140 // The radius of the earth by kilometers -/* + +/** * count distance of two points (defined by longitude & latitude) * on the surface of the earth. */ @@ -163,27 +167,55 @@ qreal countDistance(Vector *p1, Vector *p2) return R*c; // Return distance in kilometers } -RouteDialog::RouteDialog(QWidget *parent) : - QDialog(parent), - ui(new Ui::RouteDialog) +/** + * Constructor of this class. + */ +RouteDialog::RouteDialog(RouteSaveDialog *parent) : + QDialog(parent), ui(new Ui::RouteDialog) { + qDebug() << "__RouteDialog"; ui->setupUi(this); + 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); - } + helpRoutingDialog = NULL; + + // Button settings + ui->sendPushButton->setAutoFillBackground(true); + ui->sendPushButton->setStyleSheet("background-color: rgb(0, 0, 0); color: rgb(255, 255, 255)"); + ui->newPushButton->setAutoFillBackground(true); + ui->newPushButton->setStyleSheet("background-color: rgb(0, 0, 0); color: rgb(255, 255, 255)"); + + // Clear labels + ui->labelInfoToUser->setText(""); + ui->speedValueLabel->setText(""); + ui->avgSpeedValueLabel->setText(""); + + // Check login + checkLogin(); + + // Set average speed + QString average; + ui->avgSpeedValueLabel->setText(average.sprintf("%.1f", parent->getAverageSpeed()) + " km/h"); + ui->distanceValueLabel->setText(parent->getDistanceTraveled() + " km"); } +/** + * Destructor of this class. + */ RouteDialog::~RouteDialog() { - delete ui; + qDebug() << "__~RouteDialog"; + if(ui) + delete ui; + if(calibrateDialog) + delete calibrateDialog; } +/** + * + */ void RouteDialog::changeEvent(QEvent *e) { QDialog::changeEvent(e); @@ -195,24 +227,43 @@ 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) +/** + * + */ +void drawFlag( RouteDialog *rD, QPainter *p, int x, int y, QString startFinish) { /*QPolygon pg; @@ -230,6 +281,9 @@ void drawFlag( RouteDialog *rD, QPainter *p, int x, int y) 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); + + // Draw start or finish + p->drawText(x+10, y, startFinish); } else { @@ -237,8 +291,10 @@ void drawFlag( RouteDialog *rD, QPainter *p, int x, int y) 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); - } + // Draw start or finish + p->drawText(x+10, y, startFinish); + } } else if (y <= (rD->getTop() + 25)) { @@ -250,6 +306,9 @@ void drawFlag( RouteDialog *rD, QPainter *p, int x, int y) 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); + + // Draw start or finish + p->drawText(x+10, y+15, startFinish); } else { @@ -257,6 +316,9 @@ void drawFlag( RouteDialog *rD, QPainter *p, int x, int y) 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); + + // Draw start or finish + p->drawText(x+10, y+15, startFinish); } } //p->drawPolygon(); @@ -273,6 +335,9 @@ void drawFlag( RouteDialog *rD, QPainter *p, int x, int y) /* */ void RouteDialog::paintEvent(QPaintEvent *) { + // Check login + checkLogin(); + int type = 0; // 0 for 2d, 1 for 3d int startx, starty; // Starting point of the route int i, maxi; @@ -280,6 +345,7 @@ void RouteDialog::paintEvent(QPaintEvent *) int x1Screen, y1Screen, x2Screen, y2Screen; Vector v1, v2; QPainter painter(this); + int startStop = 0; painter.setRenderHint(QPainter::Antialiasing, true); painter.setPen(QPen((Qt::white),2)); @@ -321,7 +387,7 @@ void RouteDialog::paintEvent(QPaintEvent *) // Starting point startx = x1Screen; starty = y1Screen; // painter.drawEllipse( x1Screen-5, y1Screen-5, 10, 10); - drawFlag( this, &painter, x1Screen , y1Screen); + drawFlag( this, &painter, x1Screen, y1Screen, "Start" ); } painter.drawLine( x1Screen, y1Screen, x2Screen, y2Screen); } @@ -329,7 +395,7 @@ void RouteDialog::paintEvent(QPaintEvent *) if (x2Screen != startx || y2Screen != starty) { //painter.drawEllipse( x2Screen-5, y2Screen-5, 10, 10); - drawFlag( this, &painter,x2Screen, y2Screen ); + drawFlag( this, &painter, x2Screen, y2Screen, "Finish" ); } { @@ -354,19 +420,29 @@ void RouteDialog::paintEvent(QPaintEvent *) // Show max velocity point by yellow circle painter.drawEllipse( x1Screen-5, y1Screen-5, 10, 10); + painter.drawEllipse( ui->maxSpeedLabel->geometry().x()-15, ui->maxSpeedLabel->geometry().y()+15, 10, 10); QString jono; - jono = QString("%1 km/h").arg(maxv); + //jono = QString("%1 km/h").arg(maxv); + jono.sprintf("%.1f km/h", maxv); // Show only 1 decimal ui->speedValueLabel->setText(jono); } } -bool RouteDialog::readRouteFromFile( QString &routeFile) - { +/** + * + */ +bool RouteDialog::readRouteFromFile( QString &routeFile , CalibrateDialog *calibrateDialog) +{ + QString rFile = routeFile; //Not used Vector temp; QString rivi; QFile file; + progresbar = calibrateDialog; + int progresbarValue = 0; + progresbar->setProgressValue(++progresbarValue); + //QString fileName = QFileDialog::getOpenFileName(this, // tr("Read Route"), "./", tr("Route Files (*.txt)")); @@ -375,6 +451,7 @@ bool RouteDialog::readRouteFromFile( QString &routeFile) if (!file.open(QIODevice::ReadOnly)) { QMessageBox::about(0, "Error", "File not found"); + progresbar->setProgressValue(100); return false; } @@ -490,9 +567,9 @@ bool RouteDialog::readRouteFromFile( QString &routeFile) */ return true; - } +} -/* +/** * Find out data range for x-, y- and z-coordinates */ void dataMinMax( void) @@ -547,7 +624,7 @@ void dataMinMax( void) //QMessageBox::about(0,"Tark", jono); } -/* +/** * Setting the point where the viewed object is. In the middle of datapoints. */ void setAtPoint( Viewing *v) @@ -571,7 +648,7 @@ void setAtPoint( Viewing *v) * */ } -/* +/** * Setting the point where the object is viewed by eye. */ void setFromPoint( Viewing *v) @@ -604,7 +681,8 @@ void setFromPoint( Viewing *v) #define RIGHTEDGE 0x02 #define BOTTOMEDGE 0x04 #define TOPEDGE 0x08 -/* + +/** * Returns a code specifying which edge in the viewing pyramid was crossed. * There may be more than one. */ @@ -621,7 +699,7 @@ int code( qreal x, qreal y, qreal z) return c; } -/* +/** * Converts clipped world coordinates to screen coordinates. */ void WORLDtoSCREEN( qreal xWorld, qreal yWorld, int *xScreen, int *yScreen) @@ -630,7 +708,7 @@ void WORLDtoSCREEN( qreal xWorld, qreal yWorld, int *xScreen, int *yScreen) *yScreen = (int) (c*yWorld+d); } -/* +/** * Clips the line segment in three-dimensional coordinates to the * viewing pyramid. */ @@ -705,7 +783,7 @@ void clip3d( qreal x1, qreal y1, qreal z1, qreal x2, qreal y2, qreal z2, int *xs //Now ready to draw line( xscreen1, yscreen1, xscreen2, yscreen2); } -/* +/** * Transform the segment connecting the two vectors into the viewing plane. * clip3d() clips the line if needed. */ @@ -730,17 +808,78 @@ void transformseg( Viewing *v, Vector *v1, Vector *v2, int *xscreen1, int *yscre clip3d(x1,y1,z1,x2,y2,z2, xscreen1, yscreen1, xscreen2, yscreen2 ); } +/** + * This slot function is called when ever new push button clicked. + */ void RouteDialog::on_newPushButton_clicked() { close(); // go back to previous dialog } +/** + * This slot function is called when ever send push button clicked. + */ void RouteDialog::on_sendPushButton_clicked() { + ui->sendPushButton->setEnabled(false); emit sendroute(); } +/** + * This function is set info text to user. + */ void RouteDialog::setLabelInfoToUser(QString infoText) { this->ui->labelInfoToUser->setText(infoText); } + +/** + * This function enable send server button. + */ +void RouteDialog::setSendServerButtonEnabled() +{ + ui->sendPushButton->setEnabled(true); +} + +/** + * This function check login and set send route to server button disabled/enabled. + */ +void RouteDialog::checkLogin() +{ + if (loginSaved()) + { + ui->sendPushButton->setEnabled(true); + ui->labelInfoToUser->setText(""); + } + else + { + ui->sendPushButton->setEnabled(false); + ui->labelInfoToUser->setText("You're not logged! Please register or log in."); + } +} + +/** + * This slot function called when ever info button clicked. + */ +void RouteDialog::on_pushButtonInfo_clicked() +{ + if(!helpRoutingDialog) + { + helpRoutingDialog = new HelpRoutingDialog; + } + connect(helpRoutingDialog, SIGNAL(rejected()), this, SLOT(killHelpDialog())); + helpRoutingDialog->show(); +} + +/** + * This slot function called when ever dialog rejected. + */ +void RouteDialog::killHelpDialog() +{ + if(helpRoutingDialog) + { + qDebug() << "__Route kill: helpRoutingDialog"; + delete helpRoutingDialog; + helpRoutingDialog = NULL; + } +}