aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-ops.h
blob: 305dae6b77f98694970cebeda5873724fc0a0bc4 (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
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */

/* 
 * Authors: 
 *  Peter Williams <peterw@helixcode.com>
 *  Michael Zucchi <notzed@ximian.com>
 *
 * Copyright 2000, 2001 Ximian, Inc. (http://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 Place, Suite 330, Boston, MA 02111-1307
 * USA
 */

#ifndef MAIL_OPS_H
#define MAIL_OPS_H

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

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

#include "filter/filter-context.h"

#include "evolution-storage.h"  /*EvolutionStorage */
#include "e-util/e-msgport.h"

/* utility functions */
FilterContext *mail_load_filter_context (void);

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

void mail_do_transfer_messages (CamelFolder *source, GPtrArray *uids,
                gboolean delete_from_source,
                gchar *dest_uri);

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

/* 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,
             void (*done) (char *uri, CamelFolder *folder, void *data), void *data);

/* and for a store */
int mail_get_store (const char *uri,
            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_expunge_folder (CamelFolder *folder,
              void (*done) (CamelFolder *folder, void *data),
              void *data);

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

/* create a new mail folder */
void mail_create_folder (const char *uri,
             void (*done) (char *uri, CamelFolder *folder, void *data),
             void *data);

/* remove an existing folder */
void mail_remove_folder (const char *uri,
             void (*done) (char *uri, gboolean removed, 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);

int mail_send_mail (const char *uri, CamelMimeMessage *message,
            void (*done) (char *uri, CamelMimeMessage *message, gboolean sent, void *data),
            void *data);

/* scan subfolders and add them to the storage, synchronous */
/* FIXME: Move this to component-factory.c */
void mail_scan_subfolders (CamelStore *store, EvolutionStorage *storage);
/* not sure about this one though */
int mail_update_subfolders (CamelStore *store, EvolutionStorage *storage,
                void (*done)(CamelStore *, void *data),
                void *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 (CamelFolder *queue, const char *destination,
              FilterContext *fc, const char *type,
              CamelOperation *cancel,
              CamelFilterGetFolderFunc get_folder, void *get_data,
              CamelFilterStatusFunc *status, void *status_data,
              void (*done)(char *destination, void *data),
              void *data);

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

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

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

/* Work Offline */
void mail_store_set_offline (CamelStore *store, gboolean offline,
                 void (*done)(CamelStore *, void *data),
                 void *data);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* MAIL_OPS_H */