Route save dialog development. Added: GPS,icons...
authorToni Jussila <toni.jussila@fudeco.com>
Wed, 31 Mar 2010 07:50:51 +0000 (10:50 +0300)
committerToni Jussila <toni.jussila@fudeco.com>
Wed, 31 Mar 2010 07:50:51 +0000 (10:50 +0300)
Merge branch 'development/routesavedialog'

Conflicts:
Client/mainwindow.cpp
Client/speedfreak.pro

1  2 
Client/mainwindow.cpp
Client/routesavedialog.cpp
Client/speedfreak.pro

diff --combined Client/mainwindow.cpp
@@@ -1,7 -1,7 +1,8 @@@
  /*
   * Mainwindow for speedFreak project
   *
-- * @author      Rikhard Kuutti <rikhard.kuutti@fudeco.com>
++ * @author      Rikhard Kuutti        <rikhard.kuutti@fudeco.com>
++ * @author      Toni Jussila  <toni.jussila@fudeco.com>
   * @copyright   (c) 2010 Speed Freak team
   * @license     http://opensource.org/licenses/gpl-license.php GNU Public License
   */
@@@ -11,8 -11,6 +12,8 @@@
  
  #include <QDesktopServices>
  #include <QUrl>
 +#include <QSettings>
 +#include <QDebug>
  
  MainWindow::MainWindow(QWidget *parent) :
      QMainWindow(parent),
  {
      ui->setupUi(this);
  
 +    QCoreApplication::setOrganizationName("Fudeco Oy");
 +    QCoreApplication::setOrganizationDomain("fudeco.com");
 +    QCoreApplication::setApplicationName("Speed Freak");
 +
      creditsDialog = new CreditsDialog;
      routeSaveDialog = new RouteSaveDialog;
 +    settingsDialog = new SettingsDialog;
 +    connect(settingsDialog,SIGNAL(sendregistration()),this,SLOT(regUserToServer()));
 +    connect(settingsDialog,SIGNAL(userNameChanged()),this,SLOT(userLogin()));
 +    topResultDialog = new TopResultDialog;
 +    connect(topResultDialog, SIGNAL(refreshCategoryList()), this, SLOT(clientRequestCategoryList()));
 +    connect(topResultDialog, SIGNAL(refreshTopList(int)), this, SLOT(clientRequestTopList(int)));
 +    accstart = NULL;
 +
 +    httpClient = new HttpClient(this);
 +    connect(httpClient->myXmlreader, SIGNAL(receivedCategoryList()), this, SLOT(setCategoryCompoBox()));
 +    connect(httpClient->myXmlreader, SIGNAL(receivedTop10List()), this, SLOT(showTop10()));
 +
 +    welcomeDialog = new WelcomeDialog;
 +    welcomeDialog->show();
+     //Button settings
+     ui->pushButtonAccelerate->setAutoFillBackground(true);
+     ui->pushButtonAccelerate->setStyleSheet("background-color: rgb(0, 0, 0); color: rgb(255, 255, 255)");
+     ui->pushButtonRoute->setAutoFillBackground(true);
+     ui->pushButtonRoute->setStyleSheet("background-color: rgb(0, 0, 0); color: rgb(255, 255, 255)");
+     ui->pushButtonResults->setAutoFillBackground(true);
+     ui->pushButtonResults->setStyleSheet("background-color: rgb(0, 0, 0); color: rgb(255, 255, 255)");
+     ui->pushButtonSettings->setAutoFillBackground(true);
+     ui->pushButtonSettings->setStyleSheet("background-color: rgb(0, 0, 0); color: rgb(255, 255, 255)");
+     ui->pushButtonWWW->setAutoFillBackground(true);
+     ui->pushButtonWWW->setStyleSheet("background-color: rgb(0, 0, 0); color: rgb(255, 255, 255)");
  }
  
  MainWindow::~MainWindow()
  {
      delete ui;
      delete routeSaveDialog;
 +
 +    if(!accstart)
 +        delete accstart;
  }
  
  void MainWindow::changeEvent(QEvent *e)
@@@ -78,82 -66,3 +90,82 @@@ void MainWindow::on_pushButtonRoute_cli
  {
      routeSaveDialog->show();
  }
 +
 +void MainWindow::on_pushButtonSettings_clicked()
 +{
 +    settingsDialog->show();
 +}
 +
 +void MainWindow::on_pushButtonAccelerate_clicked()
 +{
 +    if(!accstart)
 +        accstart = new accelerationstart(this);
 +    accstart->show();
 +}
 +
 +void MainWindow::on_pushButtonResults_clicked()
 +{
 +    topResultDialog->show();
 +}
 +
 +/**
 +  *This slot function is called when ever mytTopResultDialog emits signal refreshCategoryList button clicked.
 +  */
 +void MainWindow::clientRequestCategoryList()
 +{
 +    httpClient->requestCategories();
 +}
 +
 +/**
 +  *This slot function is called when ever mytTopResultDialog emits signal refreshTopList button clicked.
 +  */
 +void MainWindow::clientRequestTopList(int index)
 +{
 +    qDebug() << "index" << index << httpClient->myXmlreader->myCategoryList->getRecentCategory(index);
 +    QString limit = QString::number(topResultDialog->getLimitNr());
 +    httpClient->requestTopList(httpClient->myXmlreader->myCategoryList->getRecentCategory(index), limit);
 +}
 +
 +/**
 +  *This function is used to set items to category combobox. Top-tab view.
 +  *@param
 +  */
 +void MainWindow::setCategoryCompoBox()
 +{
 +    qDebug() << "_setCategoryCompoBox";
 +    topResultDialog->setCompoBoxCategories(httpClient->myXmlreader->myCategoryList->getCategoryList());
 +}
 +
 +/**
 +  *This function prcesses UI updating after a new top10List has been received.
 +  *@todo Check where limitNr is taken, fixed or user input, see on_comboBoxTopCategory_currentIndexChanged.
 +  */
 +void MainWindow::showTop10()
 +{
 +    qDebug() << "_showTop10";
 +    int ind = topResultDialog->getRecentCategoryIndex();
 +    setListViewTopList(httpClient->myXmlreader->myCategoryList->getRecentCategory(ind), topResultDialog->getLimitNr());
 +}
 +
 +/**
 +  *This function is used to set items to labelTopList. Top-tab view.
 +  *@param Category
 +  *@param Size, number of results.
 +  */
 +void MainWindow::setListViewTopList(QString category, int size)
 +{
 +    qDebug() << "_setListViewTopList" << category;
 +    QString topList;
 +    topList.append(httpClient->myXmlreader->myCategoryList->getTopList(category, size));
 +    topResultDialog->showTopList(topList);
 +}
 +
 +void MainWindow::regUserToServer()
 +{
 +    httpClient->requestRegistration();
 +}
 +
 +void MainWindow::userLogin()
 +{
 +    httpClient->checkLogin();
 +}
@@@ -18,14 -18,43 +18,44 @@@ RouteSaveDialog::RouteSaveDialog(QWidge
      ui(new Ui::RouteSaveDialog)
  {
      ui->setupUi(this);
 +    this->setWindowTitle("Tracking");
  
+     routeDialog = new RouteDialog;
+     //Button settings
+     buttonStatus = true;
+     pixmapRouteStop = new QPixmap("Graphics/route_stop.png");
+     pixmapRoutePlay = new QPixmap("Graphics/route_play.png");
+     iconRouteStop = new QIcon(*pixmapRouteStop);
+     iconRoutePlay = new QIcon(*pixmapRoutePlay);
+     QSize iconSize(125, 125);
+     ui->buttonRouteStartStop->setIconSize(iconSize);
+     ui->buttonRouteStartStop->setIcon(*iconRoutePlay);
+     ui->buttonRouteStartStop->setAutoFillBackground(true);
+     ui->buttonRouteStartStop->setStyleSheet("background-color: rgb(0, 0, 0); color: rgb(255, 255, 255)");
+     //Satellite picture and label
      ui->labelRouteSatelliteStatus->setVisible(0);
      ui->labelRouteSatellitePicture->setVisible(0);
-     ui->labelRouteSatellitePicture->setPixmap(QPixmap("satellite_vista.png"));
+     //ui->labelRouteSatellitePicture->setPixmap(QPixmap("Graphics/satellite_vista.png"));
      timerSatellitePicture = new QTimer();
      timerSatellitePicture->setInterval(400);
      connect(timerSatellitePicture, SIGNAL(timeout()),this, SLOT(timerSatellitePictureTimeout()));
+     //Route picture and label
+     ui->labelRouteStatus->setVisible(0);
+     ui->labelRoutePicture->setVisible(0);
+     timerRoutePicture = new QTimer();
+     timerRoutePicture->setInterval(400);
+     connect(timerRoutePicture, SIGNAL(timeout()),this, SLOT(timerRoutePictureTimeout()));
+     //GPS speed label
+     ui->labelGpsSpeed->setVisible(0);
+     //GPS
+     location = new Maemo5Location(this);
+     gpsData = new GPSData(location);
+     connect(location,SIGNAL(agnss()),this,SLOT(gpsStatus()));
  }
  
  /**
  RouteSaveDialog::~RouteSaveDialog()
  {
      delete ui;
+     delete timerSatellitePicture;
+     delete timerRoutePicture;
+     delete location;
+     delete gpsData;
+     delete routeDialog;
+     delete pixmapRouteStop;
+     delete pixmapRoutePlay;
+     delete iconRouteStop;
+     delete iconRoutePlay;
  }
  
  void RouteSaveDialog::changeEvent(QEvent *e)
    */
  void RouteSaveDialog::on_buttonRouteStartStop_clicked()
  {
-     if ( ui->buttonRouteStartStop->text() == "Start" )
+     //If start button clicked
+     if ( buttonStatus == true )
      {
-         ui->buttonRouteStartStop->setText("Stop");
-         ui->labelRouteSatelliteStatus->setText("Searching satellite");
-         ui->labelRouteSatelliteStatus->setVisible(1);
-         ui->labelRouteSatellitePicture->setVisible(1);
-         timerSatellitePicture->start();
+         buttonStatus = false;
+         ui->buttonRouteStartStop->setIcon(*iconRouteStop);
+         location->startPollingGPS();
+         gpsStatus();
      }
      else
      {
-         ui->buttonRouteStartStop->setText("Start");
+         buttonStatus = true;
+         ui->buttonRouteStartStop->setIcon(*iconRoutePlay);
+         //Satellite picture and label
+         ui->labelRouteSatelliteStatus->setText("Searching satellite");
          ui->labelRouteSatelliteStatus->setVisible(0);
          ui->labelRouteSatellitePicture->setVisible(0);
          timerSatellitePicture->stop();
+         //Route picture and label
+         ui->labelRouteStatus->setVisible(0);
+         ui->labelRoutePicture->setVisible(0);
+         timerRoutePicture->stop();
+         location->stopPollingGPS();
+         routeDialog->show();
+         //GPS speed label
+         ui->labelGpsSpeed->setVisible(0);
+         //Stop route recording
+         gpsData->stopRouteRecording();
      }
  }
  
@@@ -88,3 -143,87 +144,87 @@@ void RouteSaveDialog::timerSatellitePic
      }
      timerSatellitePicture->start();
  }
+ /**
+   *This slot function is called when route picture timer timeout(400ms).
+   */
+ void RouteSaveDialog::timerRoutePictureTimeout()
+ {
+     //If route picture visible.
+     if (ui->labelRoutePicture->isVisible() == 1)
+     {
+         ui->labelRouteStatus->setVisible(0);
+         ui->labelRoutePicture->setVisible(0);
+     }
+     else
+     {
+         ui->labelRouteStatus->setVisible(1);
+         ui->labelRoutePicture->setVisible(1);
+     }
+     timerRoutePicture->start();
+ }
+ void RouteSaveDialog::gpsStatus()
+ {
+     //IF GPS start button clicked
+     if (buttonStatus == false)
+     {
+         //If GPS find 4 satellite.
+         if (location->getSatellitesInUse() >= 4)
+         {
+             //Satellite picture and label
+             ui->labelRouteSatelliteStatus->setText("GPS Ready");
+             ui->labelRouteSatelliteStatus->setVisible(1);
+             ui->labelRouteSatellitePicture->setVisible(1);
+             timerSatellitePicture->stop();
+             //Route picture and label
+             ui->labelRouteStatus->setText("Recorded " + QString::number(gpsData->roundCounter) + " route point");
+             ui->labelRouteStatus->setVisible(1);
+             ui->labelRoutePicture->setVisible(1);
+             timerRoutePicture->start();
+             //Set GPS speed.
+             gpsSpeed.sprintf("%.0f",location->getSpeed());
+             ui->labelGpsSpeed->setText(gpsSpeed + " km/h");
+             ui->labelGpsSpeed->setVisible(1);
+             //Start route recording
+             gpsData->startRouteRecording();
+         }
+         //If GPS find less than 4 satellite.
+         else
+         {
+             //Satellite picture and label
+             ui->labelRouteSatelliteStatus->setText("Searching satellite");
+             ui->labelRouteSatelliteStatus->setVisible(1);
+             ui->labelRouteSatellitePicture->setVisible(1);
+             timerSatellitePicture->start();
+             //Route picture and label
+             ui->labelRouteStatus->setVisible(0);
+             ui->labelRoutePicture->setVisible(0);
+             timerRoutePicture->stop();
+             //GPS speed label
+             ui->labelGpsSpeed->setVisible(0);
+         }
+     }
+     else
+     {
+         //Satellite picture and label
+         ui->labelRouteSatelliteStatus->setText("Searching satellite");
+         ui->labelRouteSatelliteStatus->setVisible(0);
+         ui->labelRouteSatellitePicture->setVisible(0);
+         timerSatellitePicture->stop();
+         //Route picture and label
+         ui->labelRouteStatus->setVisible(0);
+         ui->labelRoutePicture->setVisible(0);
+         timerRoutePicture->stop();
+         //GPS speed label
+         ui->labelGpsSpeed->setVisible(0);
+     }
+ }
diff --combined Client/speedfreak.pro
@@@ -1,9 -1,9 +1,12 @@@
  # -------------------------------------------------
  # Project created by QtCreator 2010-03-29T09:21:42
+ # @author     Speed Freak team
+ # @copyright  (c) 2010 Speed Freak team
+ # @license    http://opensource.org/licenses/gpl-license.php GNU Public License
  # -------------------------------------------------
 +QT += dbus \
 +    network \
 +    xml
  TARGET = speedfreak
  TEMPLATE = app
  SOURCES += main.cpp \
      creditsdialog.cpp \
      routedialog.cpp \
      routesavedialog.cpp \
 +    welcomedialog.cpp \
 +    usersettings.cpp \
 +    resultdialog.cpp \
 +    instructionsdialog.cpp \
 +    settingsdialog.cpp \
 +    accelerationstart.cpp \
 +    accrealtimedialog.cpp \
 +    accelerometer.cpp \
 +    movingaverage.cpp \
 +    calculate.cpp \
 +    calibratedialog.cpp \
 +    topresultdialog.cpp \
 +    categorylist.cpp \
 +    httpclient.cpp \
 +    xmlreader.cpp \
-     xmlwriter.cpp
++    xmlwriter.cpp \
+     gpsdata.cpp \
+     maemo5locationprivate.cpp \
+     maemo5location.cpp
++
  HEADERS += mainwindow.h \
      creditsdialog.h \
      routedialog.h \
      routesavedialog.h \
 +    welcomedialog.h \
 +    usersettings.h \
 +    resultdialog.h \
 +    instructionsdialog.h \
 +    settingsdialog.h \
 +    accelerationstart.h \
 +    accrealtimedialog.h \
 +    accelerometer.h \
 +    movingaverage.h \
 +    calculate.h \
 +    calibratedialog.h \
 +    topresultdialog.h \
 +    categorylist.h \
 +    httpclient.h \
 +    xmlreader.h \
 +    xmlwriter.h
+     gpsdata.h \
+     maemo5locationprivate.h \
+     maemo5location.h
++
  FORMS += mainwindow.ui \
      creditsdialog.ui \
      routedialog.ui \
 -    routesavedialog.ui
 +    routesavedialog.ui \
 +    welcomedialog.ui \
 +    resultdialog.ui \
 +    instructionsdialog.ui \
 +    settingsdialog.ui \
 +    accelerationstartdialog.ui \
 +    accrealtimedialog.ui \
 +    calibratedialog.ui \
 +    topresultdialog.ui
  RESOURCES += graphics.qrc
+ contains(QT_CONFIG, hildon):CONFIG += hildon
+ CONFIG += link_pkgconfig
+ # Enable this to disable debugging
+ DEFINES += QT_NO_DEBUG_OUTPUT
+ target.path += /usr/lib
+ devincludes.files = $$HEADERS
+ devincludes.path += /usr/include/$$TEMPLATE$$TARGET
+ INSTALLS += target \
+     devincludes
+ PKGCONFIG += glib-2.0 \
+     liblocation
+ exists(/usr/lib/liblocation.so) {
+     DEFINES += LIBLOCATION
+     message(liblocation found)
+ }