1 /* 2 * RAL -- Rubrica Addressbook Library 3 * file: card.h 4 * 5 * Copyright (C) Nicola Fragale <nicolafragale@libero.it> 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 3 of the License 10 * 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 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program; if not, write to the Free Software 18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 19 */ 20 21 #ifndef _R_CARD_H 22 #define _R_CARD_H 23 24 #include <time.h> 25 #include <glib.h> 26 #include <glib-object.h> 27 #include <libxml/tree.h> 28 29 #include "types.h" 30 #include "group_box.h" 31 #include "group.h" 32 #include "address.h" 33 #include "net.h" 34 #include "telephone.h" 35 #include "ref.h" 36 37 38 39 #define R_CARD_TYPE (r_card_get_type()) 40 41 #define R_CARD(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \ 42 R_CARD_TYPE, RCard)) 43 44 #define R_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), \ 45 R_CARD_TYPE, RCardClass)) 46 47 #define IS_R_CARD(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), \ 48 R_CARD_TYPE)) 49 50 #define IS_R_CARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), \ 51 R_CARD_TYPE)) 52 53 #define R_CARD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), \ 54 R_CARD_TYPE, RCardClass)) 55 56 57 typedef enum { 58 R_RATE_NONE = 0, /* no importance */ 59 R_RATE_FEW, /* few importance */ 60 R_RATE_NORMAL, /* normal */ 61 R_RATE_HIGH, /* high importance */ 62 R_RATE_VERY_HIGH /* very high importance */ 63 } RRate; 64 65 66 enum { 67 UNKNOW_CARD, 68 PERSONAL_CARD, 69 COMPANY_CARD 70 }; 71 72 73 typedef struct _RCard RCard; 74 typedef struct _RCardClass RCardClass; 75 typedef struct _RCardPrivate RCardPrivate; 76 77 78 struct _RCard 79 { 80 GObject parent; 81 82 RCardPrivate* priv; 83 }; 84 85 86 struct _RCardClass 87 { 88 GObjectClass parent; 89 90 /* methods */ 91 void (*free) (RCard* card); 92 93 gpointer (*copy) (RCard* card); 94 RInfos* (*get_infos) (RCard* card); 95 gboolean (*search) (RCard* card, const gchar* str); 96 97 void (*print_card) (RCard* card); 98 99 /* signals */ 100 }; 101 102 103 104 GType r_card_get_type (void); 105 106 RCard* r_card_new (void); 107 void r_card_free (RCard* card); 108 RCard* r_card_copy (RCard* card); 109 void r_card_reassign_id (RCard* card, glong id); 110 111 gboolean r_card_is_personal (RCard* card); 112 gboolean r_card_is_deleted (RCard* card); 113 gboolean r_card_search (RCard* card, const gchar* str); 114 gboolean r_card_check (RCard* card, const gchar* property, 115 gchar** value); 116 /* card infos 117 */ 118 RInfos* r_card_get_infos (RCard* card); 119 void r_card_free_infos (RInfos *infos); 120 121 122 /* group 123 */ 124 void r_card_add_group (RCard* card, RGroup* group); 125 gboolean r_card_delete_group (RCard* card, gchar* name); 126 gboolean r_card_rename_group (RCard* card, gchar* oldname, 127 gchar* newname); 128 gboolean r_card_change_pixmap (RCard* card, gchar* grpname, 129 gchar* new_uri); 130 gboolean r_card_has_groups (RCard* card); 131 132 gpointer r_card_find_group (RCard* card, gchar* name); 133 gboolean r_card_belong_to_group (RCard* card, const gchar* group_name); 134 GList* r_card_get_groups_owned_by (RCard* card, const gchar* owner); 135 136 RGroup* r_card_get_group (RCard* card); 137 RGroup* r_card_get_next_group (RCard* card); 138 RGroup* r_card_get_prev_group (RCard* card); 139 void r_card_reset_group (RCard* card); 140 void r_card_foreach_group (RCard* card, RFunc func, 141 gpointer user_data); 142 143 /* address 144 */ 145 void r_card_add_address (RCard* card, RAddress* address); 146 gboolean r_card_delete_address (RCard* card, RAddress* address); 147 gboolean r_card_replace_address (RCard* card, RAddress* old, 148 RAddress* new); 149 gpointer r_card_get_address (RCard* card); 150 gpointer r_card_get_next_address (RCard* card); 151 gpointer r_card_get_prev_address (RCard* card); 152 void r_card_reset_address (RCard* card); 153 gpointer r_card_find_address (RCard* card, RAddressType type); 154 void r_card_foreach_address (RCard* card, RFunc func, 155 gpointer user_data); 156 157 /* net address 158 */ 159 void r_card_add_net_address (RCard* card, RNetAddress* net); 160 gboolean r_card_delete_net_address (RCard* card, RNetAddress* address); 161 gboolean r_card_replace_net_address (RCard* card, RNetAddress* old, 162 RNetAddress* new); 163 gpointer r_card_get_net_address (RCard* card); 164 gpointer r_card_get_next_net_address (RCard* card); 165 gpointer r_card_get_prev_net_address (RCard* card); 166 void r_card_reset_net_address (RCard* card); 167 gpointer r_card_find_net_address (RCard* card, RNetAddressType type); 168 void r_card_foreach_net_address (RCard* card, RFunc func, 169 gpointer user_data); 170 171 172 /* telephone 173 */ 174 void r_card_add_telephone (RCard* card, RTelephone* tel); 175 gboolean r_card_delete_telephone (RCard* card, RTelephone* phone); 176 gboolean r_card_replace_telephone (RCard* card, RTelephone* old, 177 RTelephone* new); 178 gpointer r_card_get_telephone (RCard* card); 179 gpointer r_card_get_next_telephone (RCard* card); 180 gpointer r_card_get_prev_telephone (RCard* card); 181 void r_card_reset_telephone (RCard* card); 182 gpointer r_card_find_telephone (RCard* card, RTelephoneType type); 183 void r_card_foreach_telephone (RCard* card, RFunc func, 184 gpointer user_data); 185 186 187 /* references 188 */ 189 void r_card_add_ref (RCard* card, RRef* ref); 190 gboolean r_card_del_ref (RCard* card, RRef* ref); 191 gpointer r_card_get_ref (RCard* card); 192 gpointer r_card_get_next_ref (RCard* card); 193 gpointer r_card_get_prev_ref (RCard* card); 194 void r_card_reset_ref (RCard* card); 195 void r_card_foreach_ref (RCard* card, RFunc func, 196 gpointer user_data); 197 gboolean r_card_has_refs (RCard* card); 198 199 200 /* utils 201 */ 202 gchar* r_card_get_group_owner (RCard* card, RGroup* group); 203 gchar* r_card_get_home_page (RCard* card); 204 gchar* r_card_get_email (RCard* card); 205 gchar* r_card_get_irc (RCard* card); 206 207 208 209 /* just for tests 210 */ 211 void r_card_print (RCard* card); 212 213 #endif 214