mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Undo: make editing of dive number undoable
When pressing F2 in the dive list, the number can be edited. Make this action undoable by implementing a EditNumber command. This command is differs from the other undo commands, as not the currently selected dives are changed. This means that the EditCommand needs an alternative constructor taking a single dive. This constructor was implemented in the base class so that all edit commands can now be called with a single dive. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
658ac2bb78
commit
726d08c2f7
5 changed files with 55 additions and 2 deletions
|
@ -33,6 +33,13 @@ EditDivesBase::EditDivesBase(bool currentDiveOnly) :
|
|||
{
|
||||
}
|
||||
|
||||
EditDivesBase::EditDivesBase(dive *d) :
|
||||
dives({ d }),
|
||||
selectedDives(getDiveSelection()),
|
||||
current(current_dive)
|
||||
{
|
||||
}
|
||||
|
||||
int EditDivesBase::numDives() const
|
||||
{
|
||||
return dives.size();
|
||||
|
@ -45,6 +52,13 @@ EditBase<T>::EditBase(T newValue, bool currentDiveOnly) :
|
|||
{
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
EditBase<T>::EditBase(T newValue, dive *d) :
|
||||
EditDivesBase(d),
|
||||
value(std::move(newValue))
|
||||
{
|
||||
}
|
||||
|
||||
// This is quite hackish: we can't use virtual functions in the constructor and
|
||||
// therefore can't initialize the list of dives [the values of the dives are
|
||||
// accessed by virtual functions]. Therefore, we (mis)use the fact that workToBeDone()
|
||||
|
@ -445,6 +459,28 @@ DiveField EditMode::fieldId() const
|
|||
return DiveField::MODE;
|
||||
}
|
||||
|
||||
// ***** Number *****
|
||||
void EditNumber::set(struct dive *d, int number) const
|
||||
{
|
||||
d->number = number;
|
||||
}
|
||||
|
||||
int EditNumber::data(struct dive *d) const
|
||||
{
|
||||
return d->number;
|
||||
}
|
||||
|
||||
QString EditNumber::fieldName() const
|
||||
{
|
||||
return tr("number");
|
||||
}
|
||||
|
||||
DiveField EditNumber::fieldId() const
|
||||
{
|
||||
return DiveField::NR;
|
||||
}
|
||||
|
||||
|
||||
// ***** Tag based commands *****
|
||||
EditTagsBase::EditTagsBase(const QStringList &newListIn, bool currentDiveOnly) :
|
||||
EditDivesBase(currentDiveOnly),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue