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-account-settings.h>
32 /* 'private'/'protected' functions */
33 static void modest_account_settings_class_init (ModestAccountSettingsClass *klass);
34 static void modest_account_settings_finalize (GObject *obj);
35 static void modest_account_settings_instance_init (ModestAccountSettings *obj);
37 typedef struct _ModestAccountSettingsPrivate ModestAccountSettingsPrivate;
38 struct _ModestAccountSettingsPrivate {
41 ModestAccountRetrieveType retrieve_type;
45 ModestServerAccountSettings *store_settings;
46 ModestServerAccountSettings *transport_settings;
49 gboolean leave_messages_on_server;
50 gboolean use_signature;
52 gboolean use_connection_specific_smtp;
55 #define MODEST_ACCOUNT_SETTINGS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), \
56 MODEST_TYPE_ACCOUNT_SETTINGS, \
57 ModestAccountSettingsPrivate))
60 static GObjectClass *parent_class = NULL;
63 modest_account_settings_get_type (void)
65 static GType my_type = 0;
68 static const GTypeInfo my_info = {
69 sizeof(ModestAccountSettingsClass),
71 NULL, /* base finalize */
72 (GClassInitFunc) modest_account_settings_class_init,
73 NULL, /* class finalize */
74 NULL, /* class data */
75 sizeof(ModestAccountSettings),
77 (GInstanceInitFunc) modest_account_settings_instance_init,
81 my_type = g_type_register_static (G_TYPE_OBJECT,
82 "ModestAccountSettings",
89 modest_account_settings_class_init (ModestAccountSettingsClass *klass)
91 GObjectClass *gobject_class;
92 gobject_class = (GObjectClass *) klass;
94 parent_class = g_type_class_peek_parent (klass);
95 gobject_class->finalize = modest_account_settings_finalize;
97 g_type_class_add_private (gobject_class,
98 sizeof(ModestAccountSettingsPrivate));
102 modest_account_settings_instance_init (ModestAccountSettings *obj)
104 ModestAccountSettingsPrivate *priv;
106 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (obj);
108 priv->fullname = NULL;
109 priv->email_address = NULL;
110 priv->retrieve_type = MODEST_ACCOUNT_RETRIEVE_HEADERS_ONLY;
111 priv->retrieve_limit = 0;
112 priv->display_name = NULL;
113 priv->account_name = NULL;
114 priv->store_settings = NULL;
115 priv->transport_settings = NULL;
116 priv->enabled = TRUE;
117 priv->is_default = FALSE;
118 priv->leave_messages_on_server = TRUE;
119 priv->use_signature = FALSE;
120 priv->signature = FALSE;
121 priv->use_connection_specific_smtp = FALSE;
125 modest_account_settings_finalize (GObject *obj)
127 ModestAccountSettings *settings = MODEST_ACCOUNT_SETTINGS (obj);
128 ModestAccountSettingsPrivate *priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
129 g_free (priv->fullname);
130 priv->fullname = NULL;
131 g_free (priv->email_address);
132 priv->email_address = NULL;
133 g_free (priv->display_name);
134 priv->display_name = NULL;
135 g_free (priv->account_name);
136 priv->account_name = NULL;
137 g_free (priv->signature);
138 priv->signature = FALSE;
139 if (priv->store_settings) {
140 g_object_unref (priv->store_settings);
141 priv->store_settings = NULL;
143 if (priv->transport_settings) {
144 g_object_unref (priv->transport_settings);
145 priv->transport_settings = NULL;
148 G_OBJECT_CLASS (parent_class)->finalize (obj);
151 ModestAccountSettings*
152 modest_account_settings_new (void)
154 return g_object_new (MODEST_TYPE_ACCOUNT_SETTINGS, NULL);
158 modest_account_settings_get_fullname (ModestAccountSettings *settings)
160 ModestAccountSettingsPrivate *priv;
162 g_return_val_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings), NULL);
164 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
165 return priv->fullname;
169 modest_account_settings_set_fullname (ModestAccountSettings *settings,
170 const gchar *fullname)
172 ModestAccountSettingsPrivate *priv;
174 g_return_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings));
176 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
177 g_free (priv->fullname);
178 priv->fullname = g_strdup (fullname);
182 modest_account_settings_get_email_address (ModestAccountSettings *settings)
184 ModestAccountSettingsPrivate *priv;
186 g_return_val_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings), NULL);
188 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
189 return priv->email_address;
193 modest_account_settings_set_email_address (ModestAccountSettings *settings,
194 const gchar *email_address)
196 ModestAccountSettingsPrivate *priv;
198 g_return_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings));
200 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
201 g_free (priv->email_address);
202 priv->email_address = g_strdup (email_address);
206 modest_account_settings_get_display_name (ModestAccountSettings *settings)
208 ModestAccountSettingsPrivate *priv;
210 g_return_val_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings), NULL);
212 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
213 return priv->display_name;
217 modest_account_settings_set_display_name (ModestAccountSettings *settings,
218 const gchar *display_name)
220 ModestAccountSettingsPrivate *priv;
222 g_return_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings));
224 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
225 g_free (priv->display_name);
226 priv->display_name = g_strdup (display_name);
230 modest_account_settings_get_account_name (ModestAccountSettings *settings)
232 ModestAccountSettingsPrivate *priv;
234 g_return_val_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings), NULL);
236 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
237 return priv->account_name;
241 modest_account_settings_set_account_name (ModestAccountSettings *settings,
242 const gchar *account_name)
244 ModestAccountSettingsPrivate *priv;
246 /* be careful. This method should only be used internally in #ModestAccountMgr and
247 * #ModestAccountSettings. */
249 g_return_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings));
251 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
252 g_free (priv->account_name);
253 priv->account_name = g_strdup (account_name);
256 ModestAccountRetrieveType
257 modest_account_settings_get_retrieve_type (ModestAccountSettings *settings)
259 ModestAccountSettingsPrivate *priv;
261 g_return_val_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings), MODEST_ACCOUNT_RETRIEVE_HEADERS_ONLY);
263 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
264 return priv->retrieve_type;
268 modest_account_settings_set_retrieve_type (ModestAccountSettings *settings,
269 ModestAccountRetrieveType retrieve_type)
271 ModestAccountSettingsPrivate *priv;
273 g_return_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings));
275 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
276 priv->retrieve_type = retrieve_type;
280 modest_account_settings_get_retrieve_limit (ModestAccountSettings *settings)
282 ModestAccountSettingsPrivate *priv;
284 g_return_val_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings), 0);
286 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
287 return priv->retrieve_limit;
291 modest_account_settings_set_retrieve_limit (ModestAccountSettings *settings,
294 ModestAccountSettingsPrivate *priv;
296 g_return_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings));
298 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
299 priv->retrieve_limit = retrieve_limit;
303 modest_account_settings_get_enabled (ModestAccountSettings *settings)
305 ModestAccountSettingsPrivate *priv;
307 g_return_val_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings), 0);
309 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
310 return priv->enabled;
314 modest_account_settings_set_enabled (ModestAccountSettings *settings,
317 ModestAccountSettingsPrivate *priv;
319 g_return_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings));
321 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
322 priv->enabled = enabled;
326 modest_account_settings_get_is_default (ModestAccountSettings *settings)
328 ModestAccountSettingsPrivate *priv;
330 g_return_val_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings), 0);
332 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
333 return priv->is_default;
337 modest_account_settings_set_is_default (ModestAccountSettings *settings,
340 ModestAccountSettingsPrivate *priv;
342 g_return_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings));
344 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
345 priv->is_default = is_default;
348 ModestServerAccountSettings *
349 modest_account_settings_get_store_settings (ModestAccountSettings *settings)
351 ModestAccountSettingsPrivate *priv;
353 g_return_val_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings), 0);
355 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
356 if (!priv->store_settings)
357 priv->store_settings = modest_server_account_settings_new ();
358 return g_object_ref (priv->store_settings);
362 modest_account_settings_set_store_settings (ModestAccountSettings *settings,
363 ModestServerAccountSettings *store_settings)
365 ModestAccountSettingsPrivate *priv;
367 g_return_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings));
369 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
371 if (priv->store_settings) {
372 g_object_unref (priv->store_settings);
373 priv->store_settings = NULL;
376 if (MODEST_IS_SERVER_ACCOUNT_SETTINGS (store_settings))
377 priv->store_settings = g_object_ref (store_settings);
380 ModestServerAccountSettings *
381 modest_account_settings_get_transport_settings (ModestAccountSettings *settings)
383 ModestAccountSettingsPrivate *priv;
385 g_return_val_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings), 0);
387 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
388 if (!priv->transport_settings)
389 priv->transport_settings = modest_server_account_settings_new ();
390 return g_object_ref (priv->transport_settings);
394 modest_account_settings_set_transport_settings (ModestAccountSettings *settings,
395 ModestServerAccountSettings *transport_settings)
397 ModestAccountSettingsPrivate *priv;
399 g_return_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings));
401 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
403 if (priv->transport_settings) {
404 g_object_unref (priv->transport_settings);
405 priv->transport_settings = NULL;
408 if (MODEST_IS_SERVER_ACCOUNT_SETTINGS (transport_settings))
409 priv->transport_settings = g_object_ref (transport_settings);
413 modest_account_settings_get_use_signature (ModestAccountSettings *settings)
415 ModestAccountSettingsPrivate *priv;
417 g_return_val_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings), 0);
419 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
420 return priv->use_signature;
424 modest_account_settings_set_use_signature (ModestAccountSettings *settings,
425 gboolean use_signature)
427 ModestAccountSettingsPrivate *priv;
429 g_return_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings));
431 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
432 priv->use_signature = use_signature;
436 modest_account_settings_get_signature (ModestAccountSettings *settings)
438 ModestAccountSettingsPrivate *priv;
440 g_return_val_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings), NULL);
442 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
443 return priv->signature;
447 modest_account_settings_set_signature (ModestAccountSettings *settings,
448 const gchar *signature)
450 ModestAccountSettingsPrivate *priv;
452 g_return_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings));
454 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
455 g_free (priv->signature);
456 priv->signature = g_strdup (signature);
460 modest_account_settings_get_leave_messages_on_server (ModestAccountSettings *settings)
462 ModestAccountSettingsPrivate *priv;
464 g_return_val_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings), 0);
466 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
467 return priv->leave_messages_on_server;
471 modest_account_settings_set_leave_messages_on_server (ModestAccountSettings *settings,
472 gboolean leave_messages_on_server)
474 ModestAccountSettingsPrivate *priv;
476 g_return_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings));
478 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
479 priv->leave_messages_on_server = leave_messages_on_server;
483 modest_account_settings_get_use_connection_specific_smtp (ModestAccountSettings *settings)
485 ModestAccountSettingsPrivate *priv;
487 g_return_val_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings), 0);
489 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
490 return priv->use_connection_specific_smtp;
494 modest_account_settings_set_use_connection_specific_smtp (ModestAccountSettings *settings,
495 gboolean use_connection_specific_smtp)
497 ModestAccountSettingsPrivate *priv;
499 g_return_if_fail (MODEST_IS_ACCOUNT_SETTINGS (settings));
501 priv = MODEST_ACCOUNT_SETTINGS_GET_PRIVATE (settings);
502 priv->use_connection_specific_smtp = use_connection_specific_smtp;