Main Page | Alphabetical List | Compound List | File List | Compound Members | File Members

folder.h

Go to the documentation of this file.
00001 /*
00002  * XetPan: a libEtPan! based Mail User Agent
00003  * Copyright (C) 2002 Melvin Hadasht
00004  *
00005  * This program is free software; you can redistribute it and/or modify
00006  * it under the terms of the GNU General Public License as published by
00007  * the Free Software Foundation; either version 2 of the License, or
00008  * (at your option) any later version.
00009  *
00010  * This program is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  * GNU General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU General Public License
00016  * along with this program; if not, write to the Free Software
00017  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00018  */
00019 
00020 #ifndef FOLDER_H
00021 #define FOLDER_H
00022 
00023 #include <clist.h>
00024 #include <chash.h>
00025 
00026 #include "cntree.h"
00027 #include "libetpan.h"
00028 
00029 #include "manager.h"
00030 
00031 #include "folder-types.h"
00032 #include "mailbox-types.h"
00033 
00034 typedef clist XePFoldersList;
00035 
00036 typedef void (*XePFolderListCopyCb)(void *user_data);
00037 
00039 typedef enum 
00040   {
00041     XEP_FOLDER_TYPE_REAL,
00042     XEP_FOLDER_TYPE_VIRTUAL,
00043     XEP_FOLDER_TYPE_MAILBOX
00044   } XePFolderType;
00045 
00055 struct XePFolder_s
00056 {
00057   /* First member must be id, second must be path.
00058    * This is so the XePGtkUtilsTree can use a generic structure
00059    * wich two members are the first and second column of the tree
00060    */
00061   char *id;
00062   char *path;          
00065   XePFolderType type;
00066   long uid;            
00067   XePManagerThread thread;
00068 
00069   XePMailbox *mailbox; 
00070   clist *rule_refs;    
00072   struct mail_storage *ep_storage;     
00073   struct mail_folder  *ep_folder;      
00074   struct mail_envelopes_tree *ep_tree; 
00075   struct mail_envelopes_list *ep_list; 
00077   clist *folder_refs;    
00078   clist *condition_refs; 
00079   uint32_t total;
00080   uint32_t unseen;
00081   uint32_t recent;
00082 };
00083 
00084 clist *
00085 a_Folder_list_new(void);
00086 
00087 clist *
00088 a_Folder_list_new_copy(clist *folders);
00089 
00093 void
00094 a_Folder_list_free(clist *folders);
00095 
00096 void
00097 a_Folder_list_free_copy(clist *folders);
00098 
00109 void
00110 a_Folder_list_copy(clist *source, 
00111                    clist *target,
00112                    XePMailbox *mailbox,
00113                    XePFolderListCopyCb user_cb,
00114                    void *user_data);
00115 
00124 XePFolder *
00125 a_Folder_new(XePFolderType type);
00126 
00136 XePFolder *
00137 a_Folder_new_copy(XePFolder *folder);
00138 
00142 void
00143 a_Folder_free(XePFolder *folder);
00144 
00148 void
00149 a_Folder_free_copy(XePFolder *folder);
00150 
00160 void
00161 a_Folder_copy(XePFolder *source, XePFolder *target);
00162 
00168 XePFolder *
00169 a_Folder_get_from_uid(long uid);
00170 
00171 XePFolderType
00172 a_Folder_get_type(XePFolder *folder);
00173 
00182 void
00183 a_Folder_update_id(XePFolder *folder);
00184 
00188 const char *
00189 a_Folder_get_id(XePFolder *folder);
00190 
00195 void
00196 a_Folder_set_path(XePFolder *folder, const char *path);
00197 
00205 void
00206 a_Folder_set_path_p(XePFolder *folder, char *path);
00207 
00208 const char *
00209 a_Folder_get_path(XePFolder *folder);
00210 
00215 void
00216 a_Folder_set_mailbox(XePFolder *folder, XePMailbox *mailbox);
00217 
00218 XePMailbox *
00219 a_Folder_get_mailbox(XePFolder *folder);
00220 
00229 const char *
00230 a_Folder_get_short_name(XePFolder *folder);
00231 
00232 void
00233 a_Folder_set_folder_refs(XePFolder *folder, clist *folder_refs);
00234 
00235 const clist *
00236 a_Folder_get_folder_refs(XePFolder *folder);
00237 
00238 void
00239 a_Folder_set_condition_refs(XePFolder *folder, clist *condition_refs);
00240 
00241 const clist *
00242 a_Folder_get_condition_refs(XePFolder *folder);
00243 
00244 
00251 XePFolderRef *
00252 a_Folder_ref_new(void);
00253 
00257 XePFolderRef *
00258 a_Folder_ref_new_copy(XePFolderRef *folder_ref);
00259 
00262 void
00263 a_Folder_ref_free(XePFolderRef *folder_ref);
00264 
00266 void
00267 a_Folder_ref_free_content(XePFolderRef *folder_ref);
00268 
00271 clist *
00272 a_Folder_ref_list_new(void);
00273 
00276 void
00277 a_Folder_ref_list_free(clist *folder_refs);
00278 
00280 chash *
00281 a_Folder_ref_hash_new(void);
00282 
00285 void
00286 a_Folder_ref_hash_free(void);
00287 
00290 chash *
00291 a_Folder_ref_hash_get(void);
00292 
00296 int
00297 a_Folder_register(XePFolder *folder);
00298 
00302 int
00303 a_Folder_unregister(XePFolder *folder);
00304 
00309 int
00310 a_Folder_register_list(clist *folders);
00311 
00316 int
00317 a_Folder_unregister_list(clist *folders);
00318 
00322 XePFolder *
00323 a_Folder_get_from_ref(const char *ref);
00324 
00332 void
00333 a_Folder_update_rules_links(XePFoldersList *folders);
00334 
00342 int
00343 a_Folder_ref_link_to_folder(XePFolderRef *folder_ref);
00344 
00349 void
00350 a_Folder_ref_relink_all(void);
00351 
00356 XePManagerThreadState
00357 a_Folder_get_thread_state(XePFolder *folder);
00358 
00359 int
00360 a_Folder_is_locked(XePFolder *folder);
00361 
00362 int
00363 a_Folder_connect(XePFolder *folder);
00364 
00365 int
00366 a_Folder_disconnect(XePFolder *folder);
00367 
00368 int
00369 a_Folder_noop(XePFolder *folder);
00370 
00371 int
00372 a_Folder_expunge(XePFolder *folder);
00373 
00379 int
00380 a_Folder_sync(XePFolder *folder);
00381 
00384 int
00385 a_Folder_check(XePFolder *folder);
00386 
00393 int
00394 a_Folder_append(XePFolder *folder, const char *data, size_t size);
00395 
00396 int
00397 a_Folder_mailbox_connect(XePFolder *folder);
00398 
00399 int
00400 a_Folder_mailbox_disconnect(XePFolder *folder);
00401 
00402 int
00403 a_Folder_mailbox_list(XePFolder *folder, struct mail_list **mb_list);
00404 
00405 int
00406 a_Folder_mailbox_lsub(XePFolder *folder, struct mail_list **mb_list);
00407 
00408 
00417 void
00418 a_Folder_append_file_async(XePFolder *folder, const char *filename,
00419                            XePManagerMsgCb user_cb, void *user_data);
00420 
00421 void
00422 a_Folder_disconnect_async(XePFolder *folder,
00423                           XePManagerMsgCb user_cb, void *user_data);
00424 
00429 uint32_t
00430 a_Folder_tree_get_total_count(XePFolder *folder);
00431 
00432 void
00433 a_Folder_messages_change_flags_async(XePFolder *folder, 
00434                                      carray *messages,
00435                                      XePManagerMsgCb user_cb,
00436                                      void *user_data);
00437 #endif

Generated on Wed Oct 22 15:50:21 2003 for XetPan by doxygen 1.3.2