Undo: implement undo of rating and visibility rating

This was rather trivial and modeled after the previous edit
UndoCommands. Since this is the first time we're editing
integers a new constructor instantiation had to be added.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2019-01-28 22:35:07 +01:00 committed by Dirk Hohndel
parent 512a2e6b68
commit 42cfd3f963
5 changed files with 86 additions and 16 deletions

View file

@ -68,6 +68,8 @@ void EditBase<T>::undo()
// class by virtue of a "using" declaration.
template
EditBase<QString>::EditBase(const QVector<dive *> &dives, QString oldValue, QString newValue);
template
EditBase<int>::EditBase(const QVector<dive *> &dives, int oldValue, int newValue);
// Undo and redo do the same as just the stored value is exchanged
template<typename T>
@ -122,6 +124,48 @@ DiveField EditSuit::fieldId() const
return DiveField::SUIT;
}
// ***** Rating *****
void EditRating::set(struct dive *d, int value) const
{
d->rating = value;
}
int EditRating::data(struct dive *d) const
{
return d->rating;
}
QString EditRating::fieldName() const
{
return tr("rating");
}
DiveField EditRating::fieldId() const
{
return DiveField::RATING;
}
// ***** Visibility ****
void EditVisibility::set(struct dive *d, int value) const
{
d->visibility = value;
}
int EditVisibility::data(struct dive *d) const
{
return d->visibility;
}
QString EditVisibility::fieldName() const
{
return tr("visibility");
}
DiveField EditVisibility::fieldId() const
{
return DiveField::VISIBILITY;
}
// ***** Mode *****
// Editing the dive mode has very peculiar semantics for historic reasons:
// Since the dive-mode depends on the dive computer, the i-th dive computer