"Fossies" - the Fresh Open Source Software Archive 
Member "evolution-mapi-3.46.1/src/libexchangemapi/camel-mapi-settings.c" (2 Dec 2022, 15703 Bytes) of package /linux/misc/evolution-mapi-3.46.1.tar.xz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "camel-mapi-settings.c" see the
Fossies "Dox" file reference documentation.
1 /*
2 * camel-mapi-settings.c
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) version 3.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with the program; if not, see <http://www.gnu.org/licenses/>
16 *
17 */
18
19 #include "camel-mapi-settings.h"
20
21 struct _CamelMapiSettingsPrivate {
22 GMutex property_lock;
23
24 gboolean check_all;
25 gboolean filter_junk;
26 gboolean filter_junk_inbox;
27 gboolean kerberos;
28 gboolean listen_notifications;
29
30 gchar *domain;
31 gchar *profile;
32 gchar *realm;
33 };
34
35 enum {
36 PROP_0,
37 PROP_AUTH_MECHANISM,
38 PROP_CHECK_ALL,
39 PROP_DOMAIN,
40 PROP_FILTER_JUNK,
41 PROP_FILTER_JUNK_INBOX,
42 PROP_HOST,
43 PROP_KERBEROS,
44 PROP_PORT,
45 PROP_PROFILE,
46 PROP_REALM,
47 PROP_SECURITY_METHOD,
48 PROP_USER,
49 PROP_LISTEN_NOTIFICATIONS
50 };
51
52 G_DEFINE_TYPE_WITH_CODE (
53 CamelMapiSettings,
54 camel_mapi_settings,
55 CAMEL_TYPE_OFFLINE_SETTINGS,
56 G_ADD_PRIVATE (CamelMapiSettings)
57 G_IMPLEMENT_INTERFACE (
58 CAMEL_TYPE_NETWORK_SETTINGS, NULL))
59
60 static void
61 mapi_settings_set_property (GObject *object,
62 guint property_id,
63 const GValue *value,
64 GParamSpec *pspec)
65 {
66 switch (property_id) {
67 case PROP_AUTH_MECHANISM:
68 camel_network_settings_set_auth_mechanism (
69 CAMEL_NETWORK_SETTINGS (object),
70 g_value_get_string (value));
71 return;
72
73 case PROP_CHECK_ALL:
74 camel_mapi_settings_set_check_all (
75 CAMEL_MAPI_SETTINGS (object),
76 g_value_get_boolean (value));
77 return;
78
79 case PROP_DOMAIN:
80 camel_mapi_settings_set_domain (
81 CAMEL_MAPI_SETTINGS (object),
82 g_value_get_string (value));
83 return;
84
85 case PROP_FILTER_JUNK:
86 camel_mapi_settings_set_filter_junk (
87 CAMEL_MAPI_SETTINGS (object),
88 g_value_get_boolean (value));
89 return;
90
91 case PROP_FILTER_JUNK_INBOX:
92 camel_mapi_settings_set_filter_junk_inbox (
93 CAMEL_MAPI_SETTINGS (object),
94 g_value_get_boolean (value));
95 return;
96
97 case PROP_HOST:
98 camel_network_settings_set_host (
99 CAMEL_NETWORK_SETTINGS (object),
100 g_value_get_string (value));
101 return;
102
103 case PROP_KERBEROS:
104 camel_mapi_settings_set_kerberos (
105 CAMEL_MAPI_SETTINGS (object),
106 g_value_get_boolean (value));
107 return;
108
109 case PROP_PORT:
110 camel_network_settings_set_port (
111 CAMEL_NETWORK_SETTINGS (object),
112 g_value_get_uint (value));
113 return;
114
115 case PROP_PROFILE:
116 camel_mapi_settings_set_profile (
117 CAMEL_MAPI_SETTINGS (object),
118 g_value_get_string (value));
119 return;
120
121 case PROP_REALM:
122 camel_mapi_settings_set_realm (
123 CAMEL_MAPI_SETTINGS (object),
124 g_value_get_string (value));
125 return;
126
127 case PROP_SECURITY_METHOD:
128 camel_network_settings_set_security_method (
129 CAMEL_NETWORK_SETTINGS (object),
130 g_value_get_enum (value));
131 return;
132
133 case PROP_USER:
134 camel_network_settings_set_user (
135 CAMEL_NETWORK_SETTINGS (object),
136 g_value_get_string (value));
137 return;
138
139 case PROP_LISTEN_NOTIFICATIONS:
140 camel_mapi_settings_set_listen_notifications (
141 CAMEL_MAPI_SETTINGS (object),
142 g_value_get_boolean (value));
143 return;
144
145 }
146
147 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
148 }
149
150 static void
151 mapi_settings_get_property (GObject *object,
152 guint property_id,
153 GValue *value,
154 GParamSpec *pspec)
155 {
156 switch (property_id) {
157 case PROP_AUTH_MECHANISM:
158 g_value_set_string (
159 value,
160 camel_network_settings_get_auth_mechanism (
161 CAMEL_NETWORK_SETTINGS (object)));
162 return;
163
164 case PROP_CHECK_ALL:
165 g_value_set_boolean (
166 value,
167 camel_mapi_settings_get_check_all (
168 CAMEL_MAPI_SETTINGS (object)));
169 return;
170
171 case PROP_DOMAIN:
172 g_value_set_string (
173 value,
174 camel_mapi_settings_get_domain (
175 CAMEL_MAPI_SETTINGS (object)));
176 return;
177
178 case PROP_FILTER_JUNK:
179 g_value_set_boolean (
180 value,
181 camel_mapi_settings_get_filter_junk (
182 CAMEL_MAPI_SETTINGS (object)));
183 return;
184
185 case PROP_FILTER_JUNK_INBOX:
186 g_value_set_boolean (
187 value,
188 camel_mapi_settings_get_filter_junk_inbox (
189 CAMEL_MAPI_SETTINGS (object)));
190 return;
191
192 case PROP_HOST:
193 g_value_set_string (
194 value,
195 camel_network_settings_get_host (
196 CAMEL_NETWORK_SETTINGS (object)));
197 return;
198
199 case PROP_KERBEROS:
200 g_value_set_boolean (
201 value,
202 camel_mapi_settings_get_kerberos (
203 CAMEL_MAPI_SETTINGS (object)));
204 return;
205
206 case PROP_PORT:
207 g_value_set_uint (
208 value,
209 camel_network_settings_get_port (
210 CAMEL_NETWORK_SETTINGS (object)));
211 return;
212
213 case PROP_PROFILE:
214 g_value_set_string (
215 value,
216 camel_mapi_settings_get_profile (
217 CAMEL_MAPI_SETTINGS (object)));
218 return;
219
220 case PROP_REALM:
221 g_value_set_string (
222 value,
223 camel_mapi_settings_get_realm (
224 CAMEL_MAPI_SETTINGS (object)));
225 return;
226
227 case PROP_SECURITY_METHOD:
228 g_value_set_enum (
229 value,
230 camel_network_settings_get_security_method (
231 CAMEL_NETWORK_SETTINGS (object)));
232 return;
233
234 case PROP_USER:
235 g_value_set_string (
236 value,
237 camel_network_settings_get_user (
238 CAMEL_NETWORK_SETTINGS (object)));
239 return;
240
241 case PROP_LISTEN_NOTIFICATIONS:
242 g_value_set_boolean (
243 value,
244 camel_mapi_settings_get_listen_notifications (
245 CAMEL_MAPI_SETTINGS (object)));
246 return;
247 }
248
249 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
250 }
251
252 static void
253 mapi_settings_finalize (GObject *object)
254 {
255 CamelMapiSettings *mapi_settings = CAMEL_MAPI_SETTINGS (object);
256
257 g_mutex_clear (&mapi_settings->priv->property_lock);
258
259 g_free (mapi_settings->priv->domain);
260 g_free (mapi_settings->priv->profile);
261 g_free (mapi_settings->priv->realm);
262
263 /* Chain up to parent's finalize() method. */
264 G_OBJECT_CLASS (camel_mapi_settings_parent_class)->finalize (object);
265 }
266
267 static void
268 camel_mapi_settings_class_init (CamelMapiSettingsClass *class)
269 {
270 GObjectClass *object_class;
271
272 object_class = G_OBJECT_CLASS (class);
273 object_class->set_property = mapi_settings_set_property;
274 object_class->get_property = mapi_settings_get_property;
275 object_class->finalize = mapi_settings_finalize;
276
277 /* Inherited from CamelNetworkSettings. */
278 g_object_class_override_property (
279 object_class,
280 PROP_AUTH_MECHANISM,
281 "auth-mechanism");
282
283 g_object_class_install_property (
284 object_class,
285 PROP_CHECK_ALL,
286 g_param_spec_boolean (
287 "check-all",
288 "Check All",
289 "Check all folders for new messages",
290 FALSE,
291 G_PARAM_READWRITE |
292 G_PARAM_CONSTRUCT |
293 G_PARAM_STATIC_STRINGS));
294
295 g_object_class_install_property (
296 object_class,
297 PROP_DOMAIN,
298 g_param_spec_string (
299 "domain",
300 "Domain",
301 "Windows domain",
302 NULL,
303 G_PARAM_READWRITE |
304 G_PARAM_CONSTRUCT |
305 G_PARAM_STATIC_STRINGS));
306
307 g_object_class_install_property (
308 object_class,
309 PROP_FILTER_JUNK,
310 g_param_spec_boolean (
311 "filter-junk",
312 "Filter Junk",
313 "Whether to filter junk from all folders",
314 FALSE,
315 G_PARAM_READWRITE |
316 G_PARAM_CONSTRUCT |
317 G_PARAM_STATIC_STRINGS));
318
319 g_object_class_install_property (
320 object_class,
321 PROP_FILTER_JUNK_INBOX,
322 g_param_spec_boolean (
323 "filter-junk-inbox",
324 "Filter Junk Inbox",
325 "Whether to filter junk from Inbox only",
326 FALSE,
327 G_PARAM_READWRITE |
328 G_PARAM_CONSTRUCT |
329 G_PARAM_STATIC_STRINGS));
330
331 /* Inherited from CamelNetworkSettings. */
332 g_object_class_override_property (
333 object_class,
334 PROP_HOST,
335 "host");
336
337 g_object_class_install_property (
338 object_class,
339 PROP_KERBEROS,
340 g_param_spec_boolean (
341 "kerberos",
342 "Kerberos",
343 "Use Kerberos authentication",
344 FALSE,
345 G_PARAM_READWRITE |
346 G_PARAM_CONSTRUCT |
347 G_PARAM_STATIC_STRINGS));
348
349 /* Inherited from CamelNetworkSettings. */
350 g_object_class_override_property (
351 object_class,
352 PROP_PORT,
353 "port");
354
355 g_object_class_install_property (
356 object_class,
357 PROP_PROFILE,
358 g_param_spec_string (
359 "profile",
360 "Profile",
361 "OpenChange user profile",
362 NULL,
363 G_PARAM_READWRITE |
364 G_PARAM_CONSTRUCT |
365 G_PARAM_STATIC_STRINGS));
366
367 g_object_class_install_property (
368 object_class,
369 PROP_REALM,
370 g_param_spec_string (
371 "realm",
372 "Realm",
373 "Kerberos realm",
374 NULL,
375 G_PARAM_READWRITE |
376 G_PARAM_CONSTRUCT |
377 G_PARAM_STATIC_STRINGS));
378
379 g_object_class_install_property (
380 object_class,
381 PROP_LISTEN_NOTIFICATIONS,
382 g_param_spec_boolean (
383 "listen-notifications",
384 "Listen Notifications",
385 "Whether to listen for server notifications",
386 TRUE,
387 G_PARAM_READWRITE |
388 G_PARAM_CONSTRUCT |
389 G_PARAM_STATIC_STRINGS));
390
391 /* Inherited from CamelNetworkSettings. */
392 g_object_class_override_property (
393 object_class,
394 PROP_SECURITY_METHOD,
395 "security-method");
396
397 /* Inherited from CamelNetworkSettings. */
398 g_object_class_override_property (
399 object_class,
400 PROP_USER,
401 "user");
402 }
403
404 static void
405 camel_mapi_settings_init (CamelMapiSettings *settings)
406 {
407 settings->priv = camel_mapi_settings_get_instance_private (settings);
408 g_mutex_init (&settings->priv->property_lock);
409 }
410
411 gboolean
412 camel_mapi_settings_get_check_all (CamelMapiSettings *settings)
413 {
414 g_return_val_if_fail (CAMEL_IS_MAPI_SETTINGS (settings), FALSE);
415
416 return settings->priv->check_all;
417 }
418
419 void
420 camel_mapi_settings_set_check_all (CamelMapiSettings *settings,
421 gboolean check_all)
422 {
423 g_return_if_fail (CAMEL_IS_MAPI_SETTINGS (settings));
424
425 if ((settings->priv->check_all ? 1 : 0) == (check_all ? 1 : 0))
426 return;
427
428 settings->priv->check_all = check_all;
429
430 g_object_notify (G_OBJECT (settings), "check-all");
431 }
432
433 const gchar *
434 camel_mapi_settings_get_domain (CamelMapiSettings *settings)
435 {
436 g_return_val_if_fail (CAMEL_IS_MAPI_SETTINGS (settings), NULL);
437
438 return settings->priv->domain;
439 }
440
441 gchar *
442 camel_mapi_settings_dup_domain (CamelMapiSettings *settings)
443 {
444 const gchar *protected;
445 gchar *duplicate;
446
447 g_return_val_if_fail (CAMEL_IS_MAPI_SETTINGS (settings), NULL);
448
449 g_mutex_lock (&settings->priv->property_lock);
450
451 protected = camel_mapi_settings_get_domain (settings);
452 duplicate = g_strdup (protected);
453
454 g_mutex_unlock (&settings->priv->property_lock);
455
456 return duplicate;
457 }
458
459 void
460 camel_mapi_settings_set_domain (CamelMapiSettings *settings,
461 const gchar *domain)
462 {
463 g_return_if_fail (CAMEL_IS_MAPI_SETTINGS (settings));
464
465 /* The value should never be NULL. */
466 if (domain == NULL)
467 domain = "";
468
469 g_mutex_lock (&settings->priv->property_lock);
470
471 if (g_strcmp0 (settings->priv->domain, domain) == 0) {
472 g_mutex_unlock (&settings->priv->property_lock);
473 return;
474 }
475
476 g_free (settings->priv->domain);
477 settings->priv->domain = g_strdup (domain);
478
479 g_mutex_unlock (&settings->priv->property_lock);
480
481 g_object_notify (G_OBJECT (settings), "domain");
482 }
483
484 gboolean
485 camel_mapi_settings_get_filter_junk (CamelMapiSettings *settings)
486 {
487 g_return_val_if_fail (CAMEL_IS_MAPI_SETTINGS (settings), FALSE);
488
489 return settings->priv->filter_junk;
490 }
491
492 void
493 camel_mapi_settings_set_filter_junk (CamelMapiSettings *settings,
494 gboolean filter_junk)
495 {
496 g_return_if_fail (CAMEL_IS_MAPI_SETTINGS (settings));
497
498 if ((settings->priv->filter_junk ? 1 : 0) == (filter_junk ? 1 : 0))
499 return;
500
501 settings->priv->filter_junk = filter_junk;
502
503 g_object_notify (G_OBJECT (settings), "filter-junk");
504 }
505
506 gboolean
507 camel_mapi_settings_get_filter_junk_inbox (CamelMapiSettings *settings)
508 {
509 g_return_val_if_fail (CAMEL_IS_MAPI_SETTINGS (settings), FALSE);
510
511 return settings->priv->filter_junk_inbox;
512 }
513
514 void
515 camel_mapi_settings_set_filter_junk_inbox (CamelMapiSettings *settings,
516 gboolean filter_junk_inbox)
517 {
518 g_return_if_fail (CAMEL_IS_MAPI_SETTINGS (settings));
519
520 if ((settings->priv->filter_junk_inbox ? 1 : 0) == (filter_junk_inbox ? 1 : 0))
521 return;
522
523 settings->priv->filter_junk_inbox = filter_junk_inbox;
524
525 g_object_notify (G_OBJECT (settings), "filter-junk-inbox");
526 }
527
528 gboolean
529 camel_mapi_settings_get_kerberos (CamelMapiSettings *settings)
530 {
531 g_return_val_if_fail (CAMEL_IS_MAPI_SETTINGS (settings), FALSE);
532
533 return settings->priv->kerberos;
534 }
535
536 void
537 camel_mapi_settings_set_kerberos (CamelMapiSettings *settings,
538 gboolean kerberos)
539 {
540 g_return_if_fail (CAMEL_IS_MAPI_SETTINGS (settings));
541
542 if ((settings->priv->kerberos ? 1 : 0) == (kerberos ? 1 : 0))
543 return;
544
545 settings->priv->kerberos = kerberos;
546
547 g_object_notify (G_OBJECT (settings), "kerberos");
548 }
549
550 const gchar *
551 camel_mapi_settings_get_profile (CamelMapiSettings *settings)
552 {
553 g_return_val_if_fail (CAMEL_IS_MAPI_SETTINGS (settings), NULL);
554
555 return settings->priv->profile;
556 }
557
558 gchar *
559 camel_mapi_settings_dup_profile (CamelMapiSettings *settings)
560 {
561 const gchar *protected;
562 gchar *duplicate;
563
564 g_return_val_if_fail (CAMEL_IS_MAPI_SETTINGS (settings), NULL);
565
566 g_mutex_lock (&settings->priv->property_lock);
567
568 protected = camel_mapi_settings_get_profile (settings);
569 duplicate = g_strdup (protected);
570
571 g_mutex_unlock (&settings->priv->property_lock);
572
573 return duplicate;
574 }
575
576 void
577 camel_mapi_settings_set_profile (CamelMapiSettings *settings,
578 const gchar *profile)
579 {
580 g_return_if_fail (CAMEL_IS_MAPI_SETTINGS (settings));
581
582 g_mutex_lock (&settings->priv->property_lock);
583
584 if (g_strcmp0 (settings->priv->profile, profile) == 0) {
585 g_mutex_unlock (&settings->priv->property_lock);
586 return;
587 }
588
589 g_free (settings->priv->profile);
590 settings->priv->profile = g_strdup (profile);
591
592 g_mutex_unlock (&settings->priv->property_lock);
593
594 g_object_notify (G_OBJECT (settings), "profile");
595 }
596
597 const gchar *
598 camel_mapi_settings_get_realm (CamelMapiSettings *settings)
599 {
600 g_return_val_if_fail (CAMEL_IS_MAPI_SETTINGS (settings), NULL);
601
602 return settings->priv->realm;
603 }
604
605 gchar *
606 camel_mapi_settings_dup_realm (CamelMapiSettings *settings)
607 {
608 const gchar *protected;
609 gchar *duplicate;
610
611 g_return_val_if_fail (CAMEL_IS_MAPI_SETTINGS (settings), NULL);
612
613 g_mutex_lock (&settings->priv->property_lock);
614
615 protected = camel_mapi_settings_get_realm (settings);
616 duplicate = g_strdup (protected);
617
618 g_mutex_unlock (&settings->priv->property_lock);
619
620 return duplicate;
621 }
622
623 void
624 camel_mapi_settings_set_realm (CamelMapiSettings *settings,
625 const gchar *realm)
626 {
627 g_return_if_fail (CAMEL_IS_MAPI_SETTINGS (settings));
628
629 /* The value should never be NULL. */
630 if (realm == NULL)
631 realm = "";
632
633 g_mutex_lock (&settings->priv->property_lock);
634
635 if (g_strcmp0 (settings->priv->realm, realm) == 0) {
636 g_mutex_unlock (&settings->priv->property_lock);
637 return;
638 }
639
640 g_free (settings->priv->realm);
641 settings->priv->realm = g_strdup (realm);
642
643 g_mutex_unlock (&settings->priv->property_lock);
644
645 g_object_notify (G_OBJECT (settings), "realm");
646 }
647
648 gboolean
649 camel_mapi_settings_get_listen_notifications (CamelMapiSettings *settings)
650 {
651 g_return_val_if_fail (CAMEL_IS_MAPI_SETTINGS (settings), FALSE);
652
653 return settings->priv->listen_notifications;
654 }
655
656 void
657 camel_mapi_settings_set_listen_notifications (CamelMapiSettings *settings,
658 gboolean listen_notifications)
659 {
660 g_return_if_fail (CAMEL_IS_MAPI_SETTINGS (settings));
661
662 if ((settings->priv->listen_notifications ? 1 : 0) == (listen_notifications ? 1 : 0))
663 return;
664
665 settings->priv->listen_notifications = listen_notifications;
666
667 g_object_notify (G_OBJECT (settings), "listen-notifications");
668 }