Changes: Added column headers to route detail table
[ptas] / zouba / src / ui.cpp
index b6a029b..4dc3c1a 100644 (file)
@@ -1,7 +1,7 @@
 #include "ui.h"
 
-#include "messagetable.h"
 #include "locations.h"
+#include "ytv.h"
 
 #include <QMainWindow>
 #include <QRadioButton>
 #include <QMenuBar>
 #include <QHBoxLayout>
 #include <QVBoxLayout>
+#include <QGridLayout>
 #include <QSizePolicy>
 #include <QInputDialog>
 #include <QDebug>
 
-MessageTable *Ui::messageTable = 0;
-
 Ui::Ui() :
-  centralWidget(0),
-  destinationButtons(0),
-  routeTable(0)
+  m_centralWidget(0),
+  m_destinationButtons(0),
+  m_routeStack(0),
+  m_usingFakeGps( false ),
+  m_fakeLocationLabel( "work" )
 {
 }
 
@@ -33,16 +34,17 @@ Ui::~Ui()
 
 void Ui::setupUi( QMainWindow *mainWindow )
 {
-  mainWindow->resize(800,480);
-  menu = mainWindow->menuBar()->addMenu("Settings");
+  m_mainWindow = mainWindow;
+  m_mainWindow->resize(800,480);
+
+  m_menu = mainWindow->menuBar()->addMenu("Settings");
 
   QAction *setHomeAddressAction = new QAction("Set home address", this);
   QAction *setWorkAddressAction = new QAction("Set work address", this);
-  hideMessagesAction   = new QAction("Hide messages", this);
-  showMessagesAction   = new QAction("Show messages", this);
-  menu->addAction(setHomeAddressAction);
-  menu->addAction(setWorkAddressAction);
-  menu->addAction(showMessagesAction);
+  m_toggleFakeGpsAction  = new QAction("Use fake GPS", this);
+  m_menu->addAction(setHomeAddressAction);
+  m_menu->addAction(setWorkAddressAction);
+  m_menu->addAction(m_toggleFakeGpsAction);
 
   connect(
       setHomeAddressAction, SIGNAL(triggered()),
@@ -53,57 +55,61 @@ void Ui::setupUi( QMainWindow *mainWindow )
       this, SLOT(setWorkAddress())
       );
   connect(
-      hideMessagesAction, SIGNAL(triggered()),
-      this, SLOT(hideMessages())
-      );
-  connect(
-      showMessagesAction, SIGNAL(triggered()),
-      this, SLOT(showMessages())
+      m_toggleFakeGpsAction, SIGNAL(triggered()),
+      this, SLOT(toggleFakeGps())
       );
 
-  centralWidget = new QWidget( mainWindow );
-  mainWindow->setCentralWidget(centralWidget);
+  m_centralWidget = new QWidget( m_mainWindow );
+  m_mainWindow->setCentralWidget( m_centralWidget);
 
   QRadioButton *homeButton = new QRadioButton();
   homeButton->setObjectName( QString::fromUtf8("homeButton") );
   homeButton->setText( "GPS->HOME" );
   homeButton->setEnabled(false);
-  homeButton->setFixedSize( QSize( ButtonWidth, ButtonHeight ) );
 
   QRadioButton *workButton = new QRadioButton();
   workButton->setObjectName( QString::fromUtf8("workButton") );
   workButton->setText( "GPS->WORK" );
   workButton->setEnabled(false);
 
-  destinationButtons = new QButtonGroup();
-  destinationButtons->addButton( homeButton, HomeButtonId );
-  destinationButtons->addButton( workButton, WorkButtonId );
-  destinationButtons->setExclusive( true );
-
-  buttonLayout = new QVBoxLayout();
-  buttonLayout->addWidget( homeButton );
-  buttonLayout->addWidget( workButton );
-  buttonLayout->addStretch();
+  m_destinationButtons = new QButtonGroup();
+  m_destinationButtons->addButton( homeButton, HomeButtonId );
+  m_destinationButtons->addButton( workButton, WorkButtonId );
+  m_destinationButtons->setExclusive( true );
+
+  m_routeButtons = new QButtonGroup();
+  m_routeButtons->setExclusive( true );
+  m_routeStack = new QVBoxLayout();
+  for ( int i=0; i<Ytv::ShowFiveResults; ++i ) {
+    QRadioButton *button = new QRadioButton();
+    button->setObjectName( "routeButton"+i );
+    button->setEnabled( false );
+
+    m_routeStack->addWidget( button, i );
+    m_routeButtons->addButton( button, i );
+  }
+  m_routeStack->addStretch();
 
-  routeTable = new QTableWidget( 1, 2 );
-  QStringList columnHeaders;
-  columnHeaders << "Time" << "Bus";
-  routeTable->setHorizontalHeaderLabels( columnHeaders );
-  routeTable->verticalHeader()->hide();
+  m_routeDetailTable = new QTableWidget();
+  m_routeDetailTable->setColumnCount(6);
+  m_routeDetailTable->setHorizontalHeaderLabels(
+      QStringList() << "How" << "Time" << "Dist" << "Dep" << "Arr" << "Line"
+      );
+  m_routeDetailTable->resizeColumnsToContents();
 
   QHBoxLayout *topLayout = new QHBoxLayout();
-  topLayout->addLayout( buttonLayout );
-  topLayout->addWidget( routeTable );
+  topLayout->addLayout( m_routeStack );
+  topLayout->addWidget( m_routeDetailTable );
 
-  messageTable = new MessageTable();
-  messageTable->setObjectName( QString::fromUtf8("messageTable") );
-  messageTable->hide();
+  m_buttonLayout = new QGridLayout();
+  m_buttonLayout->addWidget( homeButton, 0, 0 );
+  m_buttonLayout->addWidget( workButton, 0, 1 );
 
-  QVBoxLayout *mainLayout = new QVBoxLayout();
-  mainLayout->addLayout( topLayout );
-  mainLayout->addWidget( messageTable );
+  m_mainLayout = new QVBoxLayout();
+  m_mainLayout->addLayout( topLayout );
+  m_mainLayout->addLayout( m_buttonLayout );
 
-  centralWidget->setLayout( mainLayout );
+  m_centralWidget->setLayout( m_mainLayout );
 }
 
 void Ui::setHomeAddress()
@@ -116,18 +122,27 @@ void Ui::setWorkAddress()
   setAddress( "work" );
 }
 
-void Ui::hideMessages()
+void Ui::toggleFakeGps()
+{
+  m_usingFakeGps = !m_usingFakeGps;
+
+  if ( m_usingFakeGps ) {
+    useFakeGps();
+  } else {
+    useLiveGps();
+  }
+}
+
+void Ui::useFakeGps()
 {
-  messageTable->hide();
-  menu->removeAction( hideMessagesAction );
-  menu->addAction( showMessagesAction );
+  emit fakeGpsPressed( m_fakeLocationLabel );
+  m_toggleFakeGpsAction->setText( "Use Live GPS" );
 }
 
-void Ui::showMessages()
+void Ui::useLiveGps()
 {
-  messageTable->show();
-  menu->removeAction( showMessagesAction );
-  menu->addAction( hideMessagesAction );
+  emit liveGpsPressed();
+  m_toggleFakeGpsAction->setText( "Use Fake GPS" );
 }
 
 void Ui::setAddress( const QString &label )
@@ -137,7 +152,7 @@ void Ui::setAddress( const QString &label )
 
   bool ok;
   QString address = QInputDialog::getText(
-     centralWidget,
+     m_centralWidget,
      tr("Enter address for \""+QString(label).toLatin1()+"\""),
      tr("Address"),
      QLineEdit::Normal,
@@ -145,8 +160,6 @@ void Ui::setAddress( const QString &label )
      &ok
      );
 
-  qDebug() << "ok=" << ok;
-
   if ( ok ) {
     qDebug() << "new address" << address;
     Locations *locations = Locations::instance();
@@ -157,3 +170,8 @@ void Ui::setAddress( const QString &label )
     }
   }
 }
+
+void Ui::setBusy( bool busy )
+{
+  m_mainWindow->setAttribute(Qt::WA_Maemo5ShowProgressIndicator, busy);
+}