1 /*
2  * This program is free software; you can redistribute it and/or modify it
3  * under the terms of the GNU Lesser General Public License as published by
4  * the Free Software Foundation.
5  *
6  * This program is distributed in the hope that it will be useful, but
7  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
8  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
9  * for more details.
10  *
11  * You should have received a copy of the GNU Lesser General Public License
12  * along with this program; if not, see <http://www.gnu.org/licenses/>.
13  *
14  * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
15  */
16 
17 #ifndef E_COMPOSER_HEADER_TABLE_H
18 #define E_COMPOSER_HEADER_TABLE_H
19 
20 #include <libebook/libebook.h>
21 
22 #include <composer/e-composer-header.h>
23 
24 /* Standard GObject macros */
25 #define E_TYPE_COMPOSER_HEADER_TABLE \
26 	(e_composer_header_table_get_type ())
27 #define E_COMPOSER_HEADER_TABLE(obj) \
28 	(G_TYPE_CHECK_INSTANCE_CAST \
29 	((obj), E_TYPE_COMPOSER_HEADER_TABLE, EComposerHeaderTable))
30 #define E_COMPOSER_HEADER_TABLE_CLASS(cls) \
31 	(G_TYPE_CHECK_CLASS_CAST \
32 	((cls), E_TYPE_COMPOSER_HEADER_TABLE, EComposerHeaderTableClass))
33 #define E_IS_COMPOSER_HEADER_TABLE(obj) \
34 	(G_TYPE_CHECK_INSTANCE_TYPE \
35 	((obj), E_TYPE_COMPOSER_HEADER_TABLE))
36 #define E_IS_COMPOSER_HEADER_TABLE_CLASS(cls) \
37 	(G_TYPE_CHECK_CLASS_TYPE \
38 	((cls), E_TYPE_COMPOSER_HEADER_TABLE))
39 #define E_COMPOSER_HEADER_TABLE_GET_CLASS(obj) \
40 	(G_TYPE_INSTANCE_GET_CLASS \
41 	((obj), E_TYPE_COMPOSER_HEADER_TABLE, EComposerHeaderTableClass))
42 
43 G_BEGIN_DECLS
44 
45 typedef struct _EComposerHeaderTable EComposerHeaderTable;
46 typedef struct _EComposerHeaderTableClass EComposerHeaderTableClass;
47 typedef struct _EComposerHeaderTablePrivate EComposerHeaderTablePrivate;
48 
49 /* Headers, listed in the order they should appear in the table. */
50 typedef enum {
51 	E_COMPOSER_HEADER_FROM,
52 	E_COMPOSER_HEADER_REPLY_TO,
53 	E_COMPOSER_HEADER_TO,
54 	E_COMPOSER_HEADER_CC,
55 	E_COMPOSER_HEADER_BCC,
56 	E_COMPOSER_HEADER_POST_TO,
57 	E_COMPOSER_HEADER_SUBJECT,
58 	E_COMPOSER_NUM_HEADERS
59 } EComposerHeaderType;
60 
61 struct _EComposerHeaderTable {
62 	GtkTable parent;
63 	EComposerHeaderTablePrivate *priv;
64 };
65 
66 struct _EComposerHeaderTableClass {
67 	GtkTableClass parent_class;
68 };
69 
70 GType		e_composer_header_table_get_type (void);
71 GtkWidget *	e_composer_header_table_new	(EClientCache *client_cache);
72 EClientCache *	e_composer_header_table_ref_client_cache
73 						(EComposerHeaderTable *table);
74 EComposerHeader *
75 		e_composer_header_table_get_header
76 						(EComposerHeaderTable *table,
77 						 EComposerHeaderType type);
78 EMailSignatureComboBox *
79 		e_composer_header_table_get_signature_combo_box
80 						(EComposerHeaderTable *table);
81 EDestination ** e_composer_header_table_get_destinations
82 						(EComposerHeaderTable *table);
83 EDestination **	e_composer_header_table_get_destinations_bcc
84 						(EComposerHeaderTable *table);
85 void		e_composer_header_table_add_destinations_bcc
86 						(EComposerHeaderTable *table,
87 						 EDestination **destination);
88 void		e_composer_header_table_set_destinations_bcc
89 						(EComposerHeaderTable *table,
90 						 EDestination **destinations);
91 EDestination **	e_composer_header_table_get_destinations_cc
92 						(EComposerHeaderTable *table);
93 void		e_composer_header_table_add_destinations_cc
94 						(EComposerHeaderTable *table,
95 						 EDestination **destination);
96 void		e_composer_header_table_set_destinations_cc
97 						(EComposerHeaderTable *table,
98 						 EDestination **destinations);
99 EDestination **	e_composer_header_table_get_destinations_to
100 						(EComposerHeaderTable *table);
101 void		e_composer_header_table_add_destinations_to
102 						(EComposerHeaderTable *table,
103 						 EDestination **destinations);
104 void		e_composer_header_table_set_destinations_to
105 						(EComposerHeaderTable *table,
106 						 EDestination **destinations);
107 gchar *		e_composer_header_table_dup_identity_uid
108 						(EComposerHeaderTable *table,
109 						 gchar **chosen_alias_name,
110 						 gchar **chosen_alias_address);
111 void		e_composer_header_table_set_identity_uid
112 						(EComposerHeaderTable *table,
113 						 const gchar *identity_uid,
114 						 const gchar *alias_name,
115 						 const gchar *alias_address);
116 const gchar *	e_composer_header_table_get_from_name
117 						(EComposerHeaderTable *table);
118 const gchar *	e_composer_header_table_get_from_address
119 						(EComposerHeaderTable *table);
120 GList *		e_composer_header_table_get_post_to
121 						(EComposerHeaderTable *table);
122 void		e_composer_header_table_set_post_to_base
123 						(EComposerHeaderTable *table,
124 						 const gchar *base_url,
125 						 const gchar *post_to);
126 void		e_composer_header_table_set_post_to_list
127 						(EComposerHeaderTable *table,
128 						 GList *folder_list);
129 const gchar *	e_composer_header_table_get_reply_to
130 						(EComposerHeaderTable *table);
131 void		e_composer_header_table_set_reply_to
132 						(EComposerHeaderTable *table,
133 						 const gchar *reply_to);
134 const gchar *	e_composer_header_table_get_signature_uid
135 						(EComposerHeaderTable *table);
136 void		e_composer_header_table_set_signature_uid
137 						(EComposerHeaderTable *table,
138 						 const gchar *signature_uid);
139 const gchar *	e_composer_header_table_get_subject
140 						(EComposerHeaderTable *table);
141 void		e_composer_header_table_set_subject
142 						(EComposerHeaderTable *table,
143 						 const gchar *subject);
144 void		e_composer_header_table_set_header_visible
145 						(EComposerHeaderTable *table,
146 						 EComposerHeaderType type,
147 						 gboolean visible);
148 ESource *	e_composer_header_table_ref_source
149 						(EComposerHeaderTable *table,
150 						 const gchar *uid);
151 
152 G_END_DECLS
153 
154 #endif /* E_COMPOSER_HEADER_TABLE_H */
155