diff options
author | Dan Winship <danw@src.gnome.org> | 2001-01-17 08:27:19 +0800 |
---|---|---|
committer | Dan Winship <danw@src.gnome.org> | 2001-01-17 08:27:19 +0800 |
commit | 8ad855fef6632e32723242fda554fce04f025036 (patch) | |
tree | fea4a94685bb6504bb679111f0e9e84e0f9ad835 /camel/providers/imap/camel-imap-wrapper.h | |
parent | 35edf4f02ace2559daea85c11c8f36efc7fe0b80 (diff) | |
download | gsoc2013-evolution-8ad855fef6632e32723242fda554fce04f025036.tar gsoc2013-evolution-8ad855fef6632e32723242fda554fce04f025036.tar.gz gsoc2013-evolution-8ad855fef6632e32723242fda554fce04f025036.tar.bz2 gsoc2013-evolution-8ad855fef6632e32723242fda554fce04f025036.tar.lz gsoc2013-evolution-8ad855fef6632e32723242fda554fce04f025036.tar.xz gsoc2013-evolution-8ad855fef6632e32723242fda554fce04f025036.tar.zst gsoc2013-evolution-8ad855fef6632e32723242fda554fce04f025036.zip |
Delayed loading of IMAP message parts.
* camel-types.h: typedef CamelMessageInfo and
CamelMessageContentInfo here
* camel-folder-summary.h: Add a "size" field to
CamelMessageContentInfo.
* camel-folder-summary.c (camel_folder_summary_content_info_new,
camel_folder_summary_content_info_free): Renamed and made
non-static for providers that construct their own content info.
(content_info_load, content_info_save): load/save size
* camel-data-wrapper.c (camel_data_wrapper_is_offline): New
function to return if a data wrapper's contents are "offline". (So
that, for example, we don't make thumbnails of images that haven't
been loaded off the IMAP server yet.) Defaults to FALSE.
* providers/imap/camel-imap-folder.c (camel_imap_folder_selected):
Fix a bug in re-selecting a folder when messages have been
expunged from it by another client in the meantime.
(imap_get_message): Rewrite. If the message is larger than a
certain size, just create a skeleton message containing
CamelImapWrappers that will read parts as needed. This way, large
attachments only need to be downloaded if the user looks at them,
and multipart/alternative alternatives that aren't used will never
be downloaded at all.
(imap_update_summary): Rewrite this a bunch too to make the
parsing more robust.
* providers/imap/camel-imap-summary.c
(CAMEL_IMAP_SUMMARY_VERSION): bump.
(camel_imap_summary_new): Set build_content to TRUE.
(content_info_load, content_info_save): Only save/load the content
for messages that have it. (The content info gets created as a
side effect of imap_get_message.)
* providers/imap/camel-imap-utils.c (imap_parse_body): New routine
(and helpers) to parse an IMAP 'body' FETCH response and fill in a
CamelMessageContentInfo from it.
* providers/imap/Makefile.am (libcamelimap_la_SOURCES,
libcamelimap_la_HEADERS): add camel-imap-wrapper.
svn path=/trunk/; revision=7557
Diffstat (limited to 'camel/providers/imap/camel-imap-wrapper.h')
-rw-r--r-- | camel/providers/imap/camel-imap-wrapper.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/camel/providers/imap/camel-imap-wrapper.h b/camel/providers/imap/camel-imap-wrapper.h new file mode 100644 index 0000000000..34b28424b7 --- /dev/null +++ b/camel/providers/imap/camel-imap-wrapper.h @@ -0,0 +1,68 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* camel-imap-wrapper.h: data wrapper for offline IMAP data */ + +/* + * Copyright 2000 Helix Code, Inc. (http://www.helixcode.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 CAMEL_IMAP_WRAPPER_H +#define CAMEL_IMAP_WRAPPER_H 1 + + +#ifdef __cplusplus +extern "C" { +#pragma } +#endif /* __cplusplus }*/ + +#include <camel/camel-data-wrapper.h> + +#define CAMEL_IMAP_WRAPPER_TYPE (camel_imap_wrapper_get_type ()) +#define CAMEL_IMAP_WRAPPER(obj) (CAMEL_CHECK_CAST((obj), CAMEL_IMAP_WRAPPER_TYPE, CamelImapWrapper)) +#define CAMEL_IMAP_WRAPPER_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_IMAP_WRAPPER_TYPE, CamelImapWrapperClass)) +#define CAMEL_IS_IMAP_WRAPPER(o) (CAMEL_CHECK_TYPE((o), CAMEL_IMAP_WRAPPER_TYPE)) + +typedef struct +{ + CamelDataWrapper parent_object; + + CamelFolder *folder; + char *uid, *part_spec; + CamelMimePart *part; +} CamelImapWrapper; + +typedef struct { + CamelDataWrapperClass parent_class; + +} CamelImapWrapperClass; + +/* Standard Camel function */ +CamelType camel_imap_wrapper_get_type (void); + +/* Constructor */ +CamelDataWrapper *camel_imap_wrapper_new (CamelFolder *folder, + CamelContentType *type, + const char *uid, + const char *part_spec, + CamelMimePart *part); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* CAMEL_DATA_WRAPPER_H */ |