diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2020-03-05 09:00:00 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2020-03-10 09:25:57 -0700 |
commit | 0212b1b9f7734c2ee4edaf7e27a2c25601b5c4bc (patch) | |
tree | 6c3120611aa8b41948b6a96cc0f67d7cfd07b23d /commands/command_base.cpp | |
parent | 8ce4e10ccb98558886ef4ead4554f44345acd603 (diff) | |
download | subsurface-0212b1b9f7734c2ee4edaf7e27a2c25601b5c4bc.tar.gz |
undo infrastructure: improve undo command texts
For many of the commands it is fairly easy to add information that makes
it easier to figure out what actually happened. That's especially true
for commands operating on dives. Trip and dive site edits haven't been
given these more elaborate undo texts (yet).
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'commands/command_base.cpp')
-rw-r--r-- | commands/command_base.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/commands/command_base.cpp b/commands/command_base.cpp index d13daf269..8ebbf9be5 100644 --- a/commands/command_base.cpp +++ b/commands/command_base.cpp @@ -3,6 +3,7 @@ #include "command_base.h" #include "core/qthelper.h" // for updateWindowTitle() #include "core/subsurface-qt/divelistnotifier.h" +#include <QVector> namespace Command { @@ -49,6 +50,37 @@ QAction *redoAction(QObject *parent) return undoStack.createRedoAction(parent, QCoreApplication::translate("Command", "&Redo")); } +QString diveNumberOrDate(struct dive *d) +{ + if (d->number != 0) + return QStringLiteral("#%1").arg(d->number); + else + return QStringLiteral("@%1").arg(get_short_dive_date_string(d->when)); +} + +QString getListOfDives(const std::vector<struct dive*> &dives) +{ + QString listOfDives; + if ((int)dives.size() == dive_table.nr) + return Base::tr("all dives"); + int i = 0; + for (dive *d: dives) { + // we show a maximum of five dive numbers, or 4 plus ellipsis + if (++i == 4 && dives.size() >= 5) + return listOfDives + "..."; + listOfDives += diveNumberOrDate(d) + ", "; + } + if (!listOfDives.isEmpty()) + listOfDives.truncate(listOfDives.length() - 2); + return listOfDives; +} + +QString getListOfDives(QVector<struct dive *> dives) +{ + return getListOfDives(std::vector<struct dive *>(dives.begin(), dives.end())); +} + + // return a string that can be used for the commit message and should list the changes that // were made to the dive list QString changesMade() |