talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

addrcache.h (5088B)


      1 /*
      2  * Claws Mail -- a GTK based, lightweight, and fast e-mail client
      3  * Copyright (C) 2001-2012 Match Grun and the Claws Mail team
      4  *
      5  * This program is free software; you can redistribute it and/or modify
      6  * it under the terms of the GNU General Public License as published by
      7  * the Free Software Foundation; either version 3 of the License, or
      8  * (at your option) any later version.
      9  *
     10  * This program is distributed in the hope that it will be useful,
     11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13  * GNU General Public License for more details.
     14  *
     15  * You should have received a copy of the GNU General Public License
     16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
     17  * 
     18  */
     19 
     20 /*
     21  * Definitions for address cache.
     22  */
     23 
     24 #ifndef __ADDRCACHE_H__
     25 #define __ADDRCACHE_H__
     26 
     27 #include <time.h>
     28 #include <stdio.h>
     29 #include <glib.h>
     30 #include "addritem.h"
     31 
     32 /* Address cache */
     33 typedef struct _AddressCache AddressCache;
     34 
     35 struct _AddressCache {
     36 	gint       nextID;
     37 	gboolean   dataRead;
     38 	gboolean   modified;
     39 	time_t     modifyTime;
     40 	GHashTable *itemHash;
     41 	GList      *tempList;
     42 	ItemFolder *rootFolder;
     43 	gchar      *cacheID;
     44 	gboolean   dirtyFlag;
     45 	gboolean   accessFlag;
     46 	gchar      *name;
     47 };
     48 
     49 /* Function prototypes */
     50 AddressCache *addrcache_create		( void );
     51 ItemFolder *addrcache_get_root_folder	( AddressCache *cache );
     52 GList *addrcache_get_list_folder	( AddressCache *cache );
     53 GList *addrcache_get_list_person	( AddressCache *cache );
     54 gboolean addrcache_get_dirty		( AddressCache *cache );
     55 void addrcache_set_dirty		( AddressCache *cache,
     56 					  const gboolean value );
     57 gchar *addrcache_get_name		( AddressCache *cache );
     58 void addrcache_set_name			( AddressCache *cache,
     59 					  const gchar *value );
     60 
     61 void addrcache_refresh			( AddressCache *cache );
     62 void addrcache_clear			( AddressCache *cache );
     63 void addrcache_free			( AddressCache *cache );
     64 gboolean addrcache_check_file		( AddressCache *cache, gchar *path );
     65 gboolean addrcache_mark_file		( AddressCache *cache, gchar *path );
     66 
     67 void addrcache_print			( AddressCache *cache, FILE *stream );
     68 
     69 void addrcache_id_person		( AddressCache *cache, ItemPerson *person );
     70 void addrcache_id_group			( AddressCache *cache, ItemGroup *group );
     71 void addrcache_id_folder		( AddressCache *cache, ItemFolder *folder );
     72 void addrcache_id_email			( AddressCache *cache, ItemEMail *email );
     73 void addrcache_id_attribute		( AddressCache *cache, UserAttribute *attrib );
     74 
     75 gboolean addrcache_hash_add_person	( AddressCache *cache, ItemPerson *person );
     76 gboolean addrcache_hash_add_group	( AddressCache *cache, ItemGroup *group );
     77 gboolean addrcache_hash_add_folder	( AddressCache *cache, ItemFolder *folder );
     78 
     79 gboolean addrcache_folder_add_person	( AddressCache *cache,
     80 					  ItemFolder *folder,
     81 					  ItemPerson *item );
     82 gboolean addrcache_folder_add_folder	( AddressCache *cache,
     83 					  ItemFolder *folder,
     84 					  ItemFolder *item );
     85 gboolean addrcache_folder_add_group	( AddressCache *cache,
     86 					  ItemFolder *folder,
     87 					  ItemGroup *item );
     88 
     89 gboolean addrcache_add_person		( AddressCache *cache,
     90 					  ItemPerson *person );
     91 gboolean addrcache_add_group		( AddressCache *cache,
     92 					  ItemGroup *group );
     93 gboolean addrcache_person_add_email	( AddressCache *cache,
     94 					  ItemPerson *person,
     95 					  ItemEMail *email );
     96 gboolean addrcache_group_add_email	( AddressCache *cache,
     97 					  ItemGroup *group,
     98 					  ItemEMail *email );
     99 gboolean addrcache_add_folder		( AddressCache *cache,
    100 					  ItemFolder *folder );
    101 
    102 void addrcache_folder_move_person	( AddressCache *cache,
    103 					  ItemPerson *person,
    104 					  ItemFolder *target );
    105 void addrcache_folder_move_group	( AddressCache *cache,
    106 					  ItemGroup *group,
    107 					  ItemFolder *target );
    108 void addrcache_folder_move_folder	( AddressCache *cache,
    109 					  ItemFolder *folder,
    110 					  ItemFolder *target );
    111 
    112 AddrItemObject *addrcache_get_object	( AddressCache *cache, const gchar *uid );
    113 ItemEMail *addrcache_get_email		( AddressCache *cache, const gchar *eid );
    114 
    115 
    116 ItemGroup *addrcache_remove_group	( AddressCache *cache, ItemGroup *group );
    117 ItemPerson *addrcache_remove_person	( AddressCache *cache, ItemPerson *person );
    118 ItemEMail *addrcache_remove_email	( AddressCache *cache, ItemEMail *email );
    119 
    120 ItemEMail *addrcache_person_remove_email( AddressCache *cache,
    121 					  ItemPerson *person,
    122 					  ItemEMail *email );
    123 
    124 GList *addrcache_get_group_for_person	( AddressCache *cache, ItemPerson *person );
    125 
    126 GList *addrcache_get_all_persons	( AddressCache *cache );
    127 GList *addrcache_get_all_groups		( AddressCache *cache );
    128 
    129 ItemFolder *addrcache_remove_folder		( AddressCache *cache,
    130 						  ItemFolder *folder );
    131 ItemFolder *addrcache_remove_folder_delete	( AddressCache *cache,
    132 						  ItemFolder *folder );
    133 
    134 ItemPerson *addrcache_add_contact	( AddressCache *cache,
    135 					  ItemFolder *folder,
    136 					  const gchar *name,
    137 					  const gchar *address,
    138 					  const gchar *remarks ); 
    139 
    140 ItemFolder *addrcache_add_new_folder	( AddressCache *cache,
    141 					  ItemFolder *parent );
    142 
    143 #endif /* __ADDRCACHE_H__ */