summaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/divelistview.cpp28
-rw-r--r--qt-ui/globe.cpp2
-rw-r--r--qt-ui/maintab.cpp14
-rw-r--r--qt-ui/mainwindow.cpp8
4 files changed, 48 insertions, 4 deletions
diff --git a/qt-ui/divelistview.cpp b/qt-ui/divelistview.cpp
index 075f12d4a..5883ea615 100644
--- a/qt-ui/divelistview.cpp
+++ b/qt-ui/divelistview.cpp
@@ -210,7 +210,7 @@ void DiveListView::selectionChanged(const QItemSelection& selected, const QItemS
disconnect(selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(currentChanged(QModelIndex,QModelIndex)));
Q_FOREACH(const QModelIndex& index, newSelected.indexes()) {
- if(index.column() != 0)
+ if (index.column() != 0)
continue;
const QAbstractItemModel *model = index.model();
@@ -218,16 +218,42 @@ void DiveListView::selectionChanged(const QItemSelection& selected, const QItemS
if (!dive) { // it's a trip!
if (model->rowCount(index)) {
QItemSelection selection;
+ struct dive *child = (struct dive*) model->data(index.child(0,0), TreeItemDT::DIVE_ROLE).value<void*>();
+ while (child) {
+ select_dive(get_index_for_dive(child));
+ child = child->next;
+ }
selection.select(index.child(0,0), index.child(model->rowCount(index) -1 , 0));
selectionModel()->select(selection, QItemSelectionModel::Select | QItemSelectionModel::Rows);
selectionModel()->setCurrentIndex(index, QItemSelectionModel::Select | QItemSelectionModel::NoUpdate);
if (!isExpanded(index))
expand(index);
}
+ } else {
+ select_dive(get_index_for_dive(dive));
+ }
+ }
+ Q_FOREACH(const QModelIndex& index, newDeselected.indexes()) {
+ if (index.column() != 0)
+ continue;
+ const QAbstractItemModel *model = index.model();
+ struct dive *dive = (struct dive*) model->data(index, TreeItemDT::DIVE_ROLE).value<void*>();
+ if (!dive) { // it's a trip!
+ if (model->rowCount(index)) {
+ struct dive *child = (struct dive*) model->data(index.child(0,0), TreeItemDT::DIVE_ROLE).value<void*>();
+ while (child) {
+ deselect_dive(get_index_for_dive(child));
+ child = child->next;
+ }
+ }
+ } else {
+ deselect_dive(get_index_for_dive(dive));
}
}
QTreeView::selectionChanged(selectionModel()->selection(), newDeselected);
connect(selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(selectionChanged(QItemSelection,QItemSelection)));
connect(selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(currentChanged(QModelIndex,QModelIndex)));
+ // now that everything is up to date, update the widgets
+ Q_EMIT currentDiveChanged(selected_dive);
}
diff --git a/qt-ui/globe.cpp b/qt-ui/globe.cpp
index bf2369862..67a4fcd73 100644
--- a/qt-ui/globe.cpp
+++ b/qt-ui/globe.cpp
@@ -94,6 +94,8 @@ void GlobeGPS::centerOn(dive* dive)
if (messageWidget->isVisible() && (!dive || dive_has_gps_location(dive))) {
messageWidget->animatedHide();
}
+ if (!dive)
+ return;
editingDiveCoords = 0;
diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp
index e810dd6ee..55f11789f 100644
--- a/qt-ui/maintab.cpp
+++ b/qt-ui/maintab.cpp
@@ -272,6 +272,20 @@ void MainTab::updateDiveInfo(int dive)
weightModel->clear();
addCylinder->setEnabled(false);
addWeight->setEnabled(false);
+ ui->maximumDepthAllText->clear();
+ ui->minimumDepthAllText->clear();
+ ui->averageDepthAllText->clear();
+ ui->maximumSacAllText->clear();
+ ui->minimumSacAllText->clear();
+ ui->averageSacAllText->clear();
+ ui->divesAllText->clear();
+ ui->maximumTemperatureAllText->clear();
+ ui->minimumTemperatureAllText->clear();
+ ui->averageTemperatureAllText->clear();
+ ui->totalTimeAllText->clear();
+ ui->averageTimeAllText->clear();
+ ui->longestAllText->clear();
+ ui->shortestAllText->clear();
}
/* statisticsTab*/
/* we can access the stats_selection struct, but how do we ensure the relevant dives are selected
diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp
index e04d824fb..f1004c556 100644
--- a/qt-ui/mainwindow.cpp
+++ b/qt-ui/mainwindow.cpp
@@ -63,9 +63,11 @@ void MainWindow::refreshDisplay()
void MainWindow::current_dive_changed(int divenr)
{
- select_dive(divenr);
- ui->globe->centerOn(get_dive(selected_dive));
- redrawProfile();
+ if (amount_selected && divenr >= 0) {
+ select_dive(divenr);
+ ui->globe->centerOn(get_dive(selected_dive));
+ redrawProfile();
+ }
ui->InfoWidget->updateDiveInfo(divenr);
}