Added a missing include
[modest] / src / modest-server-account-settings.c
1 /* Copyright (c) 2007, 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 #include <modest-protocol-registry.h>
31 #include <modest-server-account-settings.h>
32 #include <strings.h>
33
34 /* 'private'/'protected' functions */
35 static void   modest_server_account_settings_class_init (ModestServerAccountSettingsClass *klass);
36 static void   modest_server_account_settings_finalize   (GObject *obj);
37 static void   modest_server_account_settings_instance_init (ModestServerAccountSettings *obj);
38
39 typedef struct _ModestServerAccountSettingsPrivate ModestServerAccountSettingsPrivate;
40 struct _ModestServerAccountSettingsPrivate {
41         gchar *hostname;
42         guint port;
43         ModestProtocolType protocol;
44         gchar *username;
45         gchar *password;
46         ModestProtocolType security_protocol;
47         ModestProtocolType auth_protocol;
48         gchar *account_name;
49         gchar *uri;
50 };
51
52 #define MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE(o)     (G_TYPE_INSTANCE_GET_PRIVATE ((o), \
53                                                            MODEST_TYPE_SERVER_ACCOUNT_SETTINGS, \
54                                                            ModestServerAccountSettingsPrivate))
55
56 /* globals */
57 static GObjectClass *parent_class = NULL;
58
59 GType
60 modest_server_account_settings_get_type (void)
61 {
62         static GType my_type = 0;
63
64         if (!my_type) {
65                 static const GTypeInfo my_info = {
66                         sizeof(ModestServerAccountSettingsClass),
67                         NULL,   /* base init */
68                         NULL,   /* base finalize */
69                         (GClassInitFunc) modest_server_account_settings_class_init,
70                         NULL,   /* class finalize */
71                         NULL,   /* class data */
72                         sizeof(ModestServerAccountSettings),
73                         0,      /* n_preallocs */
74                         (GInstanceInitFunc) modest_server_account_settings_instance_init,
75                         NULL
76                 };
77
78                 my_type = g_type_register_static (G_TYPE_OBJECT,
79                                                   "ModestServerAccountSettings",
80                                                   &my_info, 0);
81         }
82         return my_type;
83 }
84
85 static void
86 modest_server_account_settings_class_init (ModestServerAccountSettingsClass *klass)
87 {
88         GObjectClass *gobject_class;
89         gobject_class = (GObjectClass *) klass;
90
91         parent_class = g_type_class_peek_parent (klass);
92         gobject_class->finalize = modest_server_account_settings_finalize;
93
94         g_type_class_add_private (gobject_class,
95                                   sizeof(ModestServerAccountSettingsPrivate));
96 }
97
98 static void
99 modest_server_account_settings_instance_init (ModestServerAccountSettings *obj)
100 {
101         ModestServerAccountSettingsPrivate *priv;
102
103         priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (obj);
104
105         priv->hostname = NULL;
106         priv->protocol = MODEST_PROTOCOL_REGISTRY_TYPE_INVALID;
107         priv->port = 0;
108         priv->username = NULL;
109         priv->password = NULL;
110         priv->security_protocol = MODEST_PROTOCOLS_CONNECTION_NONE;
111         priv->auth_protocol = MODEST_PROTOCOLS_AUTH_NONE;
112         priv->account_name = NULL;
113         priv->uri = NULL;
114 }
115
116 static void   
117 modest_server_account_settings_finalize   (GObject *obj)
118 {
119         ModestServerAccountSettings *settings = MODEST_SERVER_ACCOUNT_SETTINGS (obj);
120         ModestServerAccountSettingsPrivate *priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
121         g_free (priv->hostname);
122         priv->hostname = NULL;
123         g_free (priv->username);
124         priv->username = NULL;
125
126         if (priv->password) {
127                 bzero (priv->password, strlen (priv->password));
128                 g_free (priv->password);
129         }
130         priv->password = NULL;
131
132         priv->protocol = MODEST_PROTOCOL_REGISTRY_TYPE_INVALID;
133         priv->port = 0;
134         priv->security_protocol = MODEST_PROTOCOL_REGISTRY_TYPE_INVALID;
135         priv->auth_protocol = MODEST_PROTOCOL_REGISTRY_TYPE_INVALID;
136         g_free (priv->account_name);
137         priv->account_name = NULL;
138         g_free (priv->uri);
139         priv->uri = NULL;
140
141         G_OBJECT_CLASS (parent_class)->finalize (obj);
142 }
143
144 ModestServerAccountSettings*
145 modest_server_account_settings_new (void)
146 {
147         return g_object_new (MODEST_TYPE_SERVER_ACCOUNT_SETTINGS, NULL);
148 }
149
150 const gchar* 
151 modest_server_account_settings_get_hostname (ModestServerAccountSettings *settings)
152 {
153         ModestServerAccountSettingsPrivate *priv;
154
155         g_return_val_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings), NULL);
156
157         priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);   
158         return priv->hostname;
159 }
160
161 void         
162 modest_server_account_settings_set_hostname (ModestServerAccountSettings *settings,
163                                              const gchar *hostname)
164 {
165         ModestServerAccountSettingsPrivate *priv;
166
167         g_return_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings));
168
169         priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
170         g_free (priv->hostname);
171         priv->hostname = g_strdup (hostname);
172 }
173
174 const gchar* 
175 modest_server_account_settings_get_uri (ModestServerAccountSettings *settings)
176 {
177         ModestServerAccountSettingsPrivate *priv;
178
179         g_return_val_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings), NULL);
180
181         priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);   
182         return priv->uri;
183 }
184
185 void         
186 modest_server_account_settings_set_uri (ModestServerAccountSettings *settings,
187                                         const gchar *uri)
188 {
189         ModestServerAccountSettingsPrivate *priv;
190         
191         g_return_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings));
192
193         priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
194         g_free (priv->uri);
195         priv->uri = g_strdup (uri);
196
197 }
198
199 const gchar* 
200 modest_server_account_settings_get_username (ModestServerAccountSettings *settings)
201 {
202         ModestServerAccountSettingsPrivate *priv;
203
204         g_return_val_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings), NULL);
205
206         priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);   
207         return priv->username;
208 }
209
210 void         
211 modest_server_account_settings_set_username (ModestServerAccountSettings *settings,
212                                              const gchar *username)
213 {
214         ModestServerAccountSettingsPrivate *priv;
215
216         g_return_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings));
217
218         priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
219         g_free (priv->username);
220         priv->username = g_strdup (username);
221 }
222
223 const gchar* 
224 modest_server_account_settings_get_password (ModestServerAccountSettings *settings)
225 {
226         ModestServerAccountSettingsPrivate *priv;
227
228         g_return_val_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings), NULL);
229
230         priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);   
231         return priv->password;
232 }
233
234 void         
235 modest_server_account_settings_set_password (ModestServerAccountSettings *settings,
236                                              const gchar *password)
237 {
238         ModestServerAccountSettingsPrivate *priv;
239
240         g_return_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings));
241
242         priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
243         if (priv->password) {
244                 bzero (priv->password, strlen (priv->password));
245                 g_free (priv->password);
246         }
247         priv->password = g_strdup (password);
248 }
249
250 const gchar* 
251 modest_server_account_settings_get_account_name (ModestServerAccountSettings *settings)
252 {
253         ModestServerAccountSettingsPrivate *priv;
254
255         g_return_val_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings), NULL);
256
257         priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);   
258         return priv->account_name;
259 }
260
261 void         
262 modest_server_account_settings_set_account_name (ModestServerAccountSettings *settings,
263                                                  const gchar *account_name)
264 {
265         ModestServerAccountSettingsPrivate *priv;
266
267         /* be careful. This method should only be used internally in #ModestAccountMgr and
268          * #ModestAccountSettings. */
269
270         g_return_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings));
271
272         priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
273         g_free (priv->account_name);
274         priv->account_name = g_strdup (account_name);
275 }
276
277 ModestProtocolType
278 modest_server_account_settings_get_protocol (ModestServerAccountSettings *settings)
279 {
280         ModestServerAccountSettingsPrivate *priv;
281
282         g_return_val_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings), MODEST_PROTOCOL_REGISTRY_TYPE_INVALID);
283
284         priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
285         return priv->protocol;
286 }
287
288 void                          
289 modest_server_account_settings_set_protocol (ModestServerAccountSettings *settings,
290                                              ModestProtocolType protocol)
291 {
292         ModestServerAccountSettingsPrivate *priv;
293
294         g_return_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings));
295
296         priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
297         priv->protocol = protocol;
298         
299 }
300
301 guint  
302 modest_server_account_settings_get_port (ModestServerAccountSettings *settings)
303 {
304         ModestServerAccountSettingsPrivate *priv;
305
306         g_return_val_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings), 0);
307
308         priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
309         return priv->port;
310 }
311
312 void   
313 modest_server_account_settings_set_port (ModestServerAccountSettings *settings,
314                                          guint port)
315 {
316         ModestServerAccountSettingsPrivate *priv;
317
318         g_return_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings));
319
320         priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
321         priv->port = port;
322 }
323
324 ModestProtocolType
325 modest_server_account_settings_get_security_protocol (ModestServerAccountSettings *settings)
326 {
327         ModestServerAccountSettingsPrivate *priv;
328
329         g_return_val_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings), MODEST_PROTOCOL_REGISTRY_TYPE_INVALID);
330
331         priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
332         return priv->security_protocol;
333 }
334
335 void   
336 modest_server_account_settings_set_security_protocol (ModestServerAccountSettings *settings,
337                                                       ModestProtocolType security_protocol)
338 {
339         ModestServerAccountSettingsPrivate *priv;
340
341         g_return_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings));
342
343         priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
344         priv->security_protocol = security_protocol;
345 }
346
347 ModestProtocolType
348 modest_server_account_settings_get_auth_protocol (ModestServerAccountSettings *settings)
349 {
350         ModestServerAccountSettingsPrivate *priv;
351
352         g_return_val_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings), MODEST_PROTOCOL_REGISTRY_TYPE_INVALID);
353
354         priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
355         return priv->auth_protocol;
356 }
357
358 void   
359 modest_server_account_settings_set_auth_protocol (ModestServerAccountSettings *settings,
360                                                   ModestProtocolType auth_protocol)
361 {
362         ModestServerAccountSettingsPrivate *priv;
363
364         g_return_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings));
365
366         priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
367         priv->auth_protocol = auth_protocol;
368 }
369