1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
3 * Copyright (C) 2012 Red Hat, Inc. (www.redhat.com)
5 * Authors: Milan Crha <mcrha@redhat.com>
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of version 2 of the GNU Lesser General Public
9 * License as published by the Free Software Foundation.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this program; if not, write to the
18 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 * Boston, MA 02110-1301, USA.
22 #if !defined (__CAMEL_H_INSIDE__) && !defined (CAMEL_COMPILATION)
23 #error "Only <camel/camel.h> can be included directly."
26 #ifndef CAMEL_VEE_DATA_CACHE_H
27 #define CAMEL_VEE_DATA_CACHE_H
29 #include <camel/camel-folder.h>
31 /* Standard GObject macros */
32 #define CAMEL_TYPE_VEE_SUBFOLDER_DATA \
33 (camel_vee_subfolder_data_get_type ())
34 #define CAMEL_VEE_SUBFOLDER_DATA(obj) \
35 (G_TYPE_CHECK_INSTANCE_CAST \
36 ((obj), CAMEL_TYPE_VEE_SUBFOLDER_DATA, CamelVeeSubfolderData))
37 #define CAMEL_VEE_SUBFOLDER_DATA_CLASS(cls) \
38 (G_TYPE_CHECK_CLASS_CAST \
39 ((cls), CAMEL_TYPE_VEE_SUBFOLDER_DATA, CamelVeeSubfolderDataClass))
40 #define CAMEL_IS_VEE_SUBFOLDER_DATA(obj) \
41 (G_TYPE_CHECK_INSTANCE_TYPE \
42 ((obj), CAMEL_TYPE_VEE_SUBFOLDER_DATA))
43 #define CAMEL_IS_VEE_SUBFOLDER_DATA_CLASS(cls) \
44 (G_TYPE_CHECK_CLASS_TYPE \
45 ((cls), CAMEL_TYPE_VEE_SUBFOLDER_DATA))
46 #define CAMEL_VEE_SUBFOLDER_DATA_GET_CLASS(obj) \
47 (G_TYPE_INSTANCE_GET_CLASS \
48 ((obj), CAMEL_TYPE_VEE_SUBFOLDER_DATA, CamelVeeSubfolderDataClass))
50 #define CAMEL_TYPE_VEE_MESSAGE_INFO_DATA \
51 (camel_vee_message_info_data_get_type ())
52 #define CAMEL_VEE_MESSAGE_INFO_DATA(obj) \
53 (G_TYPE_CHECK_INSTANCE_CAST \
54 ((obj), CAMEL_TYPE_VEE_MESSAGE_INFO_DATA, CamelVeeMessageInfoData))
55 #define CAMEL_VEE_MESSAGE_INFO_DATA_CLASS(cls) \
56 (G_TYPE_CHECK_CLASS_CAST \
57 ((cls), CAMEL_TYPE_VEE_MESSAGE_INFO_DATA, CamelVeeMessageInfoDataClass))
58 #define CAMEL_IS_VEE_MESSAGE_INFO_DATA(obj) \
59 (G_TYPE_CHECK_INSTANCE_TYPE \
60 ((obj), CAMEL_TYPE_VEE_MESSAGE_INFO_DATA))
61 #define CAMEL_IS_VEE_MESSAGE_INFO_DATA_CLASS(cls) \
62 (G_TYPE_CHECK_CLASS_TYPE \
63 ((cls), CAMEL_TYPE_VEE_MESSAGE_INFO_DATA))
64 #define CAMEL_VEE_MESSAGE_INFO_DATA_GET_CLASS(obj) \
65 (G_TYPE_INSTANCE_GET_CLASS \
66 ((obj), CAMEL_TYPE_VEE_MESSAGE_INFO_DATA, CamelVeeMessageInfoDataClass))
68 #define CAMEL_TYPE_VEE_DATA_CACHE \
69 (camel_vee_data_cache_get_type ())
70 #define CAMEL_VEE_DATA_CACHE(obj) \
71 (G_TYPE_CHECK_INSTANCE_CAST \
72 ((obj), CAMEL_TYPE_VEE_DATA_CACHE, CamelVeeDataCache))
73 #define CAMEL_VEE_DATA_CACHE_CLASS(cls) \
74 (G_TYPE_CHECK_CLASS_CAST \
75 ((cls), CAMEL_TYPE_VEE_DATA_CACHE, CamelVeeDataCacheClass))
76 #define CAMEL_IS_VEE_DATA_CACHE(obj) \
77 (G_TYPE_CHECK_INSTANCE_TYPE \
78 ((obj), CAMEL_TYPE_VEE_DATA_CACHE))
79 #define CAMEL_IS_VEE_DATA_CACHE_CLASS(cls) \
80 (G_TYPE_CHECK_CLASS_TYPE \
81 ((cls), CAMEL_TYPE_VEE_DATA_CACHE))
82 #define CAMEL_VEE_DATA_CACHE_GET_CLASS(obj) \
83 (G_TYPE_INSTANCE_GET_CLASS \
84 ((obj), CAMEL_TYPE_VEE_DATA_CACHE, CamelVeeDataCacheClass))
88 typedef struct _CamelVeeSubfolderData CamelVeeSubfolderData;
89 typedef struct _CamelVeeSubfolderDataClass CamelVeeSubfolderDataClass;
90 typedef struct _CamelVeeSubfolderDataPrivate CamelVeeSubfolderDataPrivate;
92 typedef struct _CamelVeeMessageInfoData CamelVeeMessageInfoData;
93 typedef struct _CamelVeeMessageInfoDataClass CamelVeeMessageInfoDataClass;
94 typedef struct _CamelVeeMessageInfoDataPrivate CamelVeeMessageInfoDataPrivate;
96 typedef struct _CamelVeeDataCache CamelVeeDataCache;
97 typedef struct _CamelVeeDataCacheClass CamelVeeDataCacheClass;
98 typedef struct _CamelVeeDataCachePrivate CamelVeeDataCachePrivate;
101 * CamelVeeSubfolderData:
105 struct _CamelVeeSubfolderData {
107 CamelVeeSubfolderDataPrivate *priv;
110 struct _CamelVeeSubfolderDataClass {
111 GObjectClass parent_class;
114 GType camel_vee_subfolder_data_get_type
116 CamelVeeSubfolderData *
117 camel_vee_subfolder_data_new (CamelFolder *folder);
118 CamelFolder * camel_vee_subfolder_data_get_folder
119 (CamelVeeSubfolderData *data);
120 const gchar * camel_vee_subfolder_data_get_folder_id
121 (CamelVeeSubfolderData *data);
123 /* ----------------------------------------------------------------------- */
126 * CamelVeeMessageInfoData:
130 struct _CamelVeeMessageInfoData {
132 CamelVeeMessageInfoDataPrivate *priv;
135 struct _CamelVeeMessageInfoDataClass {
136 GObjectClass parent_class;
139 GType camel_vee_message_info_data_get_type
141 CamelVeeMessageInfoData *
142 camel_vee_message_info_data_new
143 (CamelVeeSubfolderData *subfolder_data,
144 const gchar *orig_message_uid);
145 CamelVeeSubfolderData *
146 camel_vee_message_info_data_get_subfolder_data
147 (CamelVeeMessageInfoData *data);
148 const gchar * camel_vee_message_info_data_get_orig_message_uid
149 (CamelVeeMessageInfoData *data);
150 const gchar * camel_vee_message_info_data_get_vee_message_uid
151 (CamelVeeMessageInfoData *data);
153 /* ----------------------------------------------------------------------- */
160 struct _CamelVeeDataCache {
162 CamelVeeDataCachePrivate *priv;
165 struct _CamelVeeDataCacheClass {
166 GObjectClass parent_class;
169 GType camel_vee_data_cache_get_type (void) G_GNUC_CONST;
171 camel_vee_data_cache_new (void);
172 void camel_vee_data_cache_add_subfolder
173 (CamelVeeDataCache *data_cache,
174 CamelFolder *subfolder);
175 void camel_vee_data_cache_remove_subfolder
176 (CamelVeeDataCache *data_cache,
177 CamelFolder *subfolder);
178 CamelVeeSubfolderData *
179 camel_vee_data_cache_get_subfolder_data
180 (CamelVeeDataCache *data_cache,
181 CamelFolder *folder);
182 gboolean camel_vee_data_cache_contains_message_info_data
183 (CamelVeeDataCache *data_cache,
185 const gchar *orig_message_uid);
186 CamelVeeMessageInfoData *
187 camel_vee_data_cache_get_message_info_data
188 (CamelVeeDataCache *data_cache,
190 const gchar *orig_message_uid);
191 CamelVeeMessageInfoData *
192 camel_vee_data_cache_get_message_info_data_by_vuid
193 (CamelVeeDataCache *data_cache,
194 const gchar *vee_message_uid);
195 void camel_vee_data_cache_foreach_message_info_data
196 (CamelVeeDataCache *data_cache,
197 CamelFolder *fromfolder,
198 void (* func) (CamelVeeMessageInfoData *mi_data,
199 CamelFolder *subfolder,
202 void camel_vee_data_cache_remove_message_info_data
203 (CamelVeeDataCache *data_cache,
204 CamelVeeMessageInfoData *mi_data);
208 #endif /* CAMEL_VEE_DATA_CACHE_H */