mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-01 06:30:26 +00:00
d7d408a99e
This is copying the dive editing code. It uses an OO design with virtual functions for getting and setting the values. It doesn't use templates though, as both fields of strig type. This feels a bit over-engineered, but it is 1) consistent with the dive edit code and 2) the number / types of dive trip fields might increase. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
77 lines
3.4 KiB
C++
77 lines
3.4 KiB
C++
// SPDX-License-Identifier: GPL-2.0
|
|
#ifndef COMMAND_H
|
|
#define COMMAND_H
|
|
|
|
#include "core/dive.h"
|
|
#include <QVector>
|
|
#include <QAction>
|
|
|
|
// We put everything in a namespace, so that we can shorten names without polluting the global namespace
|
|
namespace Command {
|
|
|
|
// 1) General commands
|
|
void clear(); // Reset the undo stack. Delete all commands.
|
|
QAction *undoAction(QObject *parent); // Create an undo action.
|
|
QAction *redoAction(QObject *parent); // Create an redo action.
|
|
|
|
// 2) Dive-list related commands
|
|
|
|
// If d->dive_trip is null and autogroup is true, dives within the auto-group
|
|
// distance are added to a trip. dive d is consumed (the structure is reset)!
|
|
// If newNumber is true, the dive is assigned a new number, depending on the
|
|
// insertion position.
|
|
// Id newDS is not empty, a dive site with that name will be created. d->dive_site
|
|
// should be null in this case.
|
|
void addDive(dive *d, const QString &newDS, bool autogroup, bool newNumber);
|
|
void importDives(struct dive_table *dives, struct trip_table *trips, struct dive_site_table *sites, int flags, const QString &source);
|
|
void deleteDive(const QVector<struct dive*> &divesToDelete);
|
|
void shiftTime(const QVector<dive *> &changedDives, int amount);
|
|
void renumberDives(const QVector<QPair<dive *, int>> &divesToRenumber);
|
|
void removeDivesFromTrip(const QVector<dive *> &divesToRemove);
|
|
void removeAutogenTrips();
|
|
void addDivesToTrip(const QVector<dive *> &divesToAddIn, dive_trip *trip);
|
|
void createTrip(const QVector<dive *> &divesToAddIn);
|
|
void autogroupDives();
|
|
void mergeTrips(dive_trip *trip1, dive_trip *trip2);
|
|
void splitDives(dive *d, duration_t time);
|
|
void splitDiveComputer(dive *d, int dc_num);
|
|
void mergeDives(const QVector <dive *> &dives);
|
|
|
|
// 3) Dive-site related commands
|
|
|
|
void deleteDiveSites(const QVector <dive_site *> &sites);
|
|
void editDiveSiteName(dive_site *ds, const QString &value);
|
|
void editDiveSiteDescription(dive_site *ds, const QString &value);
|
|
void editDiveSiteNotes(dive_site *ds, const QString &value);
|
|
void editDiveSiteCountry(dive_site *ds, const QString &value);
|
|
void editDiveSiteLocation(dive_site *ds, location_t value);
|
|
void editDiveSiteTaxonomy(dive_site *ds, taxonomy_data &value); // value is consumed (i.e. will be erased after call)!
|
|
void addDiveSite(const QString &name);
|
|
void mergeDiveSites(dive_site *ds, const QVector<dive_site *> &sites);
|
|
void purgeUnusedDiveSites();
|
|
|
|
// 4) Dive editing related commands
|
|
|
|
void editNotes(const QString &newValue, bool currentDiveOnly);
|
|
void editSuit(const QString &newValue, bool currentDiveOnly);
|
|
void editMode(int index, int newValue, bool currentDiveOnly);
|
|
void editRating(int newValue, bool currentDiveOnly);
|
|
void editVisibility(int newValue, bool currentDiveOnly);
|
|
void editAirTemp(int newValue, bool currentDiveOnly);
|
|
void editWaterTemp(int newValue, bool currentDiveOnly);
|
|
void editDepth(int newValue, bool currentDiveOnly);
|
|
void editDuration(int newValue, bool currentDiveOnly);
|
|
void editDiveSite(struct dive_site *newValue, bool currentDiveOnly);
|
|
void editDiveSiteNew(const QString &newName, bool currentDiveOnly);
|
|
void editTags(const QStringList &newList, bool currentDiveOnly);
|
|
void editBuddies(const QStringList &newList, bool currentDiveOnly);
|
|
void editDiveMaster(const QStringList &newList, bool currentDiveOnly);
|
|
void pasteDives(const dive *d, dive_components what);
|
|
|
|
// 4) Trip editing commands
|
|
void editTripLocation(dive_trip *trip, const QString &s);
|
|
void editTripNotes(dive_trip *trip, const QString &s);
|
|
|
|
} // namespace Command
|
|
|
|
#endif // COMMAND_H
|