## CamelVeeFolder

CamelVeeFolder

## Synopsis

    struct              CamelVeeFolder;
    #define             CAMEL_UNMATCHED_NAME
    CamelFolder *       camel_vee_folder_new                (CamelStore *parent_store,
                                                             const gchar *full,
                                                             guint32 flags);
    void                camel_vee_folder_construct          (CamelVeeFolder *vf,
                                                             guint32 flags);
    CamelFolder *       camel_vee_folder_get_location       (CamelVeeFolder *vf,
                                                             const struct _CamelVeeMessageInfo *vinfo,
                                                             gchar **realuid);
    CamelFolder *       camel_vee_folder_get_vee_uid_folder (CamelVeeFolder *vf,
                                                             const gchar *vee_message_uid);
    void                camel_vee_folder_set_auto_update    (CamelVeeFolder *vfolder,
                                                             gboolean auto_update);
    gboolean            camel_vee_folder_get_auto_update    (CamelVeeFolder *vfolder);
    void                camel_vee_folder_add_folder         (CamelVeeFolder *vfolder,
                                                             CamelFolder *subfolder,
                                                             GCancellable *cancellable);
    void                camel_vee_folder_remove_folder      (CamelVeeFolder *vfolder,
                                                             CamelFolder *subfolder,
                                                             GCancellable *cancellable);
    void                camel_vee_folder_set_folders        (CamelVeeFolder *vf,
                                                             GList *folders,
                                                             GCancellable *cancellable);
    void                camel_vee_folder_add_vuid           (CamelVeeFolder *vfolder,
                                                             struct _CamelVeeMessageInfoData *mi_data,
                                                             CamelFolderChangeInfo *changes);
    void                camel_vee_folder_remove_vuid        (CamelVeeFolder *vfolder,
                                                             struct _CamelVeeMessageInfoData *mi_data,
                                                             CamelFolderChangeInfo *changes);
    void                camel_vee_folder_rebuild_folder     (CamelVeeFolder *vfolder,
                                                             CamelFolder *subfolder,
                                                             GCancellable *cancellable);
    void                camel_vee_folder_set_expression     (CamelVeeFolder *vfolder,
                                                             const gchar *expr);
    const gchar *       camel_vee_folder_get_expression     (CamelVeeFolder *vfolder);
    void                camel_vee_folder_ignore_next_changed_event
                                                            (CamelVeeFolder *vfolder,
                                                             CamelFolder *subfolder);
    enum                CamelVeeFolderLock;
    void                camel_vee_folder_lock               (CamelVeeFolder *folder,
                                                             CamelVeeFolderLock lock);
    void                camel_vee_folder_unlock             (CamelVeeFolder *folder,
                                                             CamelVeeFolderLock lock);

## Object Hierarchy

      GObject
       +----CamelObject
             +----CamelFolder
                   +----CamelVeeFolder
                         +----CamelVTrashFolder

## Properties

      "auto-update"              gboolean              : Read / Write

## Description

## Details

### struct CamelVeeFolder

    struct CamelVeeFolder;

### CAMEL_UNMATCHED_NAME

    #define CAMEL_UNMATCHED_NAME "UNMATCHED"

### camel_vee_folder_new ()

    CamelFolder *       camel_vee_folder_new                (CamelStore *parent_store,
                                                             const gchar *full,
                                                             guint32 flags);

Create a new CamelVeeFolder object.

`parent_store` : | the parent CamelVeeStore
`full` : | the full path to the vfolder.
`flags` : | flags of some kind
Returns : | A new CamelVeeFolder widget.

### camel_vee_folder_construct ()

    void                camel_vee_folder_construct          (CamelVeeFolder *vf,
                                                             guint32 flags);

### camel_vee_folder_get_location ()

    CamelFolder *       camel_vee_folder_get_location       (CamelVeeFolder *vf,
                                                             const struct _CamelVeeMessageInfo *vinfo,
                                                             gchar **realuid);

Find the real folder (and uid)

`realuid` : | if not NULL, set to the uid of the real message, must be g_free'd by caller.

### camel_vee_folder_get_vee_uid_folder ()

    CamelFolder *       camel_vee_folder_get_vee_uid_folder (CamelVeeFolder *vf,
                                                             const gchar *vee_message_uid);

FIXME Document me!

Since 3.6

### camel_vee_folder_set_auto_update ()

    void                camel_vee_folder_set_auto_update    (CamelVeeFolder *vfolder,
                                                             gboolean auto_update);

FIXME Document me!

Since 3.6

### camel_vee_folder_get_auto_update ()

    gboolean            camel_vee_folder_get_auto_update    (CamelVeeFolder *vfolder);

FIXME Document me!

Since 3.6

### camel_vee_folder_add_folder ()

    void                camel_vee_folder_add_folder         (CamelVeeFolder *vfolder,
                                                             CamelFolder *subfolder,
                                                             GCancellable *cancellable);

Adds `subfolder` as a source folder to `vfolder`.

`vfolder` : | Virtual Folder object
`subfolder` : | source CamelFolder to add to `vfolder`

### camel_vee_folder_remove_folder ()

    void                camel_vee_folder_remove_folder      (CamelVeeFolder *vfolder,
                                                             CamelFolder *subfolder,
                                                             GCancellable *cancellable);

Removed the source folder, `subfolder`, from the virtual folder, `vfolder`.

`vfolder` : | Virtual Folder object
`subfolder` : | source CamelFolder to remove from `vfolder`

### camel_vee_folder_set_folders ()

    void                camel_vee_folder_set_folders        (CamelVeeFolder *vf,
                                                             GList *folders,
                                                             GCancellable *cancellable);

Set the whole list of folder sources on a vee folder.

### camel_vee_folder_add_vuid ()

    void                camel_vee_folder_add_vuid           (CamelVeeFolder *vfolder,
                                                             struct _CamelVeeMessageInfoData *mi_data,
                                                             CamelFolderChangeInfo *changes);

FIXME Document me!

Since 3.6

### camel_vee_folder_remove_vuid ()

    void                camel_vee_folder_remove_vuid        (CamelVeeFolder *vfolder,
                                                             struct _CamelVeeMessageInfoData *mi_data,
                                                             CamelFolderChangeInfo *changes);

FIXME Document me!

Since 3.6

### camel_vee_folder_rebuild_folder ()

    void                camel_vee_folder_rebuild_folder     (CamelVeeFolder *vfolder,
                                                             CamelFolder *subfolder,
                                                             GCancellable *cancellable);

Rebuild the folder `subfolder`, if it should be.

`vfolder` : | Virtual Folder object
`subfolder` : | source CamelFolder to add to `vfolder`

### camel_vee_folder_set_expression ()

    void                camel_vee_folder_set_expression     (CamelVeeFolder *vfolder,
                                                             const gchar *expr);

### camel_vee_folder_get_expression ()

    const gchar *       camel_vee_folder_get_expression     (CamelVeeFolder *vfolder);

FIXME Document me!

Since 3.6

### camel_vee_folder_ignore_next_changed_event ()

    void                camel_vee_folder_ignore_next_changed_event
                                                            (CamelVeeFolder *vfolder,
                                                             CamelFolder *subfolder);

The next `subfolder`-'s 'changed' event will be silently ignored. This is usually used in virtual folders when the change was done in them, but it is neither vTrash nor vJunk folder. Doing this avoids unnecessary removals of messages which don't satisfy search criteria anymore, which could be done on asynchronous delivery of folder's 'changed' signal. These ignored changes are accumulated and used on folder refresh.

`vfolder` : | a CamelVeeFolder
`subfolder` : | a CamelFolder folder

Since 3.2

### enum CamelVeeFolderLock

    typedef enum {
    	CAMEL_VEE_FOLDER_SUMMARY_LOCK,
    	CAMEL_VEE_FOLDER_SUBFOLDER_LOCK,
    	CAMEL_VEE_FOLDER_CHANGED_LOCK
    } CamelVeeFolderLock;

`CAMEL_VEE_FOLDER_SUMMARY_LOCK` |
`CAMEL_VEE_FOLDER_SUBFOLDER_LOCK` |
`CAMEL_VEE_FOLDER_CHANGED_LOCK` |

Since 2.32

### camel_vee_folder_lock ()

    void                camel_vee_folder_lock               (CamelVeeFolder *folder,
                                                             CamelVeeFolderLock lock);

Locks `folder`'s `lock`. Unlock it with `camel_vee_folder_unlock()`.

`folder` : | a CamelVeeFolder
`lock` : | lock type to lock

Since 2.32

### camel_vee_folder_unlock ()

    void                camel_vee_folder_unlock             (CamelVeeFolder *folder,
                                                             CamelVeeFolderLock lock);

Unlocks `folder`'s `lock`, previously locked with `camel_vee_folder_lock()`.

`folder` : | a CamelVeeFolder
`lock` : | lock type to unlock

Since 2.32

## Property Details

### The `"auto-update"` property

      "auto-update"              gboolean              : Read / Write

Automatically _update on change in source folders.

Default value: TRUE