1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /*
3  * SPDX-FileCopyrightText: (C) 2020 Red Hat (www.redhat.com)
4  * SPDX-License-Identifier: LGPL-2.1-or-later
5  */
6 
7 #ifndef CAMEL_M365_SETTINGS_H
8 #define CAMEL_M365_SETTINGS_H
9 
10 #include <camel/camel.h>
11 
12 /* Standard GObject macros */
13 #define CAMEL_TYPE_M365_SETTINGS \
14 	(camel_m365_settings_get_type ())
15 #define CAMEL_M365_SETTINGS(obj) \
16 	(G_TYPE_CHECK_INSTANCE_CAST \
17 	((obj), CAMEL_TYPE_M365_SETTINGS, CamelM365Settings))
18 #define CAMEL_M365_SETTINGS_CLASS(cls) \
19 	(G_TYPE_CHECK_CLASS_CAST \
20 	((cls), CAMEL_TYPE_M365_SETTINGS, CamelM365SettingsClass))
21 #define CAMEL_IS_M365_SETTINGS(obj) \
22 	(G_TYPE_CHECK_INSTANCE_TYPE \
23 	((obj), CAMEL_TYPE_M365_SETTINGS))
24 #define CAMEL_IS_M365_SETTINGS_CLASS(cls) \
25 	(G_TYPE_CHECK_CLASS_TYPE \
26 	((cls), CAMEL_TYPE_M365_SETTINGS))
27 #define CAMEL_M365_SETTINGS_GET_CLASS(obj) \
28 	(G_TYPE_INSTANCE_GET_CLASS \
29 	((obj), CAMEL_TYPE_M365_SETTINGS))
30 
31 #define MIN_CONCURRENT_CONNECTIONS 1
32 #define MAX_CONCURRENT_CONNECTIONS 7
33 
34 G_BEGIN_DECLS
35 
36 /* Forward declaration, to not include libedataserver.h/libebackend.h here */
37 struct _EBackend;
38 struct _ESourceRegistry;
39 
40 typedef struct _CamelM365Settings CamelM365Settings;
41 typedef struct _CamelM365SettingsClass CamelM365SettingsClass;
42 typedef struct _CamelM365SettingsPrivate CamelM365SettingsPrivate;
43 
44 struct _CamelM365Settings {
45 	CamelOfflineSettings parent;
46 	CamelM365SettingsPrivate *priv;
47 };
48 
49 struct _CamelM365SettingsClass {
50 	CamelOfflineSettingsClass parent_class;
51 };
52 
53 GType		camel_m365_settings_get_type	(void) G_GNUC_CONST;
54 CamelM365Settings *
55 		camel_m365_settings_get_from_backend
56 						(struct _EBackend *backend,
57 						 struct _ESourceRegistry *registry);
58 void		camel_m365_settings_lock	(CamelM365Settings *settings);
59 void		camel_m365_settings_unlock	(CamelM365Settings *settings);
60 gboolean	camel_m365_settings_get_use_impersonation
61 						(CamelM365Settings *settings);
62 void		camel_m365_settings_set_use_impersonation
63 						(CamelM365Settings *settings,
64 						 gboolean use_impersonation);
65 const gchar *	camel_m365_settings_get_impersonate_user
66 						(CamelM365Settings *settings);
67 gchar *		camel_m365_settings_dup_impersonate_user
68 						(CamelM365Settings *settings);
69 void		camel_m365_settings_set_impersonate_user
70 						(CamelM365Settings *settings,
71 						 const gchar *impersonate_user);
72 gboolean	camel_m365_settings_get_check_all
73 						(CamelM365Settings *settings);
74 void		camel_m365_settings_set_check_all
75 						(CamelM365Settings *settings,
76 						 gboolean check_all);
77 const gchar *	camel_m365_settings_get_email	(CamelM365Settings *settings);
78 gchar *		camel_m365_settings_dup_email	(CamelM365Settings *settings);
79 void		camel_m365_settings_set_email	(CamelM365Settings *settings,
80 						 const gchar *email);
81 gboolean	camel_m365_settings_get_filter_junk
82 						(CamelM365Settings *settings);
83 void		camel_m365_settings_set_filter_junk
84 						(CamelM365Settings *settings,
85 						 gboolean filter_junk);
86 gboolean	camel_m365_settings_get_filter_junk_inbox
87 						(CamelM365Settings *settings);
88 void		camel_m365_settings_set_filter_junk_inbox
89 						(CamelM365Settings *settings,
90 						 gboolean filter_junk_inbox);
91 guint		camel_m365_settings_get_timeout	(CamelM365Settings *settings);
92 void		camel_m365_settings_set_timeout	(CamelM365Settings *settings,
93 						 guint timeout);
94 gboolean	camel_m365_settings_get_override_oauth2
95 						(CamelM365Settings *settings);
96 void		camel_m365_settings_set_override_oauth2
97 						(CamelM365Settings *settings,
98 						 gboolean override_oauth2);
99 const gchar *	camel_m365_settings_get_oauth2_tenant
100 						(CamelM365Settings *settings);
101 gchar *		camel_m365_settings_dup_oauth2_tenant
102 						(CamelM365Settings *settings);
103 void		camel_m365_settings_set_oauth2_tenant
104 						(CamelM365Settings *settings,
105 						 const gchar *tenant);
106 const gchar *	camel_m365_settings_get_oauth2_client_id
107 						(CamelM365Settings *settings);
108 gchar *		camel_m365_settings_dup_oauth2_client_id
109 						(CamelM365Settings *settings);
110 void		camel_m365_settings_set_oauth2_client_id
111 						(CamelM365Settings *settings,
112 						 const gchar *client_id);
113 const gchar *	camel_m365_settings_get_oauth2_redirect_uri
114 						(CamelM365Settings *settings);
115 gchar *		camel_m365_settings_dup_oauth2_redirect_uri
116 						(CamelM365Settings *settings);
117 void		camel_m365_settings_set_oauth2_redirect_uri
118 						(CamelM365Settings *settings,
119 						 const gchar *redirect_uri);
120 const gchar *	camel_m365_settings_get_oauth2_endpoint_host
121 						(CamelM365Settings *settings);
122 gchar *		camel_m365_settings_dup_oauth2_endpoint_host
123 						(CamelM365Settings *settings);
124 void		camel_m365_settings_set_oauth2_endpoint_host
125 						(CamelM365Settings *settings,
126 						 const gchar *endpoint_host);
127 guint		camel_m365_settings_get_concurrent_connections
128 						(CamelM365Settings *settings);
129 void		camel_m365_settings_set_concurrent_connections
130 						(CamelM365Settings *settings,
131 						 guint concurrent_connections);
132 
133 G_END_DECLS
134 
135 #endif /* CAMEL_M365_SETTINGS_H */
136