Undo: don't send signals batched by trip

Since the default view is batched by trips, signals were sent trip-wise.
This seemed like a good idea at first, but when more and more parts used
these signals, it became a burden. Therefore push the batching to the
part of the code where it is needed: the trip view.

The divesAdded and divesDeleted are not yet converted, because these
are combined with trip addition/deletion. This should also be detangled,
but not now.

Since the dive-lists were sorted in the processByTrip function, the
dive-list model now does its own sorting. This will have to be
audited.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2019-06-23 09:22:26 +02:00 committed by bstoeger
parent cbcddaa396
commit 27944a52b1
18 changed files with 193 additions and 185 deletions

View file

@ -5,7 +5,6 @@
#include "core/units.h"
#include "core/dive.h"
#include "desktop-widgets/command.h"
#include "core/trip.h" // TODO: Needed because divesChanged uses a trip parameter -> remove that!
#include "core/qthelper.h"
#include "core/statistics.h"
#include "core/display.h"
@ -131,7 +130,7 @@ void TabDiveInformation::updateData()
// This function gets called if a field gets updated by an undo command.
// Refresh the corresponding UI field.
void TabDiveInformation::divesChanged(dive_trip *trip, const QVector<dive *> &dives, DiveField field)
void TabDiveInformation::divesChanged(const QVector<dive *> &dives, DiveField field)
{
// If the current dive is not in list of changed dives, do nothing
if (!current_dive || !dives.contains(current_dive))

View file

@ -17,7 +17,7 @@ public:
void updateData() override;
void clear() override;
private slots:
void divesChanged(dive_trip *trip, const QVector<dive *> &dives, DiveField field);
void divesChanged(const QVector<dive *> &dives, DiveField field);
void on_atmPressVal_editingFinished();
void on_atmPressType_currentIndexChanged(int index);
private:

View file

@ -281,7 +281,7 @@ static void profileFromDive(struct dive *d)
// This function gets called if a field gets updated by an undo command.
// Refresh the corresponding UI field.
void MainTab::divesChanged(dive_trip *trip, const QVector<dive *> &dives, DiveField field)
void MainTab::divesChanged(const QVector<dive *> &dives, DiveField field)
{
// If the current dive is not in list of changed dives, do nothing
if (!current_dive || !dives.contains(current_dive))

View file

@ -46,7 +46,7 @@ public:
public
slots:
void divesChanged(dive_trip *trip, const QVector<dive *> &dives, DiveField field);
void divesChanged(const QVector<dive *> &dives, DiveField field);
void diveSiteEdited(dive_site *ds, int field);
void tripChanged(dive_trip *trip, TripField field);
void updateDiveInfo();