1 /* Copyright (c) 2007, Nokia Corporation
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
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.
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.
30 #include <modest-protocol-registry.h>
31 #include <modest-server-account-settings.h>
35 /* 'private'/'protected' functions */
36 static void modest_server_account_settings_class_init (ModestServerAccountSettingsClass *klass);
37 static void modest_server_account_settings_finalize (GObject *obj);
38 static void modest_server_account_settings_instance_init (ModestServerAccountSettings *obj);
40 typedef struct _ModestServerAccountSettingsPrivate ModestServerAccountSettingsPrivate;
41 struct _ModestServerAccountSettingsPrivate {
44 ModestProtocolType protocol;
47 ModestProtocolType security_protocol;
48 ModestProtocolType auth_protocol;
53 #define MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), \
54 MODEST_TYPE_SERVER_ACCOUNT_SETTINGS, \
55 ModestServerAccountSettingsPrivate))
58 static GObjectClass *parent_class = NULL;
61 modest_server_account_settings_get_type (void)
63 static GType my_type = 0;
66 static const GTypeInfo my_info = {
67 sizeof(ModestServerAccountSettingsClass),
69 NULL, /* base finalize */
70 (GClassInitFunc) modest_server_account_settings_class_init,
71 NULL, /* class finalize */
72 NULL, /* class data */
73 sizeof(ModestServerAccountSettings),
75 (GInstanceInitFunc) modest_server_account_settings_instance_init,
79 my_type = g_type_register_static (G_TYPE_OBJECT,
80 "ModestServerAccountSettings",
87 modest_server_account_settings_class_init (ModestServerAccountSettingsClass *klass)
89 GObjectClass *gobject_class;
90 gobject_class = (GObjectClass *) klass;
92 parent_class = g_type_class_peek_parent (klass);
93 gobject_class->finalize = modest_server_account_settings_finalize;
95 g_type_class_add_private (gobject_class,
96 sizeof(ModestServerAccountSettingsPrivate));
100 modest_server_account_settings_instance_init (ModestServerAccountSettings *obj)
102 ModestServerAccountSettingsPrivate *priv;
104 priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (obj);
106 priv->hostname = NULL;
107 priv->protocol = MODEST_PROTOCOL_REGISTRY_TYPE_INVALID;
109 priv->username = NULL;
110 priv->password = NULL;
111 priv->security_protocol = MODEST_PROTOCOLS_CONNECTION_NONE;
112 priv->auth_protocol = MODEST_PROTOCOLS_AUTH_NONE;
113 priv->account_name = NULL;
118 modest_server_account_settings_finalize (GObject *obj)
120 ModestServerAccountSettings *settings = MODEST_SERVER_ACCOUNT_SETTINGS (obj);
121 ModestServerAccountSettingsPrivate *priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
122 g_free (priv->hostname);
123 priv->hostname = NULL;
124 g_free (priv->username);
125 priv->username = NULL;
127 if (priv->password) {
128 bzero (priv->password, strlen (priv->password));
129 g_free (priv->password);
131 priv->password = NULL;
133 priv->protocol = MODEST_PROTOCOL_REGISTRY_TYPE_INVALID;
135 priv->security_protocol = MODEST_PROTOCOL_REGISTRY_TYPE_INVALID;
136 priv->auth_protocol = MODEST_PROTOCOL_REGISTRY_TYPE_INVALID;
137 g_free (priv->account_name);
138 priv->account_name = NULL;
142 G_OBJECT_CLASS (parent_class)->finalize (obj);
145 ModestServerAccountSettings*
146 modest_server_account_settings_new (void)
148 return g_object_new (MODEST_TYPE_SERVER_ACCOUNT_SETTINGS, NULL);
152 modest_server_account_settings_get_hostname (ModestServerAccountSettings *settings)
154 ModestServerAccountSettingsPrivate *priv;
156 g_return_val_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings), NULL);
158 priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
159 return priv->hostname;
163 modest_server_account_settings_set_hostname (ModestServerAccountSettings *settings,
164 const gchar *hostname)
166 ModestServerAccountSettingsPrivate *priv;
168 g_return_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings));
170 priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
171 g_free (priv->hostname);
172 priv->hostname = g_strdup (hostname);
176 modest_server_account_settings_get_uri (ModestServerAccountSettings *settings)
178 ModestServerAccountSettingsPrivate *priv;
180 g_return_val_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings), NULL);
182 priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
187 modest_server_account_settings_set_uri (ModestServerAccountSettings *settings,
190 ModestServerAccountSettingsPrivate *priv;
192 g_return_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings));
194 priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
196 priv->uri = g_strdup (uri);
201 modest_server_account_settings_get_username (ModestServerAccountSettings *settings)
203 ModestServerAccountSettingsPrivate *priv;
205 g_return_val_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings), NULL);
207 priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
208 return priv->username;
212 modest_server_account_settings_set_username (ModestServerAccountSettings *settings,
213 const gchar *username)
215 ModestServerAccountSettingsPrivate *priv;
217 g_return_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings));
219 priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
220 g_free (priv->username);
221 priv->username = g_strdup (username);
225 modest_server_account_settings_get_password (ModestServerAccountSettings *settings)
227 ModestServerAccountSettingsPrivate *priv;
229 g_return_val_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings), NULL);
231 priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
232 return priv->password;
236 modest_server_account_settings_set_password (ModestServerAccountSettings *settings,
237 const gchar *password)
239 ModestServerAccountSettingsPrivate *priv;
241 g_return_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings));
243 priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
244 if (priv->password) {
245 bzero (priv->password, strlen (priv->password));
246 g_free (priv->password);
248 priv->password = g_strdup (password);
252 modest_server_account_settings_get_account_name (ModestServerAccountSettings *settings)
254 ModestServerAccountSettingsPrivate *priv;
256 g_return_val_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings), NULL);
258 priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
259 return priv->account_name;
263 modest_server_account_settings_set_account_name (ModestServerAccountSettings *settings,
264 const gchar *account_name)
266 ModestServerAccountSettingsPrivate *priv;
268 /* be careful. This method should only be used internally in #ModestAccountMgr and
269 * #ModestAccountSettings. */
271 g_return_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings));
273 priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
274 g_free (priv->account_name);
275 priv->account_name = g_strdup (account_name);
279 modest_server_account_settings_get_protocol (ModestServerAccountSettings *settings)
281 ModestServerAccountSettingsPrivate *priv;
283 g_return_val_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings), MODEST_PROTOCOL_REGISTRY_TYPE_INVALID);
285 priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
286 return priv->protocol;
290 modest_server_account_settings_set_protocol (ModestServerAccountSettings *settings,
291 ModestProtocolType protocol)
293 ModestServerAccountSettingsPrivate *priv;
295 g_return_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings));
297 priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
298 priv->protocol = protocol;
303 modest_server_account_settings_get_port (ModestServerAccountSettings *settings)
305 ModestServerAccountSettingsPrivate *priv;
307 g_return_val_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings), 0);
309 priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
314 modest_server_account_settings_set_port (ModestServerAccountSettings *settings,
317 ModestServerAccountSettingsPrivate *priv;
319 g_return_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings));
321 priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
326 modest_server_account_settings_get_security_protocol (ModestServerAccountSettings *settings)
328 ModestServerAccountSettingsPrivate *priv;
330 g_return_val_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings), MODEST_PROTOCOL_REGISTRY_TYPE_INVALID);
332 priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
333 return priv->security_protocol;
337 modest_server_account_settings_set_security_protocol (ModestServerAccountSettings *settings,
338 ModestProtocolType security_protocol)
340 ModestServerAccountSettingsPrivate *priv;
342 g_return_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings));
344 priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
345 priv->security_protocol = security_protocol;
349 modest_server_account_settings_get_auth_protocol (ModestServerAccountSettings *settings)
351 ModestServerAccountSettingsPrivate *priv;
353 g_return_val_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings), MODEST_PROTOCOL_REGISTRY_TYPE_INVALID);
355 priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
356 return priv->auth_protocol;
360 modest_server_account_settings_set_auth_protocol (ModestServerAccountSettings *settings,
361 ModestProtocolType auth_protocol)
363 ModestServerAccountSettingsPrivate *priv;
365 g_return_if_fail (MODEST_IS_SERVER_ACCOUNT_SETTINGS (settings));
367 priv = MODEST_SERVER_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
368 priv->auth_protocol = auth_protocol;