mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +00:00
Merge branch 'selection'
This commit is contained in:
commit
de8395e09e
4 changed files with 48 additions and 4 deletions
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue