aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-config.h
blob: a997802c6db07e5ec1afaf888268d6ce278f88c6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
 *  Authors: Jeffrey Stedfast <fejj@ximian.com>
 *
 *  Copyright 2001 Ximian, Inc. (www.ximian.com)
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
 *
 */

#ifndef MAIL_CONFIG_H
#define MAIL_CONFIG_H

#include <glib.h>
#include <camel/camel.h>

#ifdef __cplusplus
extern "C" {
#pragma }
#endif /* __cplusplus */

typedef struct {
    gchar *name;
    gchar *address;
    gchar *organization;
    gchar *signature;
    gchar *html_signature;
    gboolean has_html_signature;
} MailConfigIdentity;

typedef struct {
    gchar *url;
    gboolean keep_on_server;
    gboolean auto_check;
    gint auto_check_time;
    gboolean save_passwd;
    gboolean enabled;
} MailConfigService;

typedef struct {
    gchar *name;
    
    MailConfigIdentity *id;
    MailConfigService *source;
    MailConfigService *transport;
    
    gchar *drafts_folder_name, *drafts_folder_uri;
    gchar *sent_folder_name, *sent_folder_uri;
    
    gchar *pgp_key;
    gboolean pgp_encrypt_to_self;
    
    gchar *smime_key;
    gboolean smime_encrypt_to_self;
} MailConfigAccount;

typedef enum {
    MAIL_CONFIG_HTTP_NEVER, MAIL_CONFIG_HTTP_SOMETIMES,
    MAIL_CONFIG_HTTP_ALWAYS
} MailConfigHTTPMode;

typedef enum {
    MAIL_CONFIG_FORWARD_ATTACHED, MAIL_CONFIG_FORWARD_INLINE,
    MAIL_CONFIG_FORWARD_QUOTED
} MailConfigForwardStyle;

typedef enum {
    MAIL_CONFIG_DISPLAY_NORMAL, MAIL_CONFIG_DISPLAY_FULL_HEADERS,
    MAIL_CONFIG_DISPLAY_SOURCE,
    MAIL_CONFIG_DISPLAY_MAX
} MailConfigDisplayStyle;

/* Identities */
MailConfigIdentity *identity_copy (const MailConfigIdentity *id);
void                identity_destroy (MailConfigIdentity *id);

/* Services */
MailConfigService *service_copy (const MailConfigService *source);
void               service_destroy (MailConfigService *source);
void               service_destroy_each (gpointer item, gpointer data);

/* Accounts */
MailConfigAccount *account_copy (const MailConfigAccount *account);
void               account_destroy (MailConfigAccount *account);
void               account_destroy_each (gpointer item, gpointer data);

/* Configuration */
void mail_config_init (void);
void mail_config_clear (void);
void mail_config_write (void);
void mail_config_write_on_exit (void);

/* General Accessor functions */
gboolean mail_config_is_configured            (void);

gboolean mail_config_get_empty_trash_on_exit  (void);
void     mail_config_set_empty_trash_on_exit  (gboolean value);

gboolean mail_config_get_thread_list          (const char *uri);
void     mail_config_set_thread_list          (const char *uri, gboolean value);

gboolean mail_config_get_show_preview         (const char *uri);
void     mail_config_set_show_preview         (const char *uri, gboolean value);

gboolean mail_config_get_hide_deleted         (void);
void     mail_config_set_hide_deleted         (gboolean value);

gint     mail_config_get_paned_size           (void);
void     mail_config_set_paned_size           (gint size);

gboolean mail_config_get_send_html            (void);
void     mail_config_set_send_html            (gboolean send_html);

gboolean mail_config_get_citation_highlight   (void);
void     mail_config_set_citation_highlight   (gboolean);

guint32  mail_config_get_citation_color       (void);
void     mail_config_set_citation_color       (guint32);

gint     mail_config_get_do_seen_timeout      (void);
void     mail_config_set_do_seen_timeout      (gboolean do_seen_timeout);

gint     mail_config_get_mark_as_seen_timeout (void);
void     mail_config_set_mark_as_seen_timeout (gint timeout);

gboolean mail_config_get_prompt_empty_subject (void);
void     mail_config_set_prompt_empty_subject (gboolean value);

gboolean mail_config_get_prompt_only_bcc (void);
void     mail_config_set_prompt_only_bcc (gboolean value);

CamelPgpType mail_config_get_pgp_type (void);
void         mail_config_set_pgp_type (CamelPgpType pgp_type);

const char *mail_config_get_pgp_path (void);
void        mail_config_set_pgp_path (const char *pgp_path);

gboolean    mail_config_get_remember_pgp_passphrase (void);
void        mail_config_set_remember_pgp_passphrase (gboolean value);

MailConfigHTTPMode mail_config_get_http_mode (void);
void               mail_config_set_http_mode (MailConfigHTTPMode);

MailConfigForwardStyle mail_config_get_default_forward_style (void);
void                   mail_config_set_default_forward_style (MailConfigForwardStyle style);

MailConfigDisplayStyle mail_config_get_message_display_style (void);
void                   mail_config_set_message_display_style (MailConfigDisplayStyle style);

const char *mail_config_get_default_charset (void);
void        mail_config_set_default_charset (const char *charset);

void mail_config_service_set_save_passwd (MailConfigService *service, gboolean save_passwd);

const MailConfigAccount  *mail_config_get_default_account       (void);
gint                      mail_config_get_default_account_num   (void);
const MailConfigAccount  *mail_config_get_account_by_name       (const char *account_name);
const MailConfigAccount  *mail_config_get_account_by_source_url (const char *url);
const MailConfigAccount  *mail_config_get_account_by_transport_url (const char *url);
const GSList             *mail_config_get_accounts              (void);
void                      mail_config_add_account               (MailConfigAccount *account);
const GSList             *mail_config_remove_account            (MailConfigAccount *account);

void                      mail_config_set_default_account       (const MailConfigAccount *account);

const MailConfigIdentity *mail_config_get_default_identity (void);
const MailConfigService  *mail_config_get_default_transport (void);

const MailConfigService  *mail_config_get_default_news    (void);
const GSList             *mail_config_get_news            (void);
void                      mail_config_add_news            (MailConfigService *news);
const GSList             *mail_config_remove_news         (MailConfigService *news);
GtkType evolution_mail_config_get_type (void);

/* convenience functions to help ease the transition over to the new codebase */
GSList *mail_config_get_sources (void);

/* static utility functions */
char *mail_config_folder_to_cachename (CamelFolder *folder, const char *prefix);

gboolean  mail_config_check_service (const char *url, CamelProviderType type, GList **authtypes);



void evolution_mail_config_factory_init (void);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* MAIL_CONFIG_H */