diff options
author | Stefan Fuchs <sfuchs@gmx.de> | 2017-12-11 21:40:06 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2017-12-13 05:48:20 -0800 |
commit | 82170579ad917c3ce328131dff24018123a34d6a (patch) | |
tree | 34b23ebfb1671ced7edf8f5d975a25be81f6c7aa | |
parent | 7bc77947f6ab37d0d557cc237ab0ecceb2ecbe64 (diff) | |
download | subsurface-82170579ad917c3ce328131dff24018123a34d6a.tar.gz |
Enable removal of pictures from different dives at the same moment
Suggested-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Signed-off-by: Stefan Fuchs <sfuchs@gmx.de>
-rw-r--r-- | core/dive.c | 7 | ||||
-rw-r--r-- | core/dive.h | 2 | ||||
-rw-r--r-- | qt-models/divepicturemodel.cpp | 7 |
3 files changed, 12 insertions, 4 deletions
diff --git a/core/dive.c b/core/dive.c index d990f6a2f..4b103bfbd 100644 --- a/core/dive.c +++ b/core/dive.c @@ -3838,9 +3838,10 @@ struct picture *clone_picture(struct picture *src) return dst; } -void dive_remove_picture(char *filename) +// Return true if picture was found and deleted +bool dive_remove_picture(struct dive *d, char *filename) { - struct picture **picture = ¤t_dive->picture_list; + struct picture **picture = &d->picture_list; while (*picture && !same_string((*picture)->filename, filename)) picture = &(*picture)->next; if (*picture) { @@ -3848,7 +3849,9 @@ void dive_remove_picture(char *filename) picture_free(*picture); *picture = temp; invalidate_dive_cache(current_dive); + return true; } + return false; } /* this always acts on the current divecomputer of the current dive */ diff --git a/core/dive.h b/core/dive.h index 7b2f3d658..880bcbfe4 100644 --- a/core/dive.h +++ b/core/dive.h @@ -421,7 +421,7 @@ extern struct picture *clone_picture(struct picture *src); extern bool dive_check_picture_time(struct dive *d, int shift_time, timestamp_t timestamp); extern void dive_create_picture(struct dive *d, const char *filename, int shift_time, bool match_all); extern void dive_add_picture(struct dive *d, struct picture *newpic); -extern void dive_remove_picture(char *filename); +extern bool dive_remove_picture(struct dive *d, char *filename); extern unsigned int dive_get_picture_count(struct dive *d); extern bool picture_check_valid(const char *filename, int shift_time); extern void picture_load_exif_data(struct picture *p); diff --git a/qt-models/divepicturemodel.cpp b/qt-models/divepicturemodel.cpp index 894cd3db6..994eb674e 100644 --- a/qt-models/divepicturemodel.cpp +++ b/qt-models/divepicturemodel.cpp @@ -119,7 +119,12 @@ QVariant DivePictureModel::data(const QModelIndex &index, int role) const void DivePictureModel::removePicture(const QString &fileUrl, bool last) { - dive_remove_picture(fileUrl.toUtf8().data()); + int i; + struct dive *dive; + for_each_dive (i, dive) { + if (dive->selected && dive_remove_picture(dive, fileUrl.toUtf8().data())) + break; + } if (last) { copy_dive(current_dive, &displayed_dive); updateDivePictures(); |