aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog7
-rw-r--r--mail/message-list.c45
2 files changed, 48 insertions, 4 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 291e1f5533..7d1795c3d2 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,10 @@
+2000-10-04 Not Zed <NotZed@HelixCode.com>
+
+ * message-list.c (message_list_init_header): Fix the attachment icon width.
+ (content_is_attachment): Perform some simple tests to see if the
+ message contains an attachment.
+ (build_subtree): Kill a pointless warning.
+
2000-10-04 Miguel de Icaza <miguel@helixcode.com>
* mail-callbacks.c (delete_msg): Added a comment to a piece of
diff --git a/mail/message-list.c b/mail/message-list.c
index 74aecdb7fd..46c69ea556 100644
--- a/mail/message-list.c
+++ b/mail/message-list.c
@@ -59,6 +59,7 @@
#define N_CHARS(x) (CHAR_WIDTH * (x))
#define COL_ICON_WIDTH (16)
+#define COL_ATTACH_WIDTH (16)
#define COL_CHECK_BOX_WIDTH (16)
#define COL_FROM_EXPANSION (24.0)
#define COL_FROM_WIDTH_MIN (32)
@@ -120,7 +121,11 @@ internet_address_new_from_string (const gchar *string)
1. "Jeffrey Stedfast" <fejj@helixcode.com>
2. fejj@helixcode.com
3. <fejj@helixcode.com> (Jeffrey Stedfast)
+
+ notzed: actually we dont, this isn't spruce, the addresses have already been parsed by camel.
+ FIXME: This code wont handle multiple addresses.
*/
+
InternetAddress *ia;
gchar *name = NULL, *address = NULL;
const gchar *ptr;
@@ -652,6 +657,35 @@ subtree_unread(MessageList *ml, ETreePath *node)
return FALSE;
}
+static gboolean
+content_is_attachment(CamelMessageContentInfo *ci)
+{
+ CamelMessageContentInfo *child;
+
+ /* no info about content */
+ if (ci == NULL)
+ return FALSE;
+
+ /* we assume multipart/mixed is an attachment always
+ other multipart / * is only an attachment if it contains multipart/mixed's, or
+ non-text parts */
+ if (header_content_type_is(ci->type, "multipart", "*")) {
+ if (header_content_type_is(ci->type, "multipart", "mixed")) {
+ return TRUE;
+ }
+ child = ci->childs;
+ while (child) {
+ if (content_is_attachment(child)) {
+ return TRUE;
+ }
+ child = child->next;
+ }
+ return FALSE;
+ } else {
+ return !header_content_type_is(ci->type, "text", "*");
+ }
+}
+
static void *
ml_tree_value_at (ETreeModel *etm, ETreePath *path, int col, void *model_data)
{
@@ -691,7 +725,10 @@ ml_tree_value_at (ETreeModel *etm, ETreePath *path, int col, void *model_data)
}
case COL_ATTACHMENT:
- return GINT_TO_POINTER (0);
+ if (content_is_attachment(msg_info->content))
+ return (void *)1;
+ else
+ return (void *)0;
case COL_FROM:
if (msg_info->from)
@@ -954,7 +991,7 @@ message_list_init_header (MessageList *message_list)
message_list->table_cols [COL_ATTACHMENT] =
e_table_col_new_with_pixbuf (
COL_ATTACHMENT, states_pixmaps [4].pixbuf,
- 0.0, COL_ICON_WIDTH,
+ 0.0, COL_ATTACH_WIDTH,
message_list->render_attachment,
g_int_compare, FALSE);
@@ -1263,7 +1300,7 @@ folder_to_cachename(CamelFolder *folder, const char *prefix)
{
char *url, *p, *filename;
- url = camel_url_to_string (CAMEL_SERVICE (folder->parent_store)->url, FALSE);
+ url = camel_url_to_string(CAMEL_SERVICE(folder->parent_store)->url, FALSE);
for (p = url; *p; p++) {
if (!isprint((unsigned char)*p) || strchr(" /'\"`&();|<>${}!", *p))
*p = '_';
@@ -1384,7 +1421,7 @@ build_subtree (MessageList *ml, ETreePath *parent, struct _container *c, int *ro
ETreeModel *tree = E_TREE_MODEL (ml->table_model);
ETreePath *node;
char *id;
- int expanded;
+ int expanded = FALSE; /* just removes a silly warning */
while (c) {
if (c->message) {