aboutsummaryrefslogtreecommitdiffstats
path: root/desktop-widgets/command_divesite.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'desktop-widgets/command_divesite.cpp')
-rw-r--r--desktop-widgets/command_divesite.cpp37
1 files changed, 33 insertions, 4 deletions
diff --git a/desktop-widgets/command_divesite.cpp b/desktop-widgets/command_divesite.cpp
index 96dcaa60c..28d47d603 100644
--- a/desktop-widgets/command_divesite.cpp
+++ b/desktop-widgets/command_divesite.cpp
@@ -82,6 +82,15 @@ void DeleteDiveSites::undo()
sitesToRemove = std::move(addDiveSites(sitesToAdd));
}
+// Helper function: swap C and Qt string
+static void swap(char *&c, QString &q)
+{
+ QString s = c;
+ free(c);
+ c = copy_qstring(q);
+ q = s;
+}
+
EditDiveSiteName::EditDiveSiteName(dive_site *dsIn, const QString &name) : ds(dsIn),
value(name)
{
@@ -95,10 +104,7 @@ bool EditDiveSiteName::workToBeDone()
void EditDiveSiteName::redo()
{
- QString s = ds->name;
- free(ds->name);
- ds->name = copy_qstring(value);
- value = s;
+ swap(ds->name, value);
emit diveListNotifier.diveSiteChanged(ds, LocationInformationModel::NAME); // Inform frontend of changed dive site.
}
@@ -108,4 +114,27 @@ void EditDiveSiteName::undo()
redo();
}
+EditDiveSiteDescription::EditDiveSiteDescription(dive_site *dsIn, const QString &description) : ds(dsIn),
+ value(description)
+{
+ setText(tr("Edit dive site description"));
+}
+
+bool EditDiveSiteDescription::workToBeDone()
+{
+ return value != QString(ds->description);
+}
+
+void EditDiveSiteDescription::redo()
+{
+ swap(ds->description, value);
+ emit diveListNotifier.diveSiteChanged(ds, LocationInformationModel::DESCRIPTION); // Inform frontend of changed dive site.
+}
+
+void EditDiveSiteDescription::undo()
+{
+ // Undo and redo do the same
+ redo();
+}
+
} // namespace Command