Use get_dive to populate divelistview with dives

Add dives from dive_table to the model/view using the functions provided
to extract the dives.

We do not yet handle trips.

Formatting of date/time, depth and duration need attention.

Relies on earlier patch to delay Qt ui construction.

We should look at the signals we publish to link to other widgets etc..

[Dirk Hohndel: use for_each_dive -- clean up some white space]

Signed-off-by: Amit Chaudhuri <amit.k.chaudhuri@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Amit Chaudhuri 2013-04-18 08:59:32 +01:00 committed by Dirk Hohndel
parent 073be111f4
commit 1a15462073

View file

@ -10,6 +10,7 @@
#include <QFileDialog> #include <QFileDialog>
#include <QMessageBox> #include <QMessageBox>
#include <QtDebug> #include <QtDebug>
#include <QDateTime>
#include "divelistview.h" #include "divelistview.h"
#include "divetripmodel.h" #include "divetripmodel.h"
@ -28,31 +29,32 @@ MainWindow::MainWindow() : ui(new Ui::MainWindow())
* here we just use an empty string * here we just use an empty string
*/ */
model = new DiveTripModel("",this); model = new DiveTripModel("",this);
if (model){ if (model) {
ui->ListWidget->setModel(model); ui->ListWidget->setModel(model);
} }
/* add in dives here. /* we need root to parent all top level dives
* we need to root to parent all top level dives
* trips need more work as it complicates parent/child stuff. * trips need more work as it complicates parent/child stuff.
* *
* We show how to obtain the root and add a demo dive
*
* Todo: work through integration with current list of dives/trips
* Todo: look at alignment/format of e.g. duration in view * Todo: look at alignment/format of e.g. duration in view
*
*/ */
DiveItem *dive = 0; DiveItem *dive = 0;
DiveItem *root = model->itemForIndex(QModelIndex()); DiveItem *root = model->itemForIndex(QModelIndex());
if (root){ if (root) {
dive = new DiveItem(1,QString("01/03/13"),14.2, 29.0,QString("Wraysbury"),root); int i;
Q_UNUSED(dive) Q_UNUSED(dive)
qDebug("dive_table checks - number of dives is %d", dive_table.nr); struct dive *d;
qDebug("# allocated dives = %d, pre-existing = %d", qDebug("address of dive_table %p", &dive_table);
dive_table.allocated, dive_table.preexisting); for_each_dive(i, d) {
dive = new DiveItem(d->number,
QDateTime::fromTime_t(d->when).toString(),
(float)d->maxdepth.mm/1000 ,
(float)d->duration.seconds/60,
d->location,
root);
}
} }
} }
void MainWindow::on_actionNew_triggered() void MainWindow::on_actionNew_triggered()
@ -63,7 +65,7 @@ void MainWindow::on_actionNew_triggered()
void MainWindow::on_actionOpen_triggered() void MainWindow::on_actionOpen_triggered()
{ {
QString filename = QFileDialog::getOpenFileName(this, tr("Open File"), QDir::homePath(), filter()); QString filename = QFileDialog::getOpenFileName(this, tr("Open File"), QDir::homePath(), filter());
if (filename.isEmpty()){ if (filename.isEmpty()) {
return; return;
} }
@ -295,7 +297,7 @@ bool MainWindow::askSaveChanges()
QString message = ! existing_filename ? tr("You have unsaved changes\nWould you like to save those before closing the datafile?") QString message = ! existing_filename ? tr("You have unsaved changes\nWould you like to save those before closing the datafile?")
: tr("You have unsaved changes to file: %1 \nWould you like to save those before closing the datafile?").arg(existing_filename); : tr("You have unsaved changes to file: %1 \nWould you like to save those before closing the datafile?").arg(existing_filename);
if (QMessageBox::question(this, tr("Save Changes?"), message) == QMessageBox::Ok){ if (QMessageBox::question(this, tr("Save Changes?"), message) == QMessageBox::Ok) {
// WARNING: Port. // WARNING: Port.
// file_save(NULL,NULL); // file_save(NULL,NULL);
return true; return true;