Works now without any existing location settings, enabling a new user to start using it.
[ptas] / zouba / uicontroller.cpp
index d2c1c71..2f823d2 100644 (file)
@@ -3,6 +3,8 @@
 #include "ui.h"
 #include "ytv.h"
 #include "location.h"
+#include "messagetable.h"
+#include "locations.h"
 
 #include <QObject>
 #include <QTableWidgetItem>
 UiController::UiController( Ui *ui ) :
   ui(ui)
 {
-  Location *homeLocation = new Location();
-  Location *workLocation = new Location();
+  Locations *locations = Locations::instance();
+  Location *homeLocation = locations->location( "home" );
+  Location *workLocation = locations->location( "work" );
+
+  if ( homeLocation==0 ) {
+    homeLocation = new Location( "home" );
+    locations->addLocation( homeLocation );
+  } else if ( homeLocation->isValid() ) {
+    setHomeButtonValid();
+  }
+
+  if ( workLocation==0 ) {
+    workLocation = new Location( "work" );
+    locations->addLocation( workLocation );
+  } else if ( workLocation->isValid() ) {
+    setWorkButtonValid();
+  }
 
   connect(
       homeLocation, SIGNAL( becomeValid() ),
       this, SLOT( setHomeButtonValid() )
   );
   connect(
+      homeLocation, SIGNAL( becomeValid() ),
+      locations, SLOT( saveLocation() )
+      );
+
+  connect(
       workLocation, SIGNAL( becomeValid() ),
       this, SLOT( setWorkButtonValid() )
   );
-
-  homeLocation->resolveAddress( home );
-  workLocation->resolveAddress( work );
+  connect(
+      workLocation, SIGNAL( becomeValid() ),
+      locations, SLOT( saveLocation() )
+      );
 
   destination.append( homeLocation );
   destination.append( workLocation );
@@ -35,7 +58,6 @@ UiController::UiController( Ui *ui ) :
       ui->destinationButtons, SIGNAL( buttonClicked( int ) ),
       this, SLOT( changeDestination( int ) )
   );
-
 }
 
 UiController::~UiController()
@@ -44,6 +66,7 @@ UiController::~UiController()
 
 void UiController::setHomeButtonValid()
 {
+  qDebug() << "setting home button valid";
   setButtonValid( Ui::HomeButtonId );
 }
 
@@ -59,9 +82,11 @@ void UiController::setButtonValid( int id )
 
 void UiController::changeDestination( int id )
 {
+  qDebug() << "Button "+QString::number(id)+" clicked";
+
   bool destinationHasChanged = ( currentDestination != id );
   if ( destinationHasChanged ) {
-    emit destinationChanged( *(destination[id]) );
+    emit destinationChanged( destination[id] );
   }
 
   // always want to emit this so that the gps position is update
@@ -69,15 +94,17 @@ void UiController::changeDestination( int id )
   emit buttonClicked();
 }
 
-void UiController::displayRoute( const RouteData &routeData )
+void UiController::displayRoute( const QList<RouteData> &routeData )
 {
-  qDebug() << __PRETTY_FUNCTION__;
-  qDebug() << "routeData.arrivalTime" << routeData.arrivalTime;
-  qDebug() << "routeData.lineCode" << routeData.lineCode;
+  qDebug() << "displaying route";
+
+  ui->routeTable->setRowCount( routeData.count() );
 
-  QTableWidgetItem *timeItem = new QTableWidgetItem( routeData.arrivalTime );
-  ui->table->setItem( 0, 0, timeItem );
+  for ( int i=0; i<routeData.count(); i++ ) {
+    QTableWidgetItem *timeItem = new QTableWidgetItem( routeData.at(i).arrivalTime );
+    ui->routeTable->setItem( i, 0, timeItem );
 
-  QTableWidgetItem *lineItem = new QTableWidgetItem( routeData.lineCode );
-  ui->table->setItem( 0, 1, lineItem );
+    QTableWidgetItem *lineItem = new QTableWidgetItem( routeData.at(i).lineCode );
+    ui->routeTable->setItem( i, 1, lineItem );
+  }
 }