* src/modest-ui-actions.[ch]:
[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         MODEST_PROTOCOL_AUTH_CRAMMD5,
58
59         MODEST_PROTOCOL_NUM
60 } ModestProtocol;
61
62
63 typedef enum {
64         MODEST_PROTOCOL_TYPE_UNKNOWN,
65         MODEST_PROTOCOL_TYPE_TRANSPORT,
66         MODEST_PROTOCOL_TYPE_STORE,
67         MODEST_PROTOCOL_TYPE_SECURITY,
68         MODEST_PROTOCOL_TYPE_AUTH,
69
70         MODEST_PROTOCOL_TYPE_NUM
71 } ModestProtocolType;
72
73  
74 /**
75  * modest_protocol_info_get_list:
76  * @type: the type of list you want, it should NOT be MODEST_PROTOCOL_TYPE_UNKNOWN
77  *
78  * return the list of protocols of the given @type.
79  * the elements of the returned list are ModestProtocols (use GPOINTER_TO_INT to get it)
80  *  
81  * Returns: a list of protocols of the given @type; after use, it should be freed
82  * with g_slist_free. The elements should not be freed, as there is no memory allocated
83  * for them.
84  */
85 GSList*   modest_protocol_info_get_protocol_list (ModestProtocolType type);
86
87
88 /**
89  * modest_protocol_info_get_list:
90  * @type: the type of list you want, it should NOT be MODEST_PROTOCOL_TYPE_UNKNOWN
91  *
92  * return the list of <protocol,display-name>-tupels of the given @type.
93  * the elements of the returned list are ModestPairs
94  * this is a convenience function for use with ModestComboBox
95  *  
96  * Returns: a list of protocols of the given @type; after use, it should be freed
97  * with modest_pair_list_free
98  */
99 ModestPairList*   modest_protocol_info_get_protocol_pair_list (ModestProtocolType type);
100
101
102 /**
103  * modest_protocol_info_get_protocol_type:
104  * @proto: the ModestProtocol you'd like to query for its type
105  *
106  * return ModestProtocolType for the protocol
107  *  
108  * Returns: the protocol type or MODEST_PROTOCOL_TYPE_UNKNOWN
109  */
110 ModestProtocolType modest_protocol_info_get_protocol_type (ModestProtocol proto);
111
112
113 /**
114  * modest_protocol_info_get_protocol_type:
115  * @name: the name of the  ModestProtocol
116  *
117  * return the id of the protocol with the given name
118  *  
119  * Returns: the id of the protocol or MODEST_PROTOCOL_UNKNOWN
120  */
121 ModestProtocol modest_protocol_info_get_protocol (const gchar* name);
122
123
124 /**
125  * modest_protocol_info_get_protocol_name:
126  * @proto: the protocol you are looking for
127  *
128  * return the string id of the proto (such as "imap", or "tls")
129  *  
130  * Returns: string id of the proto as a constant string, that should NOT be modified or freed
131  */
132 const gchar* modest_protocol_info_get_protocol_name (ModestProtocol proto);
133
134 /**
135  * modest_protocol_info_get_protocol_display_name:
136  * @proto: the protocol you are looking for
137  *
138  * return the string id of the proto (such as "imap", or "tls")
139  *  
140  * Returns: string id of the proto as a constant string, that should NOT be modified or freed
141  *
142  */
143 const gchar* modest_protocol_info_get_protocol_display_name (ModestProtocol proto);
144
145
146
147 /**
148  * modest_protocol_info_protocol_is_local_store:
149  * @proto: the protocol
150  *
151  * is this protocol a local store protocol?
152  *  
153  * Returns: TRUE if it is a local store, FALSE otherwise
154  *
155  */
156 gboolean modest_protocol_info_protocol_is_local_store (ModestProtocol proto);
157
158
159
160
161 G_END_DECLS
162 #endif /* __MODEST_PROTOCOL_INFO_H__ */
163