mail-ops.h 8.27 KB
Newer Older
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
/*
 * 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-mt.h"

void mail_append_mail (CamelFolder *folder, CamelMimeMessage *message, CamelMessageInfo *info,
		       void (*done)(CamelFolder *folder, CamelMimeMessage *msg, CamelMessageInfo *info, gint ok,
				    const gchar *appended_uid, gpointer data),
		       gpointer data);

void mail_transfer_messages (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);

gint
mail_get_messagex(CamelFolder *folder, const gchar *uid,
		  void (*done) (CamelFolder *folder, const gchar *uid, CamelMimeMessage *msg, gpointer data, GError **error),
		  gpointer data, MailMsgDispatchFunc dispatch);

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

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

/* Get a folder from Store by name, or junk/trash/inbox */
gint mail_get_folder_from_name (CamelStore *store, const gchar *folder_name, 
		 		gboolean junk, gboolean trash, gboolean inbox, guint32 flags,
		 		void (*done)(CamelFolder *folder, gpointer data, GError *error),
		 		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);

/* and for a store */
gint mail_get_store (const gchar *uri, CamelOperation *op,
		    void (*done) (gchar *uri, CamelStore *store, gpointer data, GError *error), gpointer data);

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

void mail_sync_folder (CamelFolder *folder, gboolean expunge,
		       void (*done) (CamelFolder *folder, gpointer data, GError *error), gpointer data);

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

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

void mail_expunge_folder (CamelFolder *folder,
			  void (*done) (CamelFolder *folder, gpointer data, GError *error),
			  gpointer data);

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

/* get folder info asynchronously */
gint mail_get_folderinfo (CamelStore *store, CamelOperation *op,
			 gboolean (*done)(CamelStore *store, CamelFolderInfo *info, gpointer data, GError *error),
			 gpointer data);
gint mail_get_folderinfo_full (CamelStore *store, const char *top, guint32 flags, CamelOperation *op, gboolean (*done)(CamelStore *store, CamelFolderInfo *info, gpointer data, GError *error), 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);

gint mail_save_part (CamelMimePart *part, const gchar *path,
		    void (*done)(CamelMimePart *part, gchar *path, gint saved, gpointer data),
		    gpointer 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 gchar *destination,
		      const gchar *type, CamelOperation *cancel,
		      CamelFilterGetFolderFunc get_folder, gpointer get_data,
		      CamelFilterStatusFunc *status, gpointer status_data,
		      void (*done)(const gchar *destination, gpointer data),
		      gpointer data);

void mail_fetch_mail (const gchar *source, gint keep,
142
		      const gchar *type, CamelOperation *cancel, gint more,
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
		      CamelFilterGetFolderFunc get_folder, gpointer get_data,
		      CamelFilterStatusFunc *status, gpointer status_data,
		      void (*done)(const gchar *source, gpointer data),
		      gpointer data);

void mail_filter_folder (CamelFolder *source_folder, GPtrArray *uids,
			 const gchar *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 gchar *uri, CamelOperation *cancel,
		       void (*done)(const gchar *, gpointer data),
		       gpointer data);
gint mail_store_set_offline(CamelStore *store, gboolean offline,
			   void (*done)(CamelStore *, gpointer data),
			   gpointer data);
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(const gchar *url, CamelProviderType type,
		       void (*done)(const gchar *url, CamelProviderType type, GList *authtypes, gpointer data), gpointer data);

gint mail_create_folder (CamelStore *store, const char *parent, const char *folder_name, 
		         void (* done) (CamelFolderInfo *fi, gpointer user_data, GError *error), gpointer user_data);
void mail_delete_folder (CamelStore *store, const char *folder, 
			 void (*done) (gpointer data, GError *error), gpointer data);
void mail_rename_folder (CamelStore *store, const char *oldname, const char *newname, 
			 void (*done) (gpointer data, GError *error), gpointer data);

typedef enum {
	FOLDER_SUBSCRIBE=0,
	FOLDER_UNSUBSCRIBE=1,
	FOLDER_IS_SUBSCRIBED=2,
}MailFolderSubscription;

void mail_folder_subscription (CamelStore *store, const char *folder, MailFolderSubscription operation, 
			 void (*done) (gboolean ret, gpointer data, GError *error), gpointer data);
void mail_noop_store(CamelStore *store, 
			 void (*done) (CamelStore *store, gpointer data, GError *error), gpointer data);
void mail_can_refresh_folder(CamelStore *store, CamelFolderInfo *info, 
			 void (*done) (gboolean ret, gpointer data, GError *error), gpointer data);

void mail_operate_on_folder(CamelFolder *folder, 
		       	    gboolean (*do_op) (CamelFolder *folder, gpointer data, GError **error),
		            void (*done) (gboolean ret, gpointer data, GError *error), 
		            gpointer data);

G_END_DECLS

#endif /* MAIL_OPS_H */