2007-04-15 Sergio Villar Senin <svillar@igalia.com>
[modest] / src / modest-protocol-info.h
1 /* Copyright (c) 2006, Nokia Corporation
2  * All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  *
8  * * Redistributions of source code must retain the above copyright
9  *   notice, this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright
11  *   notice, this list of conditions and the following disclaimer in the
12  *   documentation and/or other materials provided with the distribution.
13  * * Neither the name of the Nokia Corporation nor the names of its
14  *   contributors may be used to endorse or promote products derived from
15  *   this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
18  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
20  * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
21  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  */
29
30 #ifndef __MODEST_PROTOCOL_INFO_H__
31 #define __MODEST_PROTOCOL_INFO_H__
32
33 #include <modest-pair.h>
34
35 G_BEGIN_DECLS
36
37 /* NOTE: be careful to check modest-protocol-info.c
38  * if you make any changes here */
39 typedef enum {
40         MODEST_PROTOCOL_UNKNOWN,
41         
42         MODEST_PROTOCOL_TRANSPORT_SENDMAIL, 
43         MODEST_PROTOCOL_TRANSPORT_SMTP,
44         
45         MODEST_PROTOCOL_STORE_POP,
46         MODEST_PROTOCOL_STORE_IMAP,
47         MODEST_PROTOCOL_STORE_MAILDIR,
48         MODEST_PROTOCOL_STORE_MBOX,     
49
50         MODEST_PROTOCOL_SECURITY_NONE,
51         MODEST_PROTOCOL_SECURITY_SSL,   
52         MODEST_PROTOCOL_SECURITY_TLS,
53         MODEST_PROTOCOL_SECURITY_TLS_OP,
54
55         MODEST_PROTOCOL_AUTH_NONE,
56         MODEST_PROTOCOL_AUTH_PASSWORD,
57
58         MODEST_PROTOCOL_NUM
59 } ModestProtocol;
60
61
62 typedef enum {
63         MODEST_PROTOCOL_TYPE_UNKNOWN,
64         MODEST_PROTOCOL_TYPE_TRANSPORT,
65         MODEST_PROTOCOL_TYPE_STORE,
66         MODEST_PROTOCOL_TYPE_SECURITY,
67         MODEST_PROTOCOL_TYPE_AUTH,
68
69         MODEST_PROTOCOL_TYPE_NUM
70 } ModestProtocolType;
71
72  
73 /**
74  * modest_protocol_info_get_list:
75  * @type: the type of list you want, it should NOT be MODEST_PROTOCOL_TYPE_UNKNOWN
76  *
77  * return the list of protocols of the given @type.
78  * the elements of the returned list are ModestProtocols (use GPOINTER_TO_INT to get it)
79  *  
80  * Returns: a list of protocols of the given @type; after use, it should be freed
81  * with g_slist_free. The elements should not be freed, as there is no memory allocated
82  * for them.
83  */
84 GSList*   modest_protocol_info_get_protocol_list (ModestProtocolType type);
85
86
87 /**
88  * modest_protocol_info_get_list:
89  * @type: the type of list you want, it should NOT be MODEST_PROTOCOL_TYPE_UNKNOWN
90  *
91  * return the list of <protocol,display-name>-tupels of the given @type.
92  * the elements of the returned list are ModestPairs
93  * this is a convenience function for use with ModestComboBox
94  *  
95  * Returns: a list of protocols of the given @type; after use, it should be freed
96  * with modest_pair_list_free
97  */
98 ModestPairList*   modest_protocol_info_get_protocol_pair_list (ModestProtocolType type);
99
100
101 /**
102  * modest_protocol_info_get_protocol_type:
103  * @proto: the ModestProtocol you'd like to query for its type
104  *
105  * return ModestProtocolType for the protocol
106  *  
107  * Returns: the protocol type or MODEST_PROTOCOL_TYPE_UNKNOWN
108  */
109 ModestProtocolType modest_protocol_info_get_protocol_type (ModestProtocol proto);
110
111
112 /**
113  * modest_protocol_info_get_protocol_type:
114  * @name: the name of the  ModestProtocol
115  *
116  * return the id of the protocol with the given name
117  *  
118  * Returns: the id of the protocol or MODEST_PROTOCOL_UNKNOWN
119  */
120 ModestProtocol modest_protocol_info_get_protocol (const gchar* name);
121
122
123 /**
124  * modest_protocol_info_get_protocol_name:
125  * @proto: the protocol you are looking for
126  *
127  * return the string id of the proto (such as "imap", or "tls")
128  *  
129  * Returns: string id of the proto as a constant string, that should NOT be modified or freed
130  */
131 const gchar* modest_protocol_info_get_protocol_name (ModestProtocol proto);
132
133 /**
134  * modest_protocol_info_get_protocol_display_name:
135  * @proto: the protocol you are looking for
136  *
137  * return the string id of the proto (such as "imap", or "tls")
138  *  
139  * Returns: string id of the proto as a constant string, that should NOT be modified or freed
140  *
141  */
142 const gchar* modest_protocol_info_get_protocol_display_name (ModestProtocol proto);
143
144
145
146 /**
147  * modest_protocol_info_protocol_is_local_store:
148  * @proto: the protocol
149  *
150  * is this protocol a local store protocol?
151  *  
152  * Returns: TRUE if it is a local store, FALSE otherwise
153  *
154  */
155 gboolean modest_protocol_info_protocol_is_local_store (ModestProtocol proto);
156
157
158
159
160 G_END_DECLS
161 #endif /* __MODEST_PROTOCOL_INFO_H__ */
162