bf5db3b9d4b2301b2b828a85d0e1ea049a2b8f64
[claws.git] / src / etpan / imap-thread.h
1 /*
2  * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
3  * Copyright (C) 2005-2007 DINH Viet Hoa and the Claws Mail team
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  * 
18  */
19
20 #ifndef IMAP_THREAD_H
21
22 #define IMAP_THREAD_H
23
24 #include <libetpan/libetpan.h>
25 #include "folder.h"
26
27 #define IMAP_SET_MAX_COUNT 100
28
29 void imap_main_set_timeout(int sec);
30 void imap_main_init(gboolean skip_ssl_cert_check);
31 void imap_main_done(void);
32
33 void imap_init(Folder * folder);
34 void imap_done(Folder * folder);
35
36 int imap_threaded_connect(Folder * folder, const char * server, int port);
37 int imap_threaded_connect_ssl(Folder * folder, const char * server, int port);
38 struct mailimap_capability_data * imap_threaded_capability(Folder *folder, int *ok);
39 int imap_threaded_connect_cmd(Folder * folder, const char * command,
40                               const char * server, int port);
41
42 void imap_threaded_disconnect(Folder * folder);
43
44 int imap_threaded_list(Folder * folder, const char * base,
45                        const char * wildcard,
46                        clist ** p_result);
47 int imap_threaded_lsub(Folder * folder, const char * base,
48                        const char * wildcard,
49                        clist ** p_result);
50 int imap_threaded_login(Folder * folder,
51                         const char * login, const char * password,
52                         const char * type);
53 int imap_threaded_status(Folder * folder, const char * mb,
54                 struct mailimap_mailbox_data_status ** data_status,
55                 guint mask);
56 int imap_threaded_close(Folder * folder);
57
58 int imap_threaded_noop(Folder * folder, unsigned int * p_exists);
59 int imap_threaded_starttls(Folder * folder, const gchar *host, int port);
60 int imap_threaded_create(Folder * folder, const char * mb);
61 int imap_threaded_rename(Folder * folder,
62                          const char * mb, const char * new_name);
63 int imap_threaded_delete(Folder * folder, const char * mb);
64 int imap_threaded_select(Folder * folder, const char * mb,
65                          gint * exists, gint * recent, gint * unseen,
66                          guint32 * uid_validity);
67 int imap_threaded_examine(Folder * folder, const char * mb,
68                           gint * exists, gint * recent, gint * unseen,
69                           guint32 * uid_validity);
70 int imap_threaded_subscribe(Folder * folder, const char * mb,
71                        gboolean subscribe);
72
73 enum {
74         IMAP_SEARCH_TYPE_SIMPLE,
75         IMAP_SEARCH_TYPE_SEEN,
76         IMAP_SEARCH_TYPE_UNSEEN,
77         IMAP_SEARCH_TYPE_ANSWERED,
78         IMAP_SEARCH_TYPE_FLAGGED,
79         IMAP_SEARCH_TYPE_DELETED,
80 };
81
82 int imap_threaded_search(Folder * folder, int search_type,
83                          struct mailimap_set * set, clist ** result);
84
85 int imap_threaded_fetch_uid(Folder * folder, uint32_t first_index,
86                             carray ** result);
87
88 void imap_fetch_uid_list_free(carray * uid_list);
89
90 int imap_threaded_fetch_uid_flags(Folder * folder, uint32_t first_index,
91                                   carray ** fetch_result);
92
93 void imap_fetch_uid_flags_list_free(carray * uid_flags_list);
94
95 int imap_threaded_fetch_content(Folder * folder, uint32_t msg_index,
96                                 int with_body,
97                                 const char * filename);
98
99 struct imap_fetch_env_info {
100         uint32_t uid;
101         char * headers;
102         uint32_t size;
103         int flags;
104 };
105
106 int imap_threaded_fetch_env(Folder * folder, struct mailimap_set * set,
107                             carray ** p_env_list);
108
109 void imap_fetch_env_free(carray * env_list);
110
111 int imap_threaded_append(Folder * folder, const char * mailbox,
112                          const char * filename,
113                          struct mailimap_flag_list * flag_list,
114                          int *uid);
115
116 int imap_threaded_expunge(Folder * folder);
117
118 int imap_threaded_copy(Folder * folder, struct mailimap_set * set,
119                        const char * mb, struct mailimap_set **source,
120                        struct mailimap_set **dest);
121
122 int imap_threaded_store(Folder * folder, struct mailimap_set * set,
123                         struct mailimap_store_att_flags * store_att_flags);
124
125 void imap_threaded_cancel(Folder * folder);
126
127 #endif