| Camel Reference Manual | ||||
|---|---|---|---|---|
struct CamelFolder; CamelFolderChangeInfo; CamelFolderQuotaInfo; #define CAMEL_FOLDER_HAS_SUMMARY_CAPABILITY #define CAMEL_FOLDER_HAS_SEARCH_CAPABILITY #define CAMEL_FOLDER_FILTER_RECENT #define CAMEL_FOLDER_HAS_BEEN_DELETED #define CAMEL_FOLDER_IS_TRASH #define CAMEL_FOLDER_IS_JUNK #define CAMEL_FOLDER_FILTER_JUNKvoid camel_folder_construct (CamelFolder *folder, CamelStore *parent_store, constgchar *full_name, constgchar *name);void camel_folder_refresh_info (CamelFolder *folder, CamelException *ex);void camel_folder_sync (CamelFolder *folder,gboolean expunge, CamelException *ex); CamelStore * camel_folder_get_parent_store (CamelFolder *folder);void camel_folder_expunge (CamelFolder *folder, CamelException *ex); constgchar * camel_folder_get_name (CamelFolder *folder); constgchar * camel_folder_get_full_name (CamelFolder *folder);guint32 camel_folder_get_permanent_flags (CamelFolder *folder);guint32 camel_folder_get_message_flags (CamelFolder *folder, constgchar *uid);gboolean camel_folder_set_message_flags (CamelFolder *folder, constgchar *uid,guint32 flags,guint32 set);gboolean camel_folder_get_message_user_flag (CamelFolder *folder, constgchar *uid, constgchar *name);void camel_folder_set_message_user_flag (CamelFolder *folder, constgchar *uid, constgchar *name,gboolean value); constgchar * camel_folder_get_message_user_tag (CamelFolder *folder, constgchar *uid, constgchar *name);void camel_folder_set_message_user_tag (CamelFolder *folder, constgchar *uid, constgchar *name, constgchar *value);void camel_folder_append_message (CamelFolder *folder, CamelMimeMessage *message, const CamelMessageInfo *info,gchar **appended_uid, CamelException *ex);gboolean camel_folder_has_summary_capability (CamelFolder *folder);gint camel_folder_get_message_count (CamelFolder *folder);gint camel_folder_get_unread_message_count (CamelFolder *folder);gint camel_folder_get_deleted_message_count (CamelFolder *folder);GPtrArray * camel_folder_get_summary (CamelFolder *folder);void camel_folder_free_summary (CamelFolder *folder,GPtrArray *array); CamelMimeMessage * camel_folder_get_message (CamelFolder *folder, constgchar *uid, CamelException *ex);void camel_folder_sync_message (CamelFolder *folder, constgchar *uid, CamelException *ex); #define camel_folder_delete_message (folder, uid)GPtrArray * camel_folder_get_uids (CamelFolder *folder);void camel_folder_free_uids (CamelFolder *folder,GPtrArray *array);GPtrArray * camel_folder_get_uncached_uids (CamelFolder *,GPtrArray *uids, CamelException *);gint camel_folder_cmp_uids (CamelFolder *folder, constgchar *uid1, constgchar *uid2);void camel_folder_sort_uids (CamelFolder *folder,GPtrArray *uids);gboolean camel_folder_has_search_capability (CamelFolder *folder);GPtrArray * camel_folder_search_by_expression (CamelFolder *folder, constgchar *expr, CamelException *ex);GPtrArray * camel_folder_search_by_uids (CamelFolder *folder, constgchar *expr,GPtrArray *uids, CamelException *ex);void camel_folder_search_free (CamelFolder *folder,GPtrArray *result);guint32 camel_folder_count_by_expression (CamelFolder *folder, constgchar *expression, CamelException *ex); CamelMessageInfo * camel_folder_get_message_info (CamelFolder *folder, constgchar *uid);void camel_folder_free_message_info (CamelFolder *folder, CamelMessageInfo *info);void camel_folder_ref_message_info (CamelFolder *folder, CamelMessageInfo *info);void camel_folder_transfer_messages_to (CamelFolder *source,GPtrArray *uids, CamelFolder *dest,GPtrArray **transferred_uids,gboolean delete_originals, CamelException *ex);void camel_folder_delete (CamelFolder *folder);void camel_folder_rename (CamelFolder *folder, constgchar *new);void camel_folder_freeze (CamelFolder *folder);void camel_folder_thaw (CamelFolder *folder);gboolean camel_folder_is_frozen (CamelFolder *folder); CamelFolderQuotaInfo * camel_folder_get_quota_info (CamelFolder *folder); CamelFolderQuotaInfo * camel_folder_quota_info_new (constgchar *name,guint64 used,guint64 total); CamelFolderQuotaInfo * camel_folder_quota_info_clone (const CamelFolderQuotaInfo *info);void camel_folder_quota_info_free (CamelFolderQuotaInfo *info);void camel_folder_free_nop (CamelFolder *folder,GPtrArray *array);void camel_folder_free_shallow (CamelFolder *folder,GPtrArray *array);void camel_folder_free_deep (CamelFolder *folder,GPtrArray *array);gchar * camel_folder_get_filename (CamelFolder *folder, constgchar *uid, CamelException *ex); CamelFolderChangeInfo * camel_folder_change_info_new (void);void camel_folder_change_info_clear (CamelFolderChangeInfo *info);void camel_folder_change_info_free (CamelFolderChangeInfo *info);gboolean camel_folder_change_info_changed (CamelFolderChangeInfo *info);void camel_folder_change_info_add_source (CamelFolderChangeInfo *info, constgchar *uid);void camel_folder_change_info_add_source_list (CamelFolderChangeInfo *info, constGPtrArray *list);void camel_folder_change_info_add_update (CamelFolderChangeInfo *info, constgchar *uid);void camel_folder_change_info_add_update_list (CamelFolderChangeInfo *info, constGPtrArray *list);void camel_folder_change_info_build_diff (CamelFolderChangeInfo *info);void camel_folder_change_info_cat (CamelFolderChangeInfo *info, CamelFolderChangeInfo *src);void camel_folder_change_info_add_uid (CamelFolderChangeInfo *info, constgchar *uid);void camel_folder_change_info_remove_uid (CamelFolderChangeInfo *info, constgchar *uid);void camel_folder_change_info_change_uid (CamelFolderChangeInfo *info, constgchar *uid);void camel_folder_change_info_recent_uid (CamelFolderChangeInfo *info, constgchar *uid);
struct CamelFolder {
CamelObject parent_object;
struct _CamelFolderPrivate *priv;
/* get these via the :get() method, they might not be set otherwise */
gchar *name;
gchar *full_name;
gchar *description;
CamelStore *parent_store;
CamelFolderSummary *summary;
guint32 folder_flags;
guint32 permanent_flags;
/* Future ABI expansion */
gpointer later[4];
};
typedef struct {
GPtrArray *uid_added;
GPtrArray *uid_removed;
GPtrArray *uid_changed;
GPtrArray *uid_recent;
struct _CamelFolderChangeInfoPrivate *priv;
} CamelFolderChangeInfo;
typedef struct {
gchar *name;
guint64 used;
guint64 total;
struct _CamelFolderQuotaInfo *next;
} CamelFolderQuotaInfo;
void camel_folder_construct (CamelFolder *folder, CamelStore *parent_store, constgchar *full_name, constgchar *name);
Initalizes the folder by setting the parent store and name.
|
a CamelFolder object to construct |
|
parent CamelStore object of the folder |
|
full name of the folder |
|
short name of the folder |
void camel_folder_refresh_info (CamelFolder *folder, CamelException *ex);
Updates a folder's summary to be in sync with its backing store.
|
a CamelFolder object |
|
a CamelException |
void camel_folder_sync (CamelFolder *folder,gboolean expunge, CamelException *ex);
Sync changes made to a folder to its backing store, possibly expunging deleted messages as well.
|
a CamelFolder object |
|
whether or not to expunge deleted messages |
|
a CamelException |
CamelStore * camel_folder_get_parent_store (CamelFolder *folder);
|
a CamelFolder object |
Returns : |
the parent CamelStore of the folder |
void camel_folder_expunge (CamelFolder *folder, CamelException *ex);
Delete messages which have been marked as "DELETED"
|
a CamelFolder object |
|
a CamelException |
constgchar * camel_folder_get_name (CamelFolder *folder);
Get the (short) name of the folder. The fully qualified name can be obtained with the camel_folder_get_full_name method.
|
a CamelFolder object |
Returns : |
the short name of the folder |
constgchar * camel_folder_get_full_name (CamelFolder *folder);
Get the full name of the folder.
|
a CamelFolder object |
Returns : |
the full name of the folder |
guint32 camel_folder_get_permanent_flags (CamelFolder *folder);
|
a CamelFolder object |
Returns : |
the set of CamelMessageFlags that can be permanently
stored on a message between sessions. If it includes
|
guint32 camel_folder_get_message_flags (CamelFolder *folder, constgchar *uid);
camel_folder_get_message_flags is deprecated and should not be used in newly-written code. Use camel_folder_get_message_info instead.
|
a CamelFolder object |
|
the UID of a message in folder
|
Returns : |
the CamelMessageFlags that are set on the indicated message. |
gboolean camel_folder_set_message_flags (CamelFolder *folder, constgchar *uid,guint32 flags,guint32 set);
camel_folder_set_message_flags is deprecated and should not be used in newly-written code. Use camel_message_info_set_flags on the message info directly
(when it works)
Sets those flags specified by flags to the values specified by set
on the indicated message. (This may or may not persist after the
folder or store is closed. See camel_folder_get_permanent_flags)
E.g. to set the deleted flag and clear the draft flag, use camel_folder_set_message_flags(folder, uid, CAMEL_MESSAGE_DELETED|CAMEL_MESSAGE_DRAFT, CAMEL_MESSAGE_DELETED);
|
a CamelFolder object |
|
the UID of a message in folder
|
|
a set of |
|
the mask of values in flags to use.
|
Returns : |
TRUEFALSE |
gboolean camel_folder_get_message_user_flag (CamelFolder *folder, constgchar *uid, constgchar *name);
camel_folder_get_message_user_flag is deprecated and should not be used in newly-written code. Use
|
a CamelFolder object |
|
the UID of a message in folder
|
|
the name of a user flag |
Returns : |
TRUEFALSE |
void camel_folder_set_message_user_flag (CamelFolder *folder, constgchar *uid, constgchar *name,gboolean value);
camel_folder_set_message_user_flag is deprecated and should not be used in newly-written code. Use camel_message_info_set_user_flag on the
CamelMessageInfo directly (when it works)
Sets the user flag specified by name to the value specified by value
on the indicated message. (This may or may not persist after the
folder or store is closed. See camel_folder_get_permanent_flags)
|
a CamelFolder object |
|
the UID of a message in folder
|
|
the name of the user flag to set |
|
the value to set it to |
constgchar * camel_folder_get_message_user_tag (CamelFolder *folder, constgchar *uid, constgchar *name);
camel_folder_get_message_user_tag is deprecated and should not be used in newly-written code. Use
|
a CamelFolder object |
|
the UID of a message in folder
|
|
the name of a user tag |
Returns : |
the value of the user tag |
void camel_folder_set_message_user_tag (CamelFolder *folder, constgchar *uid, constgchar *name, constgchar *value);
camel_folder_set_message_user_tag is deprecated and should not be used in newly-written code. Use camel_message_info_set_user_tag on the
CamelMessageInfo directly (when it works).
Sets the user tag specified by name to the value specified by value
on the indicated message. (This may or may not persist after the
folder or store is closed. See camel_folder_get_permanent_flags)
|
a CamelFolder object |
|
the UID of a message in folder
|
|
the name of the user tag to set |
|
the value to set it to |
void camel_folder_append_message (CamelFolder *folder, CamelMimeMessage *message, const CamelMessageInfo *info,gchar **appended_uid, CamelException *ex);
Append message to folder. Only the flag and tag data from info
are used. If info is NULL
|
a CamelFolder object |
|
a CamelMimeMessage object |
|
a CamelMessageInfo with additional flags/etc to set on
new message, or NULL |
|
if non-NULL |
|
a CamelException |
gboolean camel_folder_has_summary_capability (CamelFolder *folder);
Get whether or not the folder has a summary.
|
a CamelFolder object |
Returns : |
TRUEFALSE |
gint camel_folder_get_message_count (CamelFolder *folder);
|
a CamelFolder object |
Returns : |
the number of messages in the folder, or -1 |
gint camel_folder_get_unread_message_count (CamelFolder *folder);
camel_folder_get_unread_message_count is deprecated and should not be used in newly-written code. use camel_object_get instead.
|
a CamelFolder object |
Returns : |
the number of unread messages in the folder, or -1 |
gint camel_folder_get_deleted_message_count (CamelFolder *folder);
|
a CamelFolder object |
Returns : |
the number of deleted messages in the folder, or -1 |
GPtrArray * camel_folder_get_summary (CamelFolder *folder);
This returns the summary information for the folder. This array should not be modified, and must be freed with camel_folder_free_summary.
|
a CamelFolder object |
Returns : |
an array of CamelMessageInfo |
void camel_folder_free_summary (CamelFolder *folder,GPtrArray *array);
Frees the summary array returned by camel_folder_get_summary.
|
a CamelFolder object |
|
the summary array to free |
CamelMimeMessage * camel_folder_get_message (CamelFolder *folder, constgchar *uid, CamelException *ex);
Get a message from its UID in the folder.
|
a CamelFolder object |
|
the UID |
|
a CamelException |
Returns : |
a CamelMimeMessage corresponding to uid
|
void camel_folder_sync_message (CamelFolder *folder, constgchar *uid, CamelException *ex);
Ensure that a message identified by UID has been synced in the folder (so that camel_folder_get_message on it later will work in offline mode).
|
a CamelFolder object |
|
the UID |
|
a CamelException |
GPtrArray * camel_folder_get_uids (CamelFolder *folder);
Get the list of UIDs available in a folder. This routine is useful for finding what messages are available when the folder does not support summaries. The returned array should not be modified, and must be freed by passing it to camel_folder_free_uids.
|
a CamelFolder object |
Returns : |
a GPtrArray of UIDs corresponding to the messages available in the folder |
void camel_folder_free_uids (CamelFolder *folder,GPtrArray *array);
Frees the array of UIDs returned by camel_folder_get_uids.
|
a CamelFolder object |
|
the array of uids to free |
GPtrArray * camel_folder_get_uncached_uids (CamelFolder *,GPtrArray *uids, CamelException *);
|
|
|
the array of uids to filter down to uncached ones. |
|
|
Returns : |
the known-uncached uids from a list of uids. It may return uids which are locally cached but should never filter out a uid which is not locally cached. Free the result by called camel_folder_free_uids. Frees the array of UIDs returned by camel_folder_get_uids. |
gint camel_folder_cmp_uids (CamelFolder *folder, constgchar *uid1, constgchar *uid2);
Compares two uids. The return value meaning is the same as in any other compare function.
Note that the default compare function expects a decimal number at the beginning of a uid, thus if provider uses different uid values, then it should subclass this function.
|
a CamelFolder object |
|
The first uid. |
|
the second uid. |
Returns : |
void camel_folder_sort_uids (CamelFolder *folder,GPtrArray *uids);
Sorts the array of UIDs.
|
a CamelFolder object |
|
array of uids |
gboolean camel_folder_has_search_capability (CamelFolder *folder);
Checks if a folder supports searching.
|
a CamelFolder object |
Returns : |
TRUEFALSE |
GPtrArray * camel_folder_search_by_expression (CamelFolder *folder, constgchar *expr, CamelException *ex);
Searches the folder for messages matching the given search expression.
|
a CamelFolder object |
|
a search expression |
|
a CamelException |
Returns : |
a |
GPtrArray * camel_folder_search_by_uids (CamelFolder *folder, constgchar *expr,GPtrArray *uids, CamelException *ex);
Search a subset of uid's for an expression match.
|
a CamelFolder object |
|
search expression |
|
array of uid's to match against. |
|
a CamelException |
Returns : |
a |
void camel_folder_search_free (CamelFolder *folder,GPtrArray *result);
Free the result of a search as gotten by
|
a CamelFolder object |
|
search results to free |
guint32 camel_folder_count_by_expression (CamelFolder *folder, constgchar *expression, CamelException *ex);
Searches the folder for count of messages matching the given search expression.
|
a CamelFolder object |
|
|
|
a CamelException |
Returns : |
an interger |
CamelMessageInfo * camel_folder_get_message_info (CamelFolder *folder, constgchar *uid);
Retrieve the CamelMessageInfo for the specified uid. This return
must be freed using camel_folder_free_message_info.
|
a CamelFolder object |
|
the uid of a message |
Returns : |
the summary information for the indicated message, or NULL |
void camel_folder_free_message_info (CamelFolder *folder, CamelMessageInfo *info);
Free (unref) a CamelMessageInfo, previously obtained with camel_folder_get_message_info.
|
a CamelFolder object |
|
a CamelMessageInfo |
void camel_folder_ref_message_info (CamelFolder *folder, CamelMessageInfo *info);
camel_folder_ref_message_info is deprecated and should not be used in newly-written code. Use camel_message_info_ref directly.
Ref a CamelMessageInfo, previously obtained with camel_folder_get_message_info.
|
a CamelFolder object |
|
a CamelMessageInfo |
void camel_folder_transfer_messages_to (CamelFolder *source,GPtrArray *uids, CamelFolder *dest,GPtrArray **transferred_uids,gboolean delete_originals, CamelException *ex);
This copies or moves messages from one folder to another. If the
source and dest folders have the same parent_store, this may be
more efficient than using camel_folder_append_message.
|
the source CamelFolder object |
|
message UIDs in source
|
|
the destination CamelFolder object |
|
if non-NULLdest will be stored here, if known.
|
|
whether or not to delete the original messages |
|
a CamelException |
void camel_folder_delete (CamelFolder *folder);
Marks a folder object as deleted and performs any required cleanup.
|
a CamelFolder object |
void camel_folder_rename (CamelFolder *folder, constgchar *new);
Mark an active folder object as renamed.
NOTE: This is an internal function used by camel stores, no locking is performed on the folder.
|
a CamelFolder object |
|
new name for the folder |
void camel_folder_freeze (CamelFolder *folder);
Freezes the folder so that a series of operation can be performed without "folder_changed" signals being emitted. When the folder is later thawed with camel_folder_thaw, the suppressed signals will be emitted.
|
a CamelFolder |
void camel_folder_thaw (CamelFolder *folder);
Thaws the folder and emits any pending folder_changed signals.
|
a CamelFolder object |
gboolean camel_folder_is_frozen (CamelFolder *folder);
|
a CamelFolder object |
Returns : |
whether or not the folder is frozen |
CamelFolderQuotaInfo * camel_folder_get_quota_info (CamelFolder *folder);
|
a CamelFolder object |
Returns : |
list of known quota(s) for the folder. |
CamelFolderQuotaInfo * camel_folder_quota_info_new (constgchar *name,guint64 used,guint64 total);
|
Name of the quota. |
|
Current usage of the quota. |
|
Total available size of the quota. |
Returns : |
newly allocated CamelFolderQuotaInfo structure with initialized values based on the parameters, with next member set to NULL. |
CamelFolderQuotaInfo * camel_folder_quota_info_clone (const CamelFolderQuotaInfo *info);
Makes a copy of the given info and all next-s.
|
a CamelFolderQuotaInfo object to clone. |
Returns : |
void camel_folder_quota_info_free (CamelFolderQuotaInfo *info);
Frees this and all next objects.
|
a CamelFolderQuotaInfo object to free. |
void camel_folder_free_nop (CamelFolder *folder,GPtrArray *array);
"Frees" the provided array by doing nothing. Used by CamelFolder subclasses as an implementation for free_uids, or free_summary when the returned array is "static" information and should not be freed.
|
a CamelFolder object |
|
an array of uids or CamelMessageInfo |
void camel_folder_free_shallow (CamelFolder *folder,GPtrArray *array);
Frees the provided array but not its contents. Used by CamelFolder subclasses as an implementation for free_uids or free_summary when the returned array needs to be freed but its contents come from "static" information.
|
a CamelFolder object |
|
an array of uids or CamelMessageInfo |
void camel_folder_free_deep (CamelFolder *folder,GPtrArray *array);
Frees the provided array and its contents. Used by CamelFolder subclasses as an implementation for free_uids when the provided information was created explicitly by the corresponding get_ call.
|
a CamelFolder object |
|
an array of uids |
gchar * camel_folder_get_filename (CamelFolder *folder, constgchar *uid, CamelException *ex);
|
|
|
|
|
|
Returns : |
CamelFolderChangeInfo * camel_folder_change_info_new (void);
Create a new folder change info structure.
Change info structures are not MT-SAFE and must be locked for exclusive access externally.
Returns : |
a new CamelFolderChangeInfo |
void camel_folder_change_info_clear (CamelFolderChangeInfo *info);
Empty out the change info; called after changes have been processed.
|
a CamelFolderChangeInfo |
void camel_folder_change_info_free (CamelFolderChangeInfo *info);
Free memory associated with the folder change info lists.
|
a CamelFolderChangeInfo |
gboolean camel_folder_change_info_changed (CamelFolderChangeInfo *info);
Gets whether or not there have been any changes.
|
a CamelFolderChangeInfo |
Returns : |
TRUEFALSE |
void camel_folder_change_info_add_source (CamelFolderChangeInfo *info, constgchar *uid);
Add a source uid for generating a changeset.
|
a CamelFolderChangeInfo |
|
a uid |
void camel_folder_change_info_add_source_list (CamelFolderChangeInfo *info, constGPtrArray *list);
Add a list of source uid's for generating a changeset.
|
a CamelFolderChangeInfo |
|
a list of uids |
void camel_folder_change_info_add_update (CamelFolderChangeInfo *info, constgchar *uid);
Add a uid from the updated list, used to generate a changeset diff.
|
a CamelFolderChangeInfo |
|
a uid |
void camel_folder_change_info_add_update_list (CamelFolderChangeInfo *info, constGPtrArray *list);
Add a list of uid's from the updated list.
|
a CamelFolderChangeInfo |
|
a list of uids |
void camel_folder_change_info_build_diff (CamelFolderChangeInfo *info);
Compare the source uid set to the updated uid set and generate the differences into the added and removed lists.
|
a CamelFolderChangeInfo |
void camel_folder_change_info_cat (CamelFolderChangeInfo *info, CamelFolderChangeInfo *src);
Concatenate one change info onto antoher. Can be used to copy them too.
|
a CamelFolderChangeInfo to append to |
|
a CamelFolderChangeInfo to append from |
void camel_folder_change_info_add_uid (CamelFolderChangeInfo *info, constgchar *uid);
Add a new uid to the changeinfo.
|
a CamelFolderChangeInfo |
|
a uid |
void camel_folder_change_info_remove_uid (CamelFolderChangeInfo *info, constgchar *uid);
Add a uid to the removed uid list.
|
a CamelFolderChangeInfo |
|
a uid |
void camel_folder_change_info_change_uid (CamelFolderChangeInfo *info, constgchar *uid);
Add a uid to the changed uid list.
|
a CamelFolderChangeInfo |
|
a uid |
void camel_folder_change_info_recent_uid (CamelFolderChangeInfo *info, constgchar *uid);
Add a recent uid to the changedinfo. This will also add the uid to the uid_filter array for potential filtering
|
a CamelFolderChangeInfo |
|
a uid |