1 /* Copyright (c) 2008, 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.
31 /* modest-account-settings.h */
33 #ifndef __MODEST_ACCOUNT_PROTOCOL_H__
34 #define __MODEST_ACCOUNT_PROTOCOL_H__
36 #include "widgets/modest-account-settings-dialog.h"
37 #include "modest-protocol.h"
38 #include "widgets/modest-wizard-dialog.h"
39 #include "modest-pair.h"
40 #include <tny-account.h>
45 /* convenience macros */
46 #define MODEST_TYPE_ACCOUNT_PROTOCOL (modest_account_protocol_get_type())
47 #define MODEST_ACCOUNT_PROTOCOL(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),MODEST_TYPE_ACCOUNT_PROTOCOL,ModestAccountProtocol))
48 #define MODEST_ACCOUNT_PROTOCOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),MODEST_TYPE_ACCOUNT_PROTOCOL,ModestAccountProtocolClass))
49 #define MODEST_IS_ACCOUNT_PROTOCOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),MODEST_TYPE_ACCOUNT_PROTOCOL))
50 #define MODEST_IS_ACCOUNT_PROTOCOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_ACCOUNT_PROTOCOL))
51 #define MODEST_ACCOUNT_PROTOCOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_ACCOUNT_PROTOCOL,ModestAccountProtocolClass))
53 typedef struct _ModestAccountProtocol ModestAccountProtocol;
54 typedef struct _ModestAccountProtocolClass ModestAccountProtocolClass;
56 typedef void (*ModestAccountProtocolCheckSupportFunc) (ModestAccountProtocol *self,
57 gboolean supported, gpointer userdata);
60 struct _ModestAccountProtocol {
61 ModestProtocol parent;
64 struct _ModestAccountProtocolClass {
65 ModestProtocolClass parent_class;
68 TnyAccount * (*create_account) (ModestAccountProtocol *self);
69 ModestAccountSettingsDialog* (*create_account_settings_dialog) (ModestAccountProtocol* self);
70 ModestPairList* (*get_easysetupwizard_tabs) (ModestAccountProtocol* self);
71 ModestWizardDialogResponseOverrideFunc (*get_wizard_response_override) (ModestAccountProtocol *self);
72 void (*save_settings) (ModestAccountProtocol *self, ModestAccountSettingsDialog *dialog, ModestAccountSettings *settings);
73 void (*save_wizard_settings) (ModestAccountProtocol *self, GList *wizard_pages, ModestAccountSettings *settings);
74 gboolean (*is_supported) (ModestAccountProtocol *self);
75 void (*check_support) (ModestAccountProtocol *self, ModestAccountProtocolCheckSupportFunc func, gpointer userdata);
76 gchar * (*get_from) (ModestAccountProtocol *self, const gchar *account_id, const gchar *mailbox);
77 ModestPairList * (*get_from_list) (ModestAccountProtocol *self, const gchar *account_id);
78 gchar * (*get_signature) (ModestAccountProtocol *self, const gchar *account_id, const gchar *mailbox, gboolean *has_signature);
82 * modest_account_protocol_get_type:
84 * Returns: GType of the account protocol type
86 GType modest_account_protocol_get_type (void) G_GNUC_CONST;
89 * modest_account_protocol_new:
91 * creates a new instance of #ModestAccountProtocol
93 * Returns: a #ModestAccountProtocol
95 ModestProtocol* modest_account_protocol_new (const gchar *name, const gchar *display_name,
96 guint port, guint alternate_port,
97 GType account_g_type);
100 * modest_account_protocol_get_port:
101 * @self: a #ModestAccountProtocol
103 * get the protocol standard port
107 guint modest_account_protocol_get_port (ModestAccountProtocol *self);
110 * modest_account_protocol_set_port:
111 * @self: a #ModestAccountProtocol
114 * set @port as the protocol standard port
116 void modest_account_protocol_set_port (ModestAccountProtocol *self,
120 * modest_account_protocol_get_alternate_port:
121 * @self: a #ModestAccountProtocol
123 * get the protocol standard alternate_port
127 guint modest_account_protocol_get_alternate_port (ModestAccountProtocol *self);
130 * modest_account_protocol_set_alternate_port:
131 * @self: a #ModestAccountProtocol
132 * @alternate_port: a #guint
134 * set @alternate_port as the protocol alternate port
136 void modest_account_protocol_set_alternate_port (ModestAccountProtocol *self,
137 guint alternate_port);
140 * modest_account_protocol_set_account_options:
141 * @self: a #ModestAccountProtocol
142 * @account_options: a #TnyList of account options and their values
144 * set the account options that will be passed to TnyCamelAccount for this protocol.
145 * This replaces previous option lists for this protocol
147 void modest_account_protocol_set_account_options (ModestAccountProtocol *self,
148 TnyList *account_options);
151 * modest_account_protocol_get_account_options:
152 * @self: a #ModestAccountProtocol
154 * obtain the account options for this account protocol.
156 * Returns: a caller-owner copy of the account options list.
158 TnyList *modest_account_protocol_get_account_options (ModestAccountProtocol *self);
161 * modest_account_protocol_has_custom_secure_auth_mech:
162 * @self: a #ModestAccountProtocol
163 * @auth_protocol_type: a #ModestProtocolType for an auth protocol
165 * checks whether there's a custom secure auth mech camel string for @auth_protocol_type.
167 * Returns: %TRUE if registered, %FALSE otherwise
170 modest_account_protocol_has_custom_secure_auth_mech (ModestAccountProtocol *self, ModestProtocolType auth_protocol_type);
173 * modest_account_protocol_get_custom_secure_auth_mech:
174 * @self: a #ModestAccountProtocol
175 * @auth_protocol_type: a #ModestProtocolType for an auth protocol
177 * obtains the secure auth mech of @auth_protocol_type in protocol. Be careful as %NULL does not imply
178 * there's no custom auth mech registered (you can register %NULL). To check if it's registered, just
179 * use modest_account_protocol_has_custom_secure_auth_mech().
181 * Returns: the secure auth mech for this auth protocol type that will be passed to camel.
184 modest_account_protocol_get_custom_secure_auth_mech (ModestAccountProtocol *self, ModestProtocolType auth_protocol_type);
187 * modest_account_protocol_unset_custom_secure_auth_mech:
188 * @self: a #ModestAccountProtocol
189 * @auth_protocol_type: a #ModestProtocolType for an auth protocol
191 * Unsets the secure auth meth of @auth_protocol_type in protocol.
194 modest_account_protocol_unset_custom_secure_auth_mech (ModestAccountProtocol *self, ModestProtocolType auth_protocol_type);
197 * modest_account_protocol_set_custom_secure_auth_mech:
198 * @self: a #ModestAccountProtocol
199 * @auth_protocol_type: a #ModestProtocolType for an auth protocol
200 * @secure_auth_mech: a string or %NULL
202 * sets the secure auth mech of @auth_protocol_type in protocol. Be careful as %NULL does not imply
203 * there's no custom auth mech registered (you can register %NULL). If you set %NULL you're regitering %NULL as the custom secure auth
204 * mechanism instead of unsetting it.
207 modest_account_protocol_set_custom_secure_auth_mech (ModestAccountProtocol *self, ModestProtocolType auth_protocol_type, const gchar *secure_auth_mech);
210 * modest_account_protocol_get_account_g_type:
211 * @self: a #ModestAccountProtocol
213 * get the protocol type used for factoring new TnyAccount
217 GType modest_account_protocol_get_account_g_type (ModestAccountProtocol *self);
220 * modest_account_protocol_set_account_g_type:
221 * @self: a #ModestAccountProtocol
222 * @account_g_type: a #GType
224 * set @account_g_type as the type modest_account_protocol_create_account will
227 void modest_account_protocol_set_account_g_type (ModestAccountProtocol *self,
228 GType account_g_type);
231 * modest_account_protocol_create_account:
232 * @self: a #ModestAccountProtocol
234 * create a new account instance for this protocol
236 * Returns: a #TnyAccount
238 TnyAccount * modest_account_protocol_create_account (ModestAccountProtocol *self);
241 * modest_account_protocol_get_account_settings_dialog:
242 * @self: a #ModestAccountProtocol
243 * @account_name: the name of the account we're creating the dialog for
245 * retrieves the account settings dialog used to setup the account
246 * represented by this protocol
248 * Returns: a #ModestAccountSettingsDialog
250 ModestAccountSettingsDialog* modest_account_protocol_get_account_settings_dialog (ModestAccountProtocol *self,
251 const gchar *account_name);
253 ModestPairList* modest_account_protocol_get_easysetupwizard_tabs (ModestAccountProtocol *self);
256 * modest_account_protocol_save_settings:
257 * @self: this #ModestAccountProtocol
258 * @dialog: a #ModestAccountSettingsDialog
259 * @settings: the #ModestAccountSettings
261 * this function stores the values held by the account settings dialog
262 * in the account settings object that is passed as argument
264 * NOTE: this function provides a default implementation that calls
265 * the save_settings method of the acocunt settings dialog. So if your
266 * implementation do not do anything more just do not redefine it
268 void modest_account_protocol_save_settings (ModestAccountProtocol *self,
269 ModestAccountSettingsDialog *dialog,
270 ModestAccountSettings *settings);
273 * modest_account_protocol_save_wizard_settings:
274 * @self: this #ModestAccountProtocol
275 * @wizard_pages: a list of #ModestEasysetupWizardPage
276 * @settings: the #ModestAccountSettings
278 * this function stores the data input by the users in the wizard in
279 * the account settings object passed as argument
281 void modest_account_protocol_save_wizard_settings (ModestAccountProtocol *self,
283 ModestAccountSettings *settings);
286 * modest_account_protocol_get_wizard_response_override:
287 * @self: a #ModestAccountProtocol
289 * obtains the method that should be used to override wizard response behavior when the
290 * wizard is setting up this account type.
292 * Returns: a #ModestWizardDialogResponseOverrideFunc
294 ModestWizardDialogResponseOverrideFunc modest_account_protocol_get_wizard_response_override (ModestAccountProtocol *self);
298 * modest_account_protocol_check_support:
299 * @self: a #ModestAccountProtocol
300 * @func: a #ModestAccountProtocolCheckSupportFunc
301 * @userdata: a gpointer
303 * This method checks asynchronously if the account protocol @self is
304 * supported. Once checked, @func will be called with the result in the
307 * modest_account_protocol_is_supported() should return the cached response
310 void modest_account_protocol_check_support (ModestAccountProtocol *self,
311 ModestAccountProtocolCheckSupportFunc func,
314 * modest_account_protocol_is_supported:
315 * @self: a #ModestAccountProtocol
317 * Determines if the account protocol is supported on this device.
319 * Returns: %TRUE if the protocol is supported, %FALSE otherwise
321 gboolean modest_account_protocol_is_supported (ModestAccountProtocol *self);
324 * modest_account_protocol_get_from:
325 * @self: a #ModestAccountProtocol
326 * @account_id: a transport account name
327 * @mailbox: a mailbox
329 * Obtain the From: string for the account and mailbox. Should be used only
330 * with transports with multi mailbox support.
332 * Returns: a newly allocated string
334 gchar *modest_account_protocol_get_from (ModestAccountProtocol *self,
335 const gchar *account_id,
336 const gchar *mailbox);
339 * modest_account_protocol_get_from_list:
340 * @self: a #ModestAccountProtocol
341 * @account_id: a transport account name
343 * Obtain a list of pairs (mailbox - From: string) for filling the From picker.
345 * Returns: a ModestPairList
347 ModestPairList *modest_account_protocol_get_from_list (ModestAccountProtocol *self,
348 const gchar *account_id);
351 * modest_account_protocol_get_signature:
352 * @self: a #ModestAccountProtocol
353 * @account_id: a transport account name
354 * @mailbox: a mailbox
356 * Obtain the signature string for the account and mailbox. Should be used only
357 * with transports with multi mailbox support.
359 * Returns: a newly allocated string
361 gchar *modest_account_protocol_get_signature (ModestAccountProtocol *self,
362 const gchar *account_id,
363 const gchar *mailbox,
364 gboolean *has_signature);
368 #endif /* __MODEST_ACCOUNT_PROTOCOL_H__ */