| 
									
										
										
										
											2019-02-24 21:22:33 +01:00
										 |  |  | // SPDX-License-Identifier: GPL-2.0
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "command_edit_trip.h"
 | 
					
						
							|  |  |  | #include "core/qthelper.h"
 | 
					
						
							| 
									
										
										
										
											2019-11-24 13:26:29 +01:00
										 |  |  | #include "core/selection.h"
 | 
					
						
							| 
									
										
										
										
											2019-02-24 21:22:33 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2020-03-21 16:46:36 -07:00
										 |  |  | 	setText(Command::Base::tr("Edit %1").arg(fieldName())); | 
					
						
							| 
									
										
										
										
											2019-02-24 21:22:33 +01:00
										 |  |  | 	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 | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2020-03-21 16:46:36 -07:00
										 |  |  | 	return Command::Base::tr("trip location"); | 
					
						
							| 
									
										
										
										
											2019-02-24 21:22:33 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2020-03-21 16:46:36 -07:00
										 |  |  | 	return Command::Base::tr("trip notes"); | 
					
						
							| 
									
										
										
										
											2019-02-24 21:22:33 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | TripField EditTripNotes::fieldId() const | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	return TripField::NOTES; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } // namespace Command
 |