aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-ops.h
blob: f773c825f7819d19e50ef2ee306a2adda97d6bfc (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
/*
 * 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

G_BEGIN_DECLS

#include <camel/camel.h>
#include <libedataserver/e-account.h>

#include <mail/mail-mt.h>
#include <mail/e-mail-session.h>

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

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

/* same for a folder */
gint        mail_get_folder         (EMailSession *session,
                         const gchar *uri,
                         guint32 flags,
                         void (*done) (gchar *uri, CamelFolder *folder, gpointer data),
                         gpointer data,
                         MailMsgDispatchFunc dispatch);

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

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

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

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

void mail_expunge_folder (EMailSession *session, CamelFolder *folder,
              void (*done) (CamelFolder *folder, gpointer data),
              gpointer data);

void        mail_empty_trash        (EMailSession *session,
                         EAccount *account,
                         void (*done) (EAccount *account, gpointer data),
                         gpointer data);

/* get folder info asynchronously */
gint        mail_get_folderinfo     (CamelStore *store,
                         GCancellable *cancellable,
                         gboolean (*done)(CamelStore *store, CamelFolderInfo *info, gpointer data),
                         gpointer data);

/* remove an existing folder */
void mail_remove_folder (CamelFolder *folder,
             void (*done) (CamelFolder *folder, gboolean removed, GError **error, gpointer data),
             gpointer data);

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

/* save messages */
gint mail_save_messages (CamelFolder *folder, GPtrArray *uids, const gchar *path,
            void (*done) (CamelFolder *folder, GPtrArray *uids, gchar *path, gpointer data),
            gpointer data);

/* 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         (EMailSession *session,
                         CamelFolder *queue,
                         CamelTransport *transport,
                         const gchar *type,
                         GCancellable *cancellable,
                         CamelFilterGetFolderFunc get_folder,
                         gpointer get_data,
                         CamelFilterStatusFunc *status,
                         gpointer status_data,
                         void (*done)(gpointer data),
                         gpointer data);

void        mail_fetch_mail         (CamelStore *store,
                         gint keep,
                         const gchar *type,
                         GCancellable *cancellable,
                         CamelFilterGetFolderFunc get_folder,
                         gpointer get_data,
                         CamelFilterStatusFunc *status,
                         gpointer status_data,
                         void (*done)(gpointer data),
                         gpointer data);

void        mail_filter_folder      (EMailSession *session,
                         CamelFolder *source_folder,
                         GPtrArray *uids,
                         const gchar *type,
                         gboolean notify);

/* Work Offline */
gint mail_store_prepare_offline (CamelStore *store);

/* filter driver execute shell command async callback */
void mail_execute_shell_command (CamelFilterDriver *driver, gint argc, gchar **argv, gpointer data);

gint        mail_check_service      (EMailSession *session,
                         const gchar *service_uid,
                         void (*done)(GList *authtypes, gpointer data),
                         gpointer data);

gint mail_disconnect_store (CamelStore *store);
gint mail_remove_attachments (CamelFolder *folder, GPtrArray *uids);

G_END_DECLS

#endif /* MAIL_OPS_H */