summaryrefslogtreecommitdiffstats
path: root/commands/command_edit_trip.cpp
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2019-11-13 15:08:40 +0100
committerGravatar bstoeger <32835590+bstoeger@users.noreply.github.com>2019-11-14 21:02:07 +0100
commit5e29245e689fe9401ee1c33ebb07c601ce25e8c6 (patch)
treea656bcb0e9357b8cab78c5ad196fc6e5a4da4c31 /commands/command_edit_trip.cpp
parent685b92b9c2ddd6575ae5df7c95b928e60fcd7005 (diff)
downloadsubsurface-5e29245e689fe9401ee1c33ebb07c601ce25e8c6.tar.gz
Refactoring: move undo commands to top level
In the future we might want to use undo-commands for mobile as well (even if not implementing undo). Therefore, move the undo-command source from desktop-widgets to their own commands top-level folder. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'commands/command_edit_trip.cpp')
-rw-r--r--commands/command_edit_trip.cpp83
1 files changed, 83 insertions, 0 deletions
diff --git a/commands/command_edit_trip.cpp b/commands/command_edit_trip.cpp
new file mode 100644
index 000000000..b25e3fcc5
--- /dev/null
+++ b/commands/command_edit_trip.cpp
@@ -0,0 +1,83 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#include "command_edit_trip.h"
+#include "command_private.h"
+#include "core/qthelper.h"
+
+namespace Command {
+
+EditTripBase::EditTripBase(dive_trip *tripIn, const QString &newValue) : trip(tripIn),
+ value(newValue)
+{
+}
+
+// Note: Virtual functions cannot be called in the constructor.
+// Therefore, setting of the title is done here.
+bool EditTripBase::workToBeDone()
+{
+ setText(tr("Edit %1").arg(fieldName()));
+ return data(trip) != value;
+}
+
+void EditTripBase::undo()
+{
+ QString old = data(trip);
+ set(trip, value);
+ value = old;
+
+ emit diveListNotifier.tripChanged(trip, fieldId());
+}
+
+// Undo and redo do the same as just the stored value is exchanged
+void EditTripBase::redo()
+{
+ undo();
+}
+
+// Implementation of virtual functions
+
+// ***** Location *****
+void EditTripLocation::set(dive_trip *t, const QString &s) const
+{
+ free(t->location);
+ t->location = copy_qstring(s);
+}
+
+QString EditTripLocation::data(dive_trip *t) const
+{
+ return QString(t->location);
+}
+
+QString EditTripLocation::fieldName() const
+{
+ return tr("trip location");
+}
+
+TripField EditTripLocation::fieldId() const
+{
+ return TripField::LOCATION;
+}
+
+// ***** Notes *****
+void EditTripNotes::set(dive_trip *t, const QString &s) const
+{
+ free(t->notes);
+ t->notes = copy_qstring(s);
+}
+
+QString EditTripNotes::data(dive_trip *t) const
+{
+ return QString(t->notes);
+}
+
+QString EditTripNotes::fieldName() const
+{
+ return tr("trip notes");
+}
+
+TripField EditTripNotes::fieldId() const
+{
+ return TripField::NOTES;
+}
+
+} // namespace Command