Dive site: implement purge of unused dive sites

Add a "purge unused dive sites" button to the dive site list.
Connect it to a new PurgeUnusedDiveSites command. Implementation
was trivial: simply copy the DeleteDiveSites command.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2019-03-19 19:52:54 +01:00 committed by Dirk Hohndel
parent fde80eeaa5
commit 8858bfa1f8
7 changed files with 59 additions and 0 deletions

View file

@ -105,6 +105,31 @@ void DeleteDiveSites::undo()
sitesToRemove = std::move(addDiveSites(sitesToAdd));
}
PurgeUnusedDiveSites::PurgeUnusedDiveSites()
{
setText(tr("purge unused dive sites"));
for (int i = 0; i < dive_site_table.nr; ++i) {
dive_site *ds = dive_site_table.dive_sites[i];
if (ds->dives.nr == 0)
sitesToRemove.push_back(ds);
}
}
bool PurgeUnusedDiveSites::workToBeDone()
{
return !sitesToRemove.empty();
}
void PurgeUnusedDiveSites::redo()
{
sitesToAdd = std::move(removeDiveSites(sitesToRemove));
}
void PurgeUnusedDiveSites::undo()
{
sitesToRemove = std::move(addDiveSites(sitesToAdd));
}
// Helper function: swap C and Qt string
static void swap(char *&c, QString &q)
{