CamelVeeFolder
3
CAMEL Library

# CamelVeeFolder

## Synopsis

                        CamelVeeFolder;
    #define             CAMEL_UNMATCHED_NAME
    CamelFolder *       camel_vee_folder_new                (CamelStore *parent_store,
                                                             const char *full,
                                                             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]);
    void                camel_vee_folder_sync_headers       (CamelVeeFolder *vf,
                                                             CamelException *ex);

## 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;
    	GHashTable *hashes;
    	GHashTable *loaded;
    } CamelVeeFolder;

### CAMEL_UNMATCHED_NAME

    #define CAMEL_UNMATCHED_NAME "UNMATCHED"

### camel_vee_folder_new ()

    CamelFolder *       camel_vee_folder_new                (CamelStore *parent_store,
                                                             const char *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,
                                                             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` :

### camel_vee_folder_sync_headers ()

    void                camel_vee_folder_sync_headers       (CamelVeeFolder *vf,
                                                             CamelException *ex);

`vf` :

`ex` :