1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ 2 /* 3 * Copyright (C) 2012 Red Hat, Inc. (www.redhat.com) 4 * 5 * This library is free software: you can redistribute it and/or modify it 6 * under the terms of the GNU Lesser General Public License as published by 7 * the Free Software Foundation. 8 * 9 * This library is distributed in the hope that it will be useful, but 10 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 11 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License 12 * for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public License 15 * along with this library. If not, see <http://www.gnu.org/licenses/>. 16 * 17 * Authors: Milan Crha <mcrha@redhat.com> 18 */ 19 20 #if !defined (__CAMEL_H_INSIDE__) && !defined (CAMEL_COMPILATION) 21 #error "Only <camel/camel.h> can be included directly." 22 #endif 23 24 #ifndef CAMEL_VEE_DATA_CACHE_H 25 #define CAMEL_VEE_DATA_CACHE_H 26 27 #include <camel/camel-folder.h> 28 29 /* Standard GObject macros */ 30 #define CAMEL_TYPE_VEE_SUBFOLDER_DATA \ 31 (camel_vee_subfolder_data_get_type ()) 32 #define CAMEL_VEE_SUBFOLDER_DATA(obj) \ 33 (G_TYPE_CHECK_INSTANCE_CAST \ 34 ((obj), CAMEL_TYPE_VEE_SUBFOLDER_DATA, CamelVeeSubfolderData)) 35 #define CAMEL_VEE_SUBFOLDER_DATA_CLASS(cls) \ 36 (G_TYPE_CHECK_CLASS_CAST \ 37 ((cls), CAMEL_TYPE_VEE_SUBFOLDER_DATA, CamelVeeSubfolderDataClass)) 38 #define CAMEL_IS_VEE_SUBFOLDER_DATA(obj) \ 39 (G_TYPE_CHECK_INSTANCE_TYPE \ 40 ((obj), CAMEL_TYPE_VEE_SUBFOLDER_DATA)) 41 #define CAMEL_IS_VEE_SUBFOLDER_DATA_CLASS(cls) \ 42 (G_TYPE_CHECK_CLASS_TYPE \ 43 ((cls), CAMEL_TYPE_VEE_SUBFOLDER_DATA)) 44 #define CAMEL_VEE_SUBFOLDER_DATA_GET_CLASS(obj) \ 45 (G_TYPE_INSTANCE_GET_CLASS \ 46 ((obj), CAMEL_TYPE_VEE_SUBFOLDER_DATA, CamelVeeSubfolderDataClass)) 47 48 #define CAMEL_TYPE_VEE_MESSAGE_INFO_DATA \ 49 (camel_vee_message_info_data_get_type ()) 50 #define CAMEL_VEE_MESSAGE_INFO_DATA(obj) \ 51 (G_TYPE_CHECK_INSTANCE_CAST \ 52 ((obj), CAMEL_TYPE_VEE_MESSAGE_INFO_DATA, CamelVeeMessageInfoData)) 53 #define CAMEL_VEE_MESSAGE_INFO_DATA_CLASS(cls) \ 54 (G_TYPE_CHECK_CLASS_CAST \ 55 ((cls), CAMEL_TYPE_VEE_MESSAGE_INFO_DATA, CamelVeeMessageInfoDataClass)) 56 #define CAMEL_IS_VEE_MESSAGE_INFO_DATA(obj) \ 57 (G_TYPE_CHECK_INSTANCE_TYPE \ 58 ((obj), CAMEL_TYPE_VEE_MESSAGE_INFO_DATA)) 59 #define CAMEL_IS_VEE_MESSAGE_INFO_DATA_CLASS(cls) \ 60 (G_TYPE_CHECK_CLASS_TYPE \ 61 ((cls), CAMEL_TYPE_VEE_MESSAGE_INFO_DATA)) 62 #define CAMEL_VEE_MESSAGE_INFO_DATA_GET_CLASS(obj) \ 63 (G_TYPE_INSTANCE_GET_CLASS \ 64 ((obj), CAMEL_TYPE_VEE_MESSAGE_INFO_DATA, CamelVeeMessageInfoDataClass)) 65 66 #define CAMEL_TYPE_VEE_DATA_CACHE \ 67 (camel_vee_data_cache_get_type ()) 68 #define CAMEL_VEE_DATA_CACHE(obj) \ 69 (G_TYPE_CHECK_INSTANCE_CAST \ 70 ((obj), CAMEL_TYPE_VEE_DATA_CACHE, CamelVeeDataCache)) 71 #define CAMEL_VEE_DATA_CACHE_CLASS(cls) \ 72 (G_TYPE_CHECK_CLASS_CAST \ 73 ((cls), CAMEL_TYPE_VEE_DATA_CACHE, CamelVeeDataCacheClass)) 74 #define CAMEL_IS_VEE_DATA_CACHE(obj) \ 75 (G_TYPE_CHECK_INSTANCE_TYPE \ 76 ((obj), CAMEL_TYPE_VEE_DATA_CACHE)) 77 #define CAMEL_IS_VEE_DATA_CACHE_CLASS(cls) \ 78 (G_TYPE_CHECK_CLASS_TYPE \ 79 ((cls), CAMEL_TYPE_VEE_DATA_CACHE)) 80 #define CAMEL_VEE_DATA_CACHE_GET_CLASS(obj) \ 81 (G_TYPE_INSTANCE_GET_CLASS \ 82 ((obj), CAMEL_TYPE_VEE_DATA_CACHE, CamelVeeDataCacheClass)) 83 84 G_BEGIN_DECLS 85 86 typedef struct _CamelVeeSubfolderData CamelVeeSubfolderData; 87 typedef struct _CamelVeeSubfolderDataClass CamelVeeSubfolderDataClass; 88 typedef struct _CamelVeeSubfolderDataPrivate CamelVeeSubfolderDataPrivate; 89 90 typedef struct _CamelVeeMessageInfoData CamelVeeMessageInfoData; 91 typedef struct _CamelVeeMessageInfoDataClass CamelVeeMessageInfoDataClass; 92 typedef struct _CamelVeeMessageInfoDataPrivate CamelVeeMessageInfoDataPrivate; 93 94 typedef struct _CamelVeeDataCache CamelVeeDataCache; 95 typedef struct _CamelVeeDataCacheClass CamelVeeDataCacheClass; 96 typedef struct _CamelVeeDataCachePrivate CamelVeeDataCachePrivate; 97 98 /** 99 * CamelForeachInfoData: 100 * @mi_data: a #CamelVeeMessageInfoData 101 * @subfolder: a #CamelFolder which @mi_data references 102 * @user_data: custom user data 103 * 104 * A callback prototype for camel_vee_data_cache_foreach_message_info_data() 105 **/ 106 typedef void (*CamelForeachInfoData) (CamelVeeMessageInfoData *mi_data, CamelFolder *subfolder, gpointer user_data); 107 108 /** 109 * CamelVeeSubfolderData: 110 * 111 * Contains only private data that should be read and manipulated using the 112 * functions below. 113 * 114 * Since: 3.6 115 **/ 116 struct _CamelVeeSubfolderData { 117 /*< private >*/ 118 GObject parent; 119 CamelVeeSubfolderDataPrivate *priv; 120 }; 121 122 struct _CamelVeeSubfolderDataClass { 123 GObjectClass parent_class; 124 125 /* Padding for future expansion */ 126 gpointer reserved[20]; 127 }; 128 129 GType camel_vee_subfolder_data_get_type 130 (void) G_GNUC_CONST; 131 CamelVeeSubfolderData * 132 camel_vee_subfolder_data_new (CamelFolder *folder); 133 CamelFolder * camel_vee_subfolder_data_get_folder 134 (CamelVeeSubfolderData *data); 135 const gchar * camel_vee_subfolder_data_get_folder_id 136 (CamelVeeSubfolderData *data); 137 138 /* ----------------------------------------------------------------------- */ 139 140 /** 141 * CamelVeeMessageInfoData: 142 * 143 * Contains only private data that should be read and manipulated using the 144 * functions below. 145 * 146 * Since: 3.6 147 **/ 148 struct _CamelVeeMessageInfoData { 149 /*< private >*/ 150 GObject parent; 151 CamelVeeMessageInfoDataPrivate *priv; 152 }; 153 154 struct _CamelVeeMessageInfoDataClass { 155 GObjectClass parent_class; 156 157 /* Padding for future expansion */ 158 gpointer reserved[20]; 159 }; 160 161 GType camel_vee_message_info_data_get_type 162 (void) G_GNUC_CONST; 163 CamelVeeMessageInfoData * 164 camel_vee_message_info_data_new 165 (CamelVeeSubfolderData *subfolder_data, 166 const gchar *orig_message_uid); 167 CamelVeeSubfolderData * 168 camel_vee_message_info_data_get_subfolder_data 169 (CamelVeeMessageInfoData *data); 170 const gchar * camel_vee_message_info_data_get_orig_message_uid 171 (CamelVeeMessageInfoData *data); 172 const gchar * camel_vee_message_info_data_get_vee_message_uid 173 (CamelVeeMessageInfoData *data); 174 175 /* ----------------------------------------------------------------------- */ 176 177 /** 178 * CamelVeeDataCache: 179 * 180 * Contains only private data that should be read and manipulated using the 181 * functions below. 182 * 183 * Since: 3.6 184 **/ 185 struct _CamelVeeDataCache { 186 /*< private >*/ 187 GObject parent; 188 CamelVeeDataCachePrivate *priv; 189 }; 190 191 struct _CamelVeeDataCacheClass { 192 GObjectClass parent_class; 193 194 /* Padding for future expansion */ 195 gpointer reserved[20]; 196 }; 197 198 GType camel_vee_data_cache_get_type (void) G_GNUC_CONST; 199 CamelVeeDataCache * 200 camel_vee_data_cache_new (void); 201 void camel_vee_data_cache_add_subfolder 202 (CamelVeeDataCache *data_cache, 203 CamelFolder *subfolder); 204 void camel_vee_data_cache_remove_subfolder 205 (CamelVeeDataCache *data_cache, 206 CamelFolder *subfolder); 207 CamelVeeSubfolderData * 208 camel_vee_data_cache_get_subfolder_data 209 (CamelVeeDataCache *data_cache, 210 CamelFolder *folder); 211 gboolean camel_vee_data_cache_contains_message_info_data 212 (CamelVeeDataCache *data_cache, 213 CamelFolder *folder, 214 const gchar *orig_message_uid); 215 CamelVeeMessageInfoData * 216 camel_vee_data_cache_get_message_info_data 217 (CamelVeeDataCache *data_cache, 218 CamelFolder *folder, 219 const gchar *orig_message_uid); 220 CamelVeeMessageInfoData * 221 camel_vee_data_cache_get_message_info_data_by_vuid 222 (CamelVeeDataCache *data_cache, 223 const gchar *vee_message_uid); 224 void camel_vee_data_cache_foreach_message_info_data 225 (CamelVeeDataCache *data_cache, 226 CamelFolder *fromfolder, 227 CamelForeachInfoData func, 228 gpointer user_data); 229 void camel_vee_data_cache_remove_message_info_data 230 (CamelVeeDataCache *data_cache, 231 CamelVeeMessageInfoData *mi_data); 232 233 G_END_DECLS 234 235 #endif /* CAMEL_VEE_DATA_CACHE_H */ 236