aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers/imap/camel-imap-wrapper.h
diff options
context:
space:
mode:
authorDan Winship <danw@src.gnome.org>2001-01-17 08:27:19 +0800
committerDan Winship <danw@src.gnome.org>2001-01-17 08:27:19 +0800
commit8ad855fef6632e32723242fda554fce04f025036 (patch)
treefea4a94685bb6504bb679111f0e9e84e0f9ad835 /camel/providers/imap/camel-imap-wrapper.h
parent35edf4f02ace2559daea85c11c8f36efc7fe0b80 (diff)
downloadgsoc2013-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.h68
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 */