## CamelStoreSummary CamelStoreSummary |

## Functions

#define | CAMEL_STORE_INFO_FOLDER_UNKNOWN
CamelStoreSummary * | camel_store_summary_new ()
void | camel_store_summary_set_filename ()
gint | camel_store_summary_load ()
gint | camel_store_summary_save ()
void | camel_store_summary_touch ()
void | camel_store_summary_add ()
CamelStoreInfo * | camel_store_summary_add_from_path ()
CamelStoreInfo * | camel_store_summary_info_new ()
CamelStoreInfo * | camel_store_summary_info_ref ()
void | camel_store_summary_info_unref ()
void | camel_store_summary_remove ()
void | camel_store_summary_remove_path ()
gint | camel_store_summary_count ()
CamelStoreInfo * | camel_store_summary_path ()
GPtrArray * | camel_store_summary_array ()
void | camel_store_summary_array_free ()
void | camel_store_info_set_string ()
const gchar * | camel_store_info_path ()
const gchar * | camel_store_info_name ()
gboolean | camel_store_summary_connect_folder_summary ()
gboolean | camel_store_summary_disconnect_folder_summary ()

## Types and Values

struct | CamelStoreInfo
enum | CamelStoreInfoFlags
struct | CamelStoreSummary

## Object Hierarchy

        GObject
        ╰── CamelStoreSummary
            ├── CamelIMAPXStoreSummary
            ╰── CamelNNTPStoreSummary

## Description

## Functions

### CAMEL_STORE_INFO_FOLDER_UNKNOWN

    #define CAMEL_STORE_INFO_FOLDER_UNKNOWN (~0)

### camel_store_summary_new ()

    CamelStoreSummary *
    camel_store_summary_new (void);

Create a new CamelStoreSummary object.

#### Returns

a new CamelStoreSummary object

### camel_store_summary_set_filename ()

    void
    camel_store_summary_set_filename (CamelStoreSummary *summary,
                                      const gchar *filename);

Set the filename where the summary will be loaded to/saved from.

#### Parameters

summary | a CamelStoreSummary |
filename | a filename |

### camel_store_summary_load ()

    gint
    camel_store_summary_load (CamelStoreSummary *summary);

Load the summary off disk.

#### Parameters

summary | a CamelStoreSummary object |

#### Returns

`0` on success or `-1` on fail

### camel_store_summary_save ()

    gint
    camel_store_summary_save (CamelStoreSummary *summary);

Writes the summary to disk. The summary is only written if changes have occurred.

#### Parameters

summary | a CamelStoreSummary object |

#### Returns

`0` on succes or `-1` on fail

### camel_store_summary_touch ()

    void
    camel_store_summary_touch (CamelStoreSummary *summary);

Mark the summary as changed, so that a save will force it to be written back to disk.

#### Parameters

summary | a CamelStoreSummary object |

### camel_store_summary_add ()

    void
    camel_store_summary_add (CamelStoreSummary *summary,
                             CamelStoreInfo *info);

Adds a new `info` record to the summary. If `info->uid` is `NULL`, then a new uid is automatically re-assigned by calling `camel_store_summary_next_uid_string()`.

The `info` record should have been generated by calling one of the info_new_*() functions, as it will be free'd based on the summary class. And MUST NOT be allocated directly using malloc.

#### Parameters

summary | a CamelStoreSummary object |
info | a CamelStoreInfo |

### camel_store_summary_add_from_path ()

    CamelStoreInfo *
    camel_store_summary_add_from_path (CamelStoreSummary *summary,
                                       const gchar *path);

Build a new info record based on the name, and add it to the summary.

#### Parameters

summary | a CamelStoreSummary object |
path | item path |

#### Returns

the newly added record

### camel_store_summary_info_new ()

    CamelStoreInfo *
    camel_store_summary_info_new (CamelStoreSummary *summary);

Allocate a new CamelStoreInfo, suitable for adding to this summary.

#### Parameters

summary | a CamelStoreSummary object |

#### Returns

the newly allocated CamelStoreInfo

### camel_store_summary_info_ref ()

    CamelStoreInfo *
    camel_store_summary_info_ref (CamelStoreSummary *summary,
                                  CamelStoreInfo *info);

Add an extra reference to `info` .

#### Parameters

summary | a CamelStoreSummary object |
info | a CamelStoreInfo |

#### Returns

the `info` argument

### camel_store_summary_info_unref ()

    void
    camel_store_summary_info_unref (CamelStoreSummary *summary,
                                    CamelStoreInfo *info);

Unref and potentially free `info` , and all associated memory.

#### Parameters

summary | a CamelStoreSummary object |
info | a CamelStoreInfo |

### camel_store_summary_remove ()

    void
    camel_store_summary_remove (CamelStoreSummary *summary,
                                CamelStoreInfo *info);

Remove a specific `info` record from the summary.

#### Parameters

summary | a CamelStoreSummary object |
info | a CamelStoreInfo |

### camel_store_summary_remove_path ()

    void
    camel_store_summary_remove_path (CamelStoreSummary *summary,
                                     const gchar *path);

Remove a specific info record from the summary, by `path` .

#### Parameters

summary | a CamelStoreSummary object |
path | item path |

### camel_store_summary_count ()

    gint
    camel_store_summary_count (CamelStoreSummary *summary);

Get the number of summary items stored in this summary.

#### Parameters

summary | a CamelStoreSummary object |

#### Returns

the number of items gint he summary.

### camel_store_summary_path ()

    CamelStoreInfo *
    camel_store_summary_path (CamelStoreSummary *summary,
                              const gchar *path);

Retrieve a summary item by path name.

The returned CamelStoreInfo is referenced for thread-safety and should be unreferenced with `camel_store_summary_info_unref()` when finished with it.

#### Parameters

summary | a CamelStoreSummary object |
path | path to the item |

#### Returns

the summary item, or `NULL` if the `path` name is not available

### camel_store_summary_array ()

    GPtrArray *
    camel_store_summary_array (CamelStoreSummary *summary);

Obtain a copy of the summary array. This is done atomically, so cannot contain empty entries.

It must be freed using `camel_store_summary_array_free()`.

#### Parameters

summary | a CamelStoreSummary object |

#### Returns

the summary array

### camel_store_summary_array_free ()

    void
    camel_store_summary_array_free (CamelStoreSummary *summary,
                                    GPtrArray *array);

Free the folder summary array.

#### Parameters

summary | a CamelStoreSummary object |
array | the summary array as gotten from `camel_store_summary_array()` |

### camel_store_info_set_string ()

    void
    camel_store_info_set_string (CamelStoreSummary *summary,
                                 CamelStoreInfo *info,
                                 gint type,
                                 const gchar *value);

Set a specific string on the `info` .

#### Parameters

summary | a CamelStoreSummary object |
info | a CamelStoreInfo |
type | specific string being set |
value | string value to set |

### camel_store_info_path ()

    const gchar *
    camel_store_info_path (CamelStoreSummary *summary,
                           CamelStoreInfo *info);

Returns the path string from `info` .

#### Parameters

summary | a CamelStoreSummary |
info | a CamelStoreInfo |

#### Returns

the path string from `info`

### camel_store_info_name ()

    const gchar *
    camel_store_info_name (CamelStoreSummary *summary,
                           CamelStoreInfo *info);

Returns the last segment of the path string from `info` .

#### Parameters

summary | a CamelStoreSummary |
info | a CamelStoreInfo |

#### Returns

the last segment of the path string from `info`

### camel_store_summary_connect_folder_summary ()

    gboolean
    camel_store_summary_connect_folder_summary
                                   (CamelStoreSummary *summary,
                                    const gchar *path,
                                    struct _CamelFolderSummary *folder_summary);

Connects listeners for count changes on `folder_summary` to keep CamelStoreInfo.total and CamelStoreInfo.unread in sync transparently. The `folder_summary` is stored in `summary` as `path` . Use `camel_store_summary_disconnect_folder_summary()` to disconnect from listening.

#### Parameters

summary | a CamelStoreSummary object |
path | used path for `folder_summary` |
folder_summary | a CamelFolderSummary object |

#### Returns

Whether successfully connect callbacks for count change notifications.

Since 3.4

### camel_store_summary_disconnect_folder_summary ()

    gboolean
    camel_store_summary_disconnect_folder_summary
                                   (CamelStoreSummary *summary,
                                    struct _CamelFolderSummary *folder_summary);

Diconnects count change listeners previously connected by `camel_store_summary_connect_folder_summary()`.

#### Parameters

summary | a CamelStoreSummary object |
folder_summary | a CamelFolderSummary object |

#### Returns

Whether such connection existed and whether was successfully removed.

Since 3.4

## Types and Values

### struct CamelStoreInfo

    struct CamelStoreInfo {
    	volatile gint refcount;
    	gchar *path;
    	guint32 flags;
    	guint32 unread;
    	guint32 total;
    };

### enum CamelStoreInfoFlags

#### Members

CAMEL_STORE_INFO_FOLDER_NOSELECT |  |
CAMEL_STORE_INFO_FOLDER_NOINFERIORS |  |
CAMEL_STORE_INFO_FOLDER_CHILDREN |  |
CAMEL_STORE_INFO_FOLDER_NOCHILDREN |  |
CAMEL_STORE_INFO_FOLDER_SUBSCRIBED |  |
CAMEL_STORE_INFO_FOLDER_VIRTUAL |  |
CAMEL_STORE_INFO_FOLDER_SYSTEM |  |
CAMEL_STORE_INFO_FOLDER_VTRASH |  |
CAMEL_STORE_INFO_FOLDER_SHARED_TO_ME |  |
CAMEL_STORE_INFO_FOLDER_SHARED_BY_ME |  |
CAMEL_STORE_INFO_FOLDER_READONLY |  |
CAMEL_STORE_INFO_FOLDER_FLAGGED |  |
CAMEL_STORE_INFO_FOLDER_LAST |  |

### struct CamelStoreSummary

    struct CamelStoreSummary;