14 #ifndef __UT_GALLERYDATASOURCE_H__
15 #define __UT_GALLERYDATASOURCE_H__
49 virtual void initializeData();
60 virtual bool isValid()
const = 0;
63 virtual bool isReadOnly()
const = 0;
81 virtual time_t creationDate(
const UT_StringRef &item_id)
const = 0;
82 virtual time_t modificationDate(
const UT_StringRef &item_id)
const = 0;
83 virtual bool isStarred(
const UT_StringRef &item_id)
const = 0;
88 virtual bool ownsFile(
const UT_StringRef &item_id)
const = 0;
121 const char *file_path)
127 const void *
data,
int data_size)
138 virtual bool deleteTag(
const char *tag,
bool delete_if_assigned)
const
153 const char *file_ext)
159 const void *thumbnail_data,
160 int thumbnail_data_size,
161 const char *item_file,
163 const void *item_data,
165 time_t *creation_date,
201 { myOwnerUpdatedIds.erase(owner); }
232 static void registerDataSourceImplementation(
241 {
return myImpl && myImpl->isValid(); }
244 {
return myImpl->isReadOnly(); }
247 {
return mySourceIdentifier; }
250 {
return mySourceArgs; }
253 {
return myImpl->infoHtml(); }
259 { myImpl->startTransaction(); }
261 { myImpl->endTransaction(); }
265 { item_ids.
clear(); myImpl->itemIds(item_ids); }
270 { item_ids.
clear(); myImpl->childItemIds(parent_item_id, item_ids); }
274 {
return myImpl->sourceTypeName(item_id); }
276 {
return myImpl->typeName(item_id); }
278 {
return myImpl->renderMethod(item_id); }
280 {
return myImpl->label(item_id); }
282 {
return myImpl->thumbnail(item_id); }
284 {
return myImpl->creationDate(item_id); }
286 {
return myImpl->modificationDate(item_id); }
288 {
return myImpl->isStarred(item_id); }
290 {
return myImpl->colorTag(item_id); }
292 {
return myImpl->tags(item_id); }
294 {
return myImpl->metadata(item_id); }
296 {
return myImpl->filePath(item_id); }
298 {
return myImpl->ownsFile(item_id); }
300 {
return myImpl->blindData(item_id); }
302 {
return myImpl->status(item_id); }
304 {
return myImpl->parentId(item_id); }
306 {
return myImpl->prepareItemForUse(item_id); }
308 {
return myImpl->isFilePathEditable(item_id); }
325 const char *file_path);
329 const void *
data,
int data_size);
335 bool createTag(
const char *tag);
336 bool deleteTag(
const char *tag,
bool delete_if_assigned);
337 bool addTag(
const UT_StringRef &item_id,
const char *tag);
338 bool removeTag(
const UT_StringRef &item_id,
const char *tag);
345 const char *file_ext);
350 const void *thumbnail_data,
351 int thumbnail_data_size,
352 const char *item_file =
nullptr,
353 bool item_owns_file =
false,
354 const void *item_data =
nullptr,
355 int item_data_size = 0,
356 time_t *creation_date =
nullptr,
372 void initializeData();
UT_StringHolder renderMethod(const UT_StringRef &item_id) const
UT_StringHolder typeName(const UT_StringRef &item_id) const
void itemIds(UT_StringArray &item_ids) const
Populate an array with all valid item ids.
GLuint GLsizei const GLchar * label
UT_StringHolder filePath(const UT_StringRef &item_id) const
virtual bool setMetadata(const UT_StringRef &item_id, const UT_Options &metadata)
virtual bool saveAs(const UT_StringHolder &source_identifier)
UT_StringHolder parentId(const UT_StringRef &item_id) const
void addOwner(const UT_GalleryDataSource *owner)
virtual bool setRenderMethod(const UT_StringRef &item_id, const UT_StringHolder &render_method)
UT_StringHolder label(const UT_StringRef &item_id) const
void childItemIds(const UT_StringRef &parent_item_id, UT_StringArray &item_ids) const
Populate an array with all valid item ids with the given parent 'item_id'.
virtual bool setIsStarred(const UT_StringRef &item_id, bool isstarred)
virtual bool isFilePathEditable(const UT_StringRef &item_id) const
virtual bool deleteTag(const char *tag, bool delete_if_assigned) const
void endTransaction(bool commit=true) const
virtual UT_StringHolder generateItemFilePath(const UT_StringRef &item_id, const char *file_ext)
time_t creationDate(const UT_StringRef &item_id) const
UT_StringHolder colorTag(const UT_StringRef &item_id) const
UT_StringHolder sourceTypeName(const UT_StringRef &item_id) const
Return the source type.
virtual void endTransaction(bool commit=true) const
virtual bool markItemsForDeletion(const UT_StringArray &item_ids)
UT_StringHolder prepareItemForUse(const UT_StringRef &item_id) const
GLintptr GLsizeiptr GLboolean commit
virtual bool setOwnsFile(const UT_StringRef &item_id, bool owns_file)
const UT_StringHolder & sourceIdentifier() const
Return the source identifier.
bool isStarred(const UT_StringRef &item_id) const
UT_WorkBuffer thumbnail(const UT_StringRef &item_id) const
UT_Function< UT_SharedPtr< UT_GalleryDataSourceImpl > const UT_StringHolder &, const UT_StringHolder &)> CreatorFunc
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
virtual bool setFilePath(const UT_StringRef &item_id, const char *file_path)
virtual bool setStatus(const UT_StringRef &item_id, const UT_StringHolder &status)
static const UT_StringHolder theEmptyString
virtual void startTransaction() const
virtual bool unmarkItemsForDeletion(const UT_StringArray &item_ids)
#define UT_NON_COPYABLE(CLASS)
Define deleted copy constructor and assignment operator inside a class.
virtual bool setThumbnail(const UT_StringRef &item_id, const UT_WorkBuffer &thumbnail)
bool isFilePathEditable(const UT_StringRef &item_id) const
UT_Options metadata(const UT_StringRef &item_id) const
GLuint const GLchar * name
virtual UT_StringHolder addItem(const UT_StringRef &item_type_name, const UT_StringRef &name, const void *thumbnail_data, int thumbnail_data_size, const char *item_file, bool item_owns_file, const void *item_data, int item_data_size, time_t *creation_date, const UT_StringRef &parent_id)
Add a new gallery item to the data source.
std::function< T > UT_Function
UT_WorkBuffer blindData(const UT_StringRef &item_id) const
void startTransaction() const
void removeOwner(const UT_GalleryDataSource *owner)
UT_StringHolder status(const UT_StringRef &item_id) const
A map of string to various well defined value types.
virtual bool setColorTag(const UT_StringRef &item_id, const UT_StringHolder &color_tag)
virtual bool setParentId(const UT_StringRef &item_id, const UT_StringHolder &parent_item_id)
const UT_StringHolder & sourceArgs() const
Return the source args.
virtual bool addTag(const UT_StringRef &item_id, const char *tag)
virtual bool createTag(const char *tag)
bool ownsFile(const UT_StringRef &item_id) const
virtual bool setBlindData(const UT_StringRef &item_id, const void *data, int data_size)
time_t modificationDate(const UT_StringRef &item_id) const
**If you just want to fire and args
UT_Map< const UT_GalleryDataSource *, UT_StringSet > myOwnerUpdatedIds
UT_StringHolder infoHtml() const
Return HTML formatted info about the data source.
void clear()
Resets list to an empty list.
UT_StringSet tags(const UT_StringRef &item_id) const
UT_Function< bool(const UT_StringHolder &)> ValidatorFunc
virtual bool setModificationDate(const UT_StringRef &item_id, time_t timestamp)
virtual bool removeTag(const UT_StringRef &item_id, const char *tag) const
bool isReadOnly() const
Return true if the source implementation is read only.
virtual bool setLabel(const UT_StringRef &item_id, const UT_StringHolder &label)