Moved files to make zouba the only project.
[ptas] / src / ui.cpp
diff --git a/src/ui.cpp b/src/ui.cpp
new file mode 100644 (file)
index 0000000..ee18f3a
--- /dev/null
@@ -0,0 +1,177 @@
+#include "ui.h"
+
+#include "locations.h"
+#include "ytv.h"
+
+#include <QMainWindow>
+#include <QRadioButton>
+#include <QTableWidget>
+#include <QString>
+#include <QRect>
+#include <QButtonGroup>
+#include <QHeaderView>
+#include <QObject>
+#include <QMenuBar>
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QGridLayout>
+#include <QSizePolicy>
+#include <QInputDialog>
+#include <QDebug>
+
+Ui::Ui() :
+  m_centralWidget(0),
+  m_destinationButtons(0),
+  m_routeStack(0),
+  m_usingFakeGps( false ),
+  m_fakeLocationLabel( "work" )
+{
+}
+
+Ui::~Ui()
+{
+}
+
+void Ui::setupUi( QMainWindow *mainWindow )
+{
+  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);
+  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()),
+      this, SLOT(setHomeAddress())
+      );
+  connect(
+      setWorkAddressAction, SIGNAL(triggered()),
+      this, SLOT(setWorkAddress())
+      );
+  connect(
+      m_toggleFakeGpsAction, SIGNAL(triggered()),
+      this, SLOT(toggleFakeGps())
+      );
+
+  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);
+
+  QRadioButton *workButton = new QRadioButton();
+  workButton->setObjectName( QString::fromUtf8("workButton") );
+  workButton->setText( "GPS->WORK" );
+  workButton->setEnabled(false);
+
+  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();
+
+  QStringList headers( QStringList() << "How" << "Time" << "Dist" << "Dep" << "Arr" );
+  m_routeDetailTable = new QTableWidget();
+  m_routeDetailTable->setColumnCount( headers.count() );
+  m_routeDetailTable->setHorizontalHeaderLabels( headers );
+  m_routeDetailTable->resizeColumnsToContents();
+  m_routeDetailTable->setSelectionMode( QAbstractItemView::NoSelection );
+
+  QHBoxLayout *topLayout = new QHBoxLayout();
+  topLayout->addLayout( m_routeStack );
+  topLayout->addWidget( m_routeDetailTable );
+
+  m_buttonLayout = new QGridLayout();
+  m_buttonLayout->addWidget( homeButton, 0, 0 );
+  m_buttonLayout->addWidget( workButton, 0, 1 );
+
+  m_mainLayout = new QVBoxLayout();
+  m_mainLayout->addLayout( topLayout );
+  m_mainLayout->addLayout( m_buttonLayout );
+
+  m_centralWidget->setLayout( m_mainLayout );
+}
+
+void Ui::setHomeAddress()
+{
+  setAddress( "home" );
+}
+
+void Ui::setWorkAddress()
+{
+  setAddress( "work" );
+}
+
+void Ui::toggleFakeGps()
+{
+  m_usingFakeGps = !m_usingFakeGps;
+
+  if ( m_usingFakeGps ) {
+    useFakeGps();
+  } else {
+    useLiveGps();
+  }
+}
+
+void Ui::useFakeGps()
+{
+  emit fakeGpsPressed( m_fakeLocationLabel );
+  m_toggleFakeGpsAction->setText( "Use Live GPS" );
+}
+
+void Ui::useLiveGps()
+{
+  emit liveGpsPressed();
+  m_toggleFakeGpsAction->setText( "Use Fake GPS" );
+}
+
+void Ui::setAddress( const QString &label )
+{
+  Locations locations;
+  Location *location=locations.location( label );
+
+  bool ok;
+  QString address = QInputDialog::getText(
+     m_centralWidget,
+     tr("Enter address for \""+QString(label).toLatin1()+"\""),
+     tr("Address"),
+     QLineEdit::Normal,
+     location->address(),
+     &ok
+     );
+
+  if ( ok ) {
+    qDebug() << "new address" << address;
+    Locations locations;
+    Location  *location  = locations.location( label );
+    qDebug() << "location" << location;
+    if ( location ) {
+      location->resolveAddress( address );
+    }
+  }
+}
+
+void Ui::setBusy( bool busy )
+{
+  m_mainWindow->setAttribute(Qt::WA_Maemo5ShowProgressIndicator, busy);
+}