aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-ops.h
blob: 55816ca24b5811913cf27d1fd9aeae69f82b5eb7 (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
/*
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) version 3.
 *
 * 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with the program; if not, see <http://www.gnu.org/licenses/>
 *
 *
 * Authors:
 *      Peter Williams <peterw@ximian.com>
 *      Michael Zucchi <notzed@ximian.com>
 *
 * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
 *
 */

#ifndef MAIL_OPS_H
#define MAIL_OPS_H

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

#include "mail-mt.h"

#include "camel/camel-store.h"
#include "camel/camel-folder.h"
#include "camel/camel-filter-driver.h"
#include "camel/camel-mime-message.h"
#include "camel/camel-operation.h"

#include "libedataserver/e-account.h"

void mail_append_mail (CamelFolder *folder, CamelMimeMessage *message, CamelMessageInfo *info,
               void (*done)(CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, int ok,
                    const char *appended_uid, void *data),
               void *data);

void mail_transfer_messages (CamelFolder *source, GPtrArray *uids,
                 gboolean delete_from_source,
                 const char *dest_uri,
                 guint32 dest_flags,
                 void (*done) (gboolean ok, void *data),
                 void *data);

/* get a single message, asynchronously */
void mail_get_message (CamelFolder *folder, const char *uid,
               void (*done) (CamelFolder *folder, const char *uid, CamelMimeMessage *msg, void *data),
               void *data,
               MailMsgDispatchFunc dispatch);

CamelOperation *
mail_get_messagex(CamelFolder *folder, const char *uid,
          void (*done) (CamelFolder *folder, const char *uid, CamelMimeMessage *msg, void *data, CamelException *),
          void *data, MailMsgDispatchFunc dispatch);

/* get several messages */
void mail_get_messages (CamelFolder *folder, GPtrArray *uids,
            void (*done) (CamelFolder *folder, GPtrArray *uids, GPtrArray *msgs, void *data),
            void *data);

/* same for a folder */
int mail_get_folder (const char *uri, guint32 flags,
             void (*done) (char *uri, CamelFolder *folder, void *data), void *data,
             MailMsgDispatchFunc dispatch);

/* get quota information for a folder */
int mail_get_folder_quota (CamelFolder *folder,
         const gchar *folder_uri,
         void (*done)(CamelFolder *folder, const gchar *folder_uri, CamelFolderQuotaInfo *quota, void *data),
         void *data, MailMsgDispatchFunc dispatch);

/* and for a store */
int mail_get_store (const char *uri, CamelOperation *op,
            void (*done) (char *uri, CamelStore *store, void *data), void *data);

/* build an attachment */
void mail_build_attachment (CamelFolder *folder, GPtrArray *uids,
                void (*done)(CamelFolder *folder, GPtrArray *messages,
                     CamelMimePart *part, char *subject, void *data),
                void *data);

void mail_sync_folder (CamelFolder *folder,
               void (*done) (CamelFolder *folder, void *data), void *data);

void mail_sync_store(CamelStore *store, int expunge,
             void (*done) (CamelStore *store, void *data), void *data);

void mail_refresh_folder (CamelFolder *folder,
              void (*done) (CamelFolder *folder, void *data),
              void *data);

void mail_expunge_folder (CamelFolder *folder,
              void (*done) (CamelFolder *folder, void *data),
              void *data);

void mail_empty_trash (EAccount *account,
               void (*done) (EAccount *account, void *data),
               void *data);

/* get folder info asynchronously */
int mail_get_folderinfo (CamelStore *store, CamelOperation *op,
             gboolean (*done)(CamelStore *store, CamelFolderInfo *info, void *data),
             void *data);

/* remove an existing folder */
void mail_remove_folder (CamelFolder *folder,
             void (*done) (CamelFolder *folder, gboolean removed, CamelException *ex, void *data),
             void *data);

/* transfer (copy/move) a folder */
void mail_xfer_folder (const char *src_uri, const char *dest_uri, gboolean remove_source,
               void (*done) (char *src_uri, char *dest_uri, gboolean remove_source,
                     CamelFolder *folder, void *data),
               void *data);

/* save messages */
int mail_save_messages (CamelFolder *folder, GPtrArray *uids, const char *path,
            void (*done) (CamelFolder *folder, GPtrArray *uids, char *path, void *data),
            void *data);

int mail_save_part (CamelMimePart *part, const char *path,
            void (*done)(CamelMimePart *part, char *path, int saved, void *data),
            void *data, gboolean readonly);

/* yeah so this is messy, but it does a lot, maybe i can consolidate all user_data's to be the one */
void mail_send_queue (CamelFolder *queue, const char *destination,
              const char *type, CamelOperation *cancel,
              CamelFilterGetFolderFunc get_folder, void *get_data,
              CamelFilterStatusFunc *status, void *status_data,
              void (*done)(const char *destination, void *data),
              void *data);

void mail_fetch_mail (const char *source, int keep,
              const char *type, CamelOperation *cancel,
              CamelFilterGetFolderFunc get_folder, void *get_data,
              CamelFilterStatusFunc *status, void *status_data,
              void (*done)(const char *source, void *data),
              void *data);

void mail_filter_folder (CamelFolder *source_folder, GPtrArray *uids,
             const char *type, gboolean notify,
             CamelOperation *cancel);

/* convenience functions for above */
void mail_filter_on_demand (CamelFolder *folder, GPtrArray *uids);
void mail_filter_junk (CamelFolder *folder, GPtrArray *uids);

/* Work Offline */
void mail_prep_offline(const char *uri, CamelOperation *cancel,
               void (*done)(const char *, void *data),
               void *data);
int mail_store_set_offline(CamelStore *store, gboolean offline,
               void (*done)(CamelStore *, void *data),
               void *data);
int mail_store_prepare_offline (CamelStore *store);

/* filter driver execute shell command async callback */
void mail_execute_shell_command (CamelFilterDriver *driver, int argc, char **argv, void *data);

int mail_check_service(const char *url, CamelProviderType type,
               void (*done)(const char *url, CamelProviderType type, GList *authtypes, void *data), void *data);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* MAIL_OPS_H */