summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Stefan Fuchs <sfuchs@gmx.de>2017-12-11 21:40:06 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2017-12-13 05:48:20 -0800
commit82170579ad917c3ce328131dff24018123a34d6a (patch)
tree34b23ebfb1671ced7edf8f5d975a25be81f6c7aa
parent7bc77947f6ab37d0d557cc237ab0ecceb2ecbe64 (diff)
downloadsubsurface-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.c7
-rw-r--r--core/dive.h2
-rw-r--r--qt-models/divepicturemodel.cpp7
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 = &current_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();