## CamelVeeFolder

CamelVeeFolder

## Synopsis

                        CamelVeeFolder;
    #define             CAMEL_UNMATCHED_NAME
    CamelFolder*        camel_vee_folder_new                (CamelStore *parent_store,
                                                             const char *name,
                                                             guint32 flags);
    void                camel_vee_folder_construct          (CamelVeeFolder *vf,
                                                             CamelStore *parent_store,
                                                             const char *full,
                                                             const char *name,
                                                             guint32 flags);
    CamelFolder*        camel_vee_folder_get_location       (CamelVeeFolder *vf,
                                                             const struct _CamelVeeMessageInfo *vinfo,
                                                             char **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);
    int                 camel_vee_folder_rebuild_folder     (CamelVeeFolder *vf,
                                                             CamelFolder *sub,
                                                             CamelException *ex);
    void                camel_vee_folder_set_expression     (CamelVeeFolder *vf,
                                                             const char *expr);
    void                camel_vee_folder_hash_folder        (CamelFolder *folder,
                                                             char buffer[8]);

## Description

## Details

### CamelVeeFolder

    typedef struct {
    	CamelFolder parent;

    	struct _CamelVeeFolderPrivate *priv;

    	char *expression;	/* query expression */

    	guint32 flags;		/* folder open flags */

    	CamelFolderChangeInfo *changes;
    	CamelFolderSearch *search;

    	/* only set-up if our parent is a vee-store, used also as a flag to
    	 * say that this folder is part of the unmatched folder */
    	struct _CamelVeeStore *parent_vee_store;
    } CamelVeeFolder;

### CAMEL_UNMATCHED_NAME

    #define CAMEL_UNMATCHED_NAME "UNMATCHED"

### camel_vee_folder_new ()

    CamelFolder*        camel_vee_folder_new                (CamelStore *parent_store,
                                                             const char *name,
                                                             guint32 flags);

Create a new CamelVeeFolder object.

`parent_store` : | the parent CamelVeeStore
`name` : |
`flags` : |
Returns : | A new CamelVeeFolder widget.

### camel_vee_folder_construct ()

    void                camel_vee_folder_construct          (CamelVeeFolder *vf,
                                                             CamelStore *parent_store,
                                                             const char *full,
                                                             const char *name,
                                                             guint32 flags);

`vf` : |
`parent_store` : |
`full` : |
`name` : |
`flags` : |

### camel_vee_folder_get_location ()

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

Find the real folder (and uid)

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

### 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.

`vf` : |
`folders` : |

### camel_vee_folder_rebuild_folder ()

    int                 camel_vee_folder_rebuild_folder     (CamelVeeFolder *vf,
                                                             CamelFolder *sub,
                                                             CamelException *ex);

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

`vf` : | Virtual Folder object
`sub` : | source CamelFolder to add to `vf`
`ex` : | Exception.
Returns : |

### camel_vee_folder_set_expression ()

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

`vf` : |
`expr` : |

### camel_vee_folder_hash_folder ()

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

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

`folder` : | @:
`buffer` : |