## 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);
    void                camel_vee_folder_add_folder         (CamelVeeFolder *vf,
                                                             CamelFolder *sub);
    void                camel_vee_folder_remove_folder      (CamelVeeFolder *vf,
                                                             CamelFolder *sub);
    void                camel_vee_folder_set_folders        (CamelVeeFolder *vf,
                                                             GList *folders);
    gint                camel_vee_folder_rebuild_folder     (CamelVeeFolder *vf,
                                                             CamelFolder *sub,
                                                             GError **error);
    void                camel_vee_folder_set_expression     (CamelVeeFolder *vf,
                                                             const gchar *expr);
    void                camel_vee_folder_mask_event_folder_changed
                                                            (CamelVeeFolder *vf,
                                                             CamelFolder *sub);
    void                camel_vee_folder_unmask_event_folder_changed
                                                            (CamelVeeFolder *vf,
                                                             CamelFolder *sub);
    void                camel_vee_folder_hash_folder        (CamelFolder *folder,
                                                             gchar buffer[8]);
    void                camel_vee_folder_sync_headers       (CamelFolder *vf,
                                                             GError **error);
    gint                camel_vee_folder_get_unread_vfolder (CamelVeeFolder *folder);
    void                camel_vee_folder_set_unread_vfolder (CamelVeeFolder *folder,
                                                             gint unread_vfolder);
    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

## 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_add_folder ()

    void                camel_vee_folder_add_folder         (CamelVeeFolder *vf,
                                                             CamelFolder *sub);

Adds `sub` as a source folder to `vf`.

`vf` : | Virtual Folder object
`sub` : | source CamelFolder to add to `vf`

### camel_vee_folder_remove_folder ()

    void                camel_vee_folder_remove_folder      (CamelVeeFolder *vf,
                                                             CamelFolder *sub);

Removed the source folder, `sub`, from the virtual folder, `vf`.

`vf` : | Virtual Folder object
`sub` : | source CamelFolder to remove from `vf`

### camel_vee_folder_set_folders ()

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

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

### camel_vee_folder_rebuild_folder ()

    gint                camel_vee_folder_rebuild_folder     (CamelVeeFolder *vf,
                                                             CamelFolder *sub,
                                                             GError **error);

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

`vf` : | Virtual Folder object
`sub` : | source CamelFolder to add to `vf`
`error` : | return location for a GError, or `NULL`

### camel_vee_folder_set_expression ()

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

### camel_vee_folder_mask_event_folder_changed ()

    void                camel_vee_folder_mask_event_folder_changed
                                                            (CamelVeeFolder *vf,
                                                             CamelFolder *sub);

Since 2.26

### camel_vee_folder_unmask_event_folder_changed ()

    void                camel_vee_folder_unmask_event_folder_changed
                                                            (CamelVeeFolder *vf,
                                                             CamelFolder *sub);

Since 2.26

### camel_vee_folder_hash_folder ()

    void                camel_vee_folder_hash_folder        (CamelFolder *folder,
                                                             gchar buffer[8]);

Create a hash string representing the folder name, which should be unique, and remain static for a given folder.

`folder` : | @:

### camel_vee_folder_sync_headers ()

    void                camel_vee_folder_sync_headers       (CamelFolder *vf,
                                                             GError **error);

Since 2.24

### camel_vee_folder_get_unread_vfolder ()

    gint                camel_vee_folder_get_unread_vfolder (CamelVeeFolder *folder);

`folder` : | a CamelVeeFolder

Since 2.32

### camel_vee_folder_set_unread_vfolder ()

    void                camel_vee_folder_set_unread_vfolder (CamelVeeFolder *folder,
                                                             gint unread_vfolder);

`folder` : | a CamelVeeFolder
`unread_vfolder` : | `TRUE` if `folder` is for unread messages

Since 2.32

### enum CamelVeeFolderLock

    typedef enum {
    	CAMEL_VEE_FOLDER_SUMMARY_LOCK,
    	CAMEL_VEE_FOLDER_SUBFOLDER_LOCK,
    	CAMEL_VEE_FOLDER_CHANGED_LOCK
    } CamelVeeFolderLock;

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