aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2020-04-17 23:18:58 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2020-05-06 13:58:09 -0700
commit434644b381cb1dc8d2080b19a9725bfe2660a217 (patch)
tree5c3ff5833d701e8528b79fb59e1a2e650925767a /core
parent9962d47b56eb15aba9339b22845566535c168483 (diff)
downloadsubsurface-434644b381cb1dc8d2080b19a9725bfe2660a217.tar.gz
undo: make picture (media) deletion undoable
The code is rather complex. Firstly, we have different representations of pictures throughout the code. Secondly, this tries to do add the pictures in batches to the divepicture model and that is always rather tricky. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'core')
-rw-r--r--core/picture.c12
-rw-r--r--core/picture.h2
-rw-r--r--core/subsurface-qt/divelistnotifier.h3
3 files changed, 5 insertions, 12 deletions
diff --git a/core/picture.c b/core/picture.c
index d7ba597f6..36953b8b1 100644
--- a/core/picture.c
+++ b/core/picture.c
@@ -30,7 +30,7 @@ static bool picture_less_than(struct picture a, struct picture b)
static MAKE_GROW_TABLE(picture_table, struct picture, pictures)
static MAKE_GET_INSERTION_INDEX(picture_table, struct picture, pictures, picture_less_than)
MAKE_ADD_TO(picture_table, struct picture, pictures)
-static MAKE_REMOVE_FROM(picture_table, pictures)
+MAKE_REMOVE_FROM(picture_table, pictures)
MAKE_SORT(picture_table, struct picture, pictures, comp_pictures)
//MAKE_REMOVE(picture_table, struct picture, picture)
MAKE_CLEAR_TABLE(picture_table, pictures, picture)
@@ -66,13 +66,3 @@ int get_picture_idx(const struct picture_table *t, const char *filename)
}
return -1;
}
-
-// Return true if picture was found and deleted
-bool remove_picture(struct picture_table *t, const char *filename)
-{
- int idx = get_picture_idx(t, filename);
- if (idx < 0)
- return false;
- remove_from_picture_table(t, idx);
- return true;
-}
diff --git a/core/picture.h b/core/picture.h
index 999ef9681..61492fffc 100644
--- a/core/picture.h
+++ b/core/picture.h
@@ -33,7 +33,7 @@ extern void clear_picture_table(struct picture_table *);
extern void add_to_picture_table(struct picture_table *, int idx, struct picture pic);
extern void copy_pictures(const struct picture_table *s, struct picture_table *d);
extern void add_picture(struct picture_table *, struct picture newpic);
-extern bool remove_picture(struct picture_table *, const char *filename);
+extern void remove_from_picture_table(struct picture_table *, int idx);
extern int get_picture_idx(const struct picture_table *, const char *filename); /* Return -1 if not found */
extern void sort_picture_table(struct picture_table *);
diff --git a/core/subsurface-qt/divelistnotifier.h b/core/subsurface-qt/divelistnotifier.h
index 0e85d6f26..2931e443e 100644
--- a/core/subsurface-qt/divelistnotifier.h
+++ b/core/subsurface-qt/divelistnotifier.h
@@ -6,6 +6,7 @@
#define DIVELISTNOTIFIER_H
#include "core/dive.h"
+#include "core/pictureobj.h"
#include <QObject>
@@ -118,6 +119,8 @@ signals:
// Picture (media) related signals
void pictureOffsetChanged(dive *d, QString filename, offset_t offset);
+ void picturesRemoved(dive *d, QVector<QString> filenames);
+ void picturesAdded(dive *d, QVector<PictureObj> pics);
// This signal is emited every time a command is executed.
// This is used to hide an old multi-dives-edited warning message.