Files
evolution/camel/camel-disco-diary.h
Dan Winship 6952dcb7c0 Replace copy_messages_to and move_messages_to with a single function that
* camel-folder.c (camel_folder_transfer_messages_to): Replace
	copy_messages_to and move_messages_to with a single function that
	just takes a "delete_originals" flag. Also, use the vtrash
	implementation if *either* folder is a vtrash.
	(transfer_messages_to): Make this use camel_operation_progress
	(previously move_messages_to did but copy_messages_to didn't), and
	freeze/thaw the folder(s) if doing multiple messages.

	* camel-vtrash-folder.c (vtrash_transfer_messages_to): Update for
	move/copy merge. Move the "move messages into vtrash" code here
	from mail-ops.c. Now all of the vtrash move/copy special casing is
	in camel instead of half of it being here and half in mail/. (This
	should also make it so that "Move to Trash" will work in filter
	rules.)

	* camel-vee-folder.c (vee_transfer_messages_to): Make this just
	return an exception, since it will only be called when trying to
	move/copy messages from one vfolder to another.
	(vee_append_message): Add this too so we get a nicer error message
	than the default "unimplemented" one in camel-folder.c.

	* camel-digest-folder.c: Replace copy_messages_to and
	move_messages_to with transfer_messages_to.

	* camel-disco-folder.c: Likewise

	* camel-disco-diary.c (camel_disco_diary_log,
	camel_disco_diary_replay): replace MOVE/COPY with TRANSFER.

	* providers/imap/camel-imap-folder.c (imap_transfer_offline,
	imap_transfer_online, imap_transfer_resyncing): Update for
	changes. (This ends up being a bit more complicated than it was
	before for now, but later disconnected operation changes should
	resimplify it.)

	* camel-filter-driver.c (camel_filter_driver_filter_message,
	do_copy, do_move): Use transfer_messages_to instead of copy.

svn path=/trunk/; revision=16744
2002-05-10 16:44:36 +00:00

99 lines
2.8 KiB
C

/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
*
* camel-disco-diary.h: class for logging disconnected operation
*
* Authors: Dan Winship <danw@ximian.com>
*
* Copyright 2001 Ximian, Inc.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of version 2 of the GNU General Public
* License as published by the Free Software Foundation.
*
* 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 CAMEL_DISCO_DIARY_H
#define CAMEL_DISCO_DIARY_H 1
#ifdef __cplusplus
extern "C" {
#pragma }
#endif /* __cplusplus }*/
#include "camel-object.h"
#include <stdarg.h>
#include <stdio.h>
#define CAMEL_DISCO_DIARY_TYPE (camel_disco_diary_get_type ())
#define CAMEL_DISCO_DIARY(obj) (CAMEL_CHECK_CAST((obj), CAMEL_DISCO_DIARY_TYPE, CamelDiscoDiary))
#define CAMEL_DISCO_DIARY_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_DISCO_DIARY_TYPE, CamelDiscoDiaryClass))
#define CAMEL_IS_DISCO_DIARY(o) (CAMEL_CHECK_TYPE((o), CAMEL_DISCO_DIARY_TYPE))
typedef enum {
CAMEL_DISCO_DIARY_END = 0,
CAMEL_DISCO_DIARY_FOLDER_EXPUNGE,
CAMEL_DISCO_DIARY_FOLDER_APPEND,
CAMEL_DISCO_DIARY_FOLDER_TRANSFER,
} CamelDiscoDiaryAction;
typedef enum {
CAMEL_DISCO_DIARY_ARG_NONE = 0,
CAMEL_DISCO_DIARY_ARG_FOLDER,
CAMEL_DISCO_DIARY_ARG_UID,
CAMEL_DISCO_DIARY_ARG_UID_LIST
} CamelDiscoDiaryArgType;
struct _CamelDiscoDiary {
CamelObject parent_object;
CamelDiscoStore *store;
FILE *file;
GHashTable *folders, *uidmap;
};
typedef struct {
CamelObjectClass parent_class;
} CamelDiscoDiaryClass;
/* public methods */
CamelDiscoDiary *camel_disco_diary_new (CamelDiscoStore *store,
const char *filename,
CamelException *ex);
gboolean camel_disco_diary_empty (CamelDiscoDiary *diary);
void camel_disco_diary_log (CamelDiscoDiary *diary,
CamelDiscoDiaryAction action,
...);
void camel_disco_diary_replay (CamelDiscoDiary *diary,
CamelException *ex);
/* Temporary->Permanent UID map stuff */
void camel_disco_diary_uidmap_add (CamelDiscoDiary *diary,
const char *old_uid,
const char *new_uid);
const char *camel_disco_diary_uidmap_lookup (CamelDiscoDiary *diary,
const char *uid);
/* Standard Camel function */
CamelType camel_disco_diary_get_type (void);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* CAMEL_DISCO_DIARY_H */