desktop: allow moving dives to arbitrary trips

The UI only allowed adding dives to trips above or below the
current dive (and even that is buggy). This is a strange
restriction, since trips are designed to be non-contiguous.

Allow adding dives to any trip using the new trip selection
dialog. The undo-command is already there, so only little
code to write.

This feature was requested on the mailing list.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2020-09-29 23:29:53 +02:00 committed by Dirk Hohndel
parent f5fe6839c7
commit 7b196a5ef9
3 changed files with 14 additions and 0 deletions

View file

@ -1,3 +1,4 @@
- desktop: allow adding dives to arbitrary trips
- desktop: respect page-up, page-down, home and end keys for selection change [#2957]
- Use pO2 from prefernces for MOD display in equipment tab
- filter: more flexible filtering system based on individual constraints

View file

@ -24,6 +24,7 @@
#include "core/metrics.h"
#include "desktop-widgets/simplewidgets.h"
#include "desktop-widgets/mapwidget.h"
#include "desktop-widgets/tripselectiondialog.h"
DiveListView::DiveListView(QWidget *parent) : QTreeView(parent),
currentLayout(DiveTripModelBase::TREE),
@ -650,6 +651,16 @@ void DiveListView::splitDives()
Command::splitDives(d, duration_t{-1});
}
void DiveListView::addDivesToTrip()
{
TripSelectionDialog dialog(MainWindow::instance());
dive_trip *t = dialog.getTrip();
std::vector<dive *> dives = getDiveSelection();
if (!t || dives.empty())
return;
Command::addDivesToTrip(QVector<dive *>::fromStdVector(dives), t);
}
void DiveListView::renumberDives()
{
RenumberDialog dialog(true, MainWindow::instance());
@ -845,6 +856,7 @@ void DiveListView::contextMenuEvent(QContextMenuEvent *event)
if (amount_selected > 1 && consecutive_selected())
popup.addAction(tr("Merge selected dives"), this, &DiveListView::mergeDives);
if (amount_selected >= 1) {
popup.addAction(tr("Add dive(s) to arbitrary trip"), this, &DiveListView::addDivesToTrip);
popup.addAction(tr("Renumber dive(s)"), this, &DiveListView::renumberDives);
popup.addAction(tr("Shift dive times"), this, &DiveListView::shiftTimes);
popup.addAction(tr("Split selected dives"), this, &DiveListView::splitDives);

View file

@ -50,6 +50,7 @@ slots:
void mergeDives();
void splitDives();
void renumberDives();
void addDivesToTrip();
void shiftTimes();
void diveSelectionChanged(const QVector<QModelIndex> &indices);
void currentDiveChanged(QModelIndex index);