mirror of
https://github.com/subsurface/subsurface.git
synced 2025-01-31 21:03:23 +00:00
Desktop: update dive list when dive sites change
Now when we change dive site location or name through a redo, the dive list is updated as expected. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
e599d58531
commit
d0df6a0073
1 changed files with 16 additions and 0 deletions
|
@ -186,6 +186,18 @@ static void swap(char *&c, QString &q)
|
|||
q = s;
|
||||
}
|
||||
|
||||
// Helper function: collect the dives that are at the given dive site
|
||||
static QVector<dive *> getDivesForSite(struct dive_site *ds)
|
||||
{
|
||||
QVector<dive *> diveSiteDives;
|
||||
|
||||
for (int i = 0; i < ds->dives.nr; ++i)
|
||||
diveSiteDives.push_back(ds->dives.dives[i]);
|
||||
|
||||
return diveSiteDives;
|
||||
}
|
||||
|
||||
|
||||
EditDiveSiteName::EditDiveSiteName(dive_site *dsIn, const QString &name) : ds(dsIn),
|
||||
value(name)
|
||||
{
|
||||
|
@ -201,6 +213,7 @@ void EditDiveSiteName::redo()
|
|||
{
|
||||
swap(ds->name, value);
|
||||
emit diveListNotifier.diveSiteChanged(ds, LocationInformationModel::NAME); // Inform frontend of changed dive site.
|
||||
emit diveListNotifier.divesChanged(getDivesForSite(ds), DiveField::DIVESITE); // dive site name can be shown in the dive list
|
||||
}
|
||||
|
||||
void EditDiveSiteName::undo()
|
||||
|
@ -272,6 +285,8 @@ void EditDiveSiteCountry::redo()
|
|||
taxonomy_set_country(&ds->taxonomy, copy_qstring(value), taxonomy_origin::GEOMANUAL);
|
||||
value = old;
|
||||
emit diveListNotifier.diveSiteChanged(ds, LocationInformationModel::TAXONOMY); // Inform frontend of changed dive site.
|
||||
emit diveListNotifier.divesChanged(getDivesForSite(ds), DiveField::DIVESITE); // Country can be shown in the dive list
|
||||
|
||||
}
|
||||
|
||||
void EditDiveSiteCountry::undo()
|
||||
|
@ -299,6 +314,7 @@ void EditDiveSiteLocation::redo()
|
|||
{
|
||||
std::swap(value, ds->location);
|
||||
emit diveListNotifier.diveSiteChanged(ds, LocationInformationModel::LOCATION); // Inform frontend of changed dive site.
|
||||
emit diveListNotifier.divesChanged(getDivesForSite(ds), DiveField::DIVESITE); // the globe icon in the dive list shows whether we have coordinates
|
||||
}
|
||||
|
||||
void EditDiveSiteLocation::undo()
|
||||
|
|
Loading…
Add table
Reference in a new issue