1 /* Copyright (c) 2006, 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 <string.h> /* for strcmp */
31 #include "modest-presets.h"
33 #define MODEST_PRESETS_KEY_MCC "MCC"
34 #define MODEST_PRESETS_KEY_INCOMING "IncomingMailServer"
35 #define MODEST_PRESETS_KEY_OUTGOING "OutgoingMailServer"
36 #define MODEST_PRESETS_KEY_MAILBOX_TYPE "MailboxType"
37 #define MODEST_PRESETS_KEY_MAILBOX_TYPE_POP "pop"
38 #define MODEST_PRESETS_KEY_MAILBOX_TYPE_IMAP "imap"
39 #define MODEST_PRESETS_KEY_APOP "APOPSecureLogin"
40 #define MODEST_PRESETS_KEY_SECURE_SMTP "SecureSMTP"
41 #define MODEST_PRESETS_KEY_TRUE "true"
44 modest_presets_new (const gchar *presetfile)
46 ModestPresets *presets = NULL;
49 g_return_val_if_fail (presetfile, NULL);
51 presets = g_new (ModestPresets, 1);
52 presets->keyfile = g_key_file_new ();
54 if (!presets->keyfile) {
55 g_printerr ("modest: cannot instantiate GKeyFile\n");
60 if (!g_key_file_load_from_file (presets->keyfile, presetfile,
61 G_KEY_FILE_NONE, &err)) {
62 g_printerr ("modest: cannot open keyfile: %s\n",
63 err ? err->message : "unknown reason");
73 modest_presets_get_providers (ModestPresets *self, gint mcc, gboolean include_globals)
75 gchar **providers = NULL;
76 gchar **filtered = NULL;
78 g_return_val_if_fail (self && self->keyfile, NULL);
80 providers = g_key_file_get_groups (self->keyfile, NULL);
82 /* return *all* providers? */
86 /* nope: filter them instead */
87 filtered = g_new(gchar*, g_strv_length(providers));
89 if (filtered && providers) {
91 while (providers[i]) {
94 this_mcc = g_key_file_get_integer (self->keyfile, providers[i],
95 MODEST_PRESETS_KEY_MCC,
97 if (this_mcc == mcc || (this_mcc == 0 && include_globals)) {
98 filtered[j++] = providers[i];
99 providers[i] = NULL; /* g_strfreev: leave it alone */
104 g_strfreev (providers);
111 modest_presets_get_server (ModestPresets *self, const gchar *provider,
112 gboolean incoming_server)
114 g_return_val_if_fail (self && self->keyfile, NULL);
115 g_return_val_if_fail (provider, NULL);
117 return g_key_file_get_string (self->keyfile, provider,
119 MODEST_PRESETS_KEY_INCOMING :
120 MODEST_PRESETS_KEY_OUTGOING,
126 modest_presets_get_info (ModestPresets *self, const gchar *provider, gboolean incoming_server)
128 ModestPresetsInfo info = 0;
131 g_return_val_if_fail (self && self->keyfile, 0);
133 val = g_key_file_get_string (self->keyfile, provider,
134 MODEST_PRESETS_KEY_INCOMING, NULL);
137 val = g_key_file_get_string (self->keyfile, provider,
138 MODEST_PRESETS_KEY_MAILBOX_TYPE, NULL);
139 if (strcmp (val, MODEST_PRESETS_KEY_MAILBOX_TYPE_POP) == 0)
140 info |= MODEST_PRESETS_INFO_POP;
141 if (strcmp (val, MODEST_PRESETS_KEY_MAILBOX_TYPE_IMAP) == 0)
142 info |= MODEST_PRESETS_INFO_IMAP;
145 val = g_key_file_get_string (self->keyfile, provider,
146 MODEST_PRESETS_KEY_APOP, NULL);
147 if (val && strcmp(val, MODEST_PRESETS_KEY_TRUE) == 0)
148 info |= MODEST_PRESETS_INFO_APOP;
153 val = g_key_file_get_string (self->keyfile, provider,
154 MODEST_PRESETS_KEY_OUTGOING, NULL);
157 info |= MODEST_PRESETS_INFO_SMTP;
159 val = g_key_file_get_string (self->keyfile, provider,
160 MODEST_PRESETS_KEY_SECURE_SMTP, NULL);
161 if (val && strcmp(val,MODEST_PRESETS_KEY_TRUE) == 0)
162 info |= MODEST_PRESETS_INFO_SECURE_SMTP;
171 modest_presets_destroy (ModestPresets *self)
173 g_return_if_fail (self);
175 g_key_file_free (self->keyfile);
176 self->keyfile = NULL;