/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * Authors: Jeffrey Stedfast * Michael Zucchi * * Copyright 2000 Helix Code, Inc. (www.helixcode.com) * Copyright 2001 Ximian Inc. (www.ximian.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 Street #330, Boston, MA 02111-1307, USA. * */ /* (from glibc headers: POSIX says that must be included (by the caller) before . */ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include "camel-exception.h" #include "camel-mime-message.h" #include "camel-multipart.h" #include "camel-stream-mem.h" #include "e-util/e-sexp.h" #include "camel-search-private.h" #include #define d(x) /* builds the regex into pattern */ /* taken from camel-folder-search, with added isregex & exception parameter */ /* Basically, we build a new regex, either based on subset regex's, or substrings, that can be executed once over the whoel body, to match anything suitable. This is more efficient than multiple searches, and probably most (naive) strstr implementations, over long content. A small issue is that case-insenstivity wont work entirely correct for utf8 strings. */ int camel_search_build_match_regex (regex_t *pattern, camel_search_flags_t type, int argc, struct _ESExpResult **argv, CamelException *ex) { GString *match = g_string_new(""); int c, i, count=0, err; char *word; int flags; /* build a regex pattern we can use to match the words, we OR them together */ if (argc>1) g_string_append_c(match, '('); for (i=0;itype == ESEXP_RES_STRING) { if (count > 0) g_string_append_c(match, '|'); word = argv[i]->value.string; if (type & CAMEL_SEARCH_MATCH_REGEX) { /* no need to escape because this should already be a valid regex */ g_string_append(match, word); } else { /* escape any special chars (not sure if this list is complete) */ if (type & CAMEL_SEARCH_MATCH_START) g_string_append_c(match, '^'); while ((c = *word++)) { if (strchr("*\\.()[]^$+", c) != NULL) { g_string_append_c(match, '\\'); } g_string_append_c(match, c); } if (type & CAMEL_SEARCH_MATCH_END) g_string_append_c(match, '^'); } count++; } else { g_warning("Invalid type passed to body-contains match function"); } } if (argc>1) g_string_append_c(match, ')'); flags = REG_EXTENDED|REG_NOSUB; if (type & CAMEL_SEARCH_MATCH_ICASE) flags |= REG_ICASE; err = regcomp(pattern, match->str, flags); if (err != 0) { /* regerror gets called twice to get the full error string length to do proper posix error reporting */ int len = regerror(err, pattern, 0, 0); char *buffer = g_malloc0(len + 1); regerror(err, pattern, buffer, len); camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM, _("Regular expression compilation failed: %s: %s"), match->str, buffer); regfree(pattern); } d(printf("Built regex: '%s'\n", match->str)); g_string_free(match, TRUE); return err; } static unsigned char soundex_table[256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 50, 51, 0, 49, 50, 0, 0, 50, 50, 52, 53, 53, 0, 49, 50, 54, 50, 51, 0, 49, 0, 50, 0, 50, 0, 0, 0, 0, 0, 0, 0, 49, 50, 51, 0, 49, 50, 0, 0, 50, 50, 52, 53, 53, 0, 49, 50, 54, 50, 51, 0, 49, 0, 50, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; static void soundexify (const gchar *sound, gchar code[5]) { guchar *c, last = '\0'; gint n; for (c = (guchar *) sound; *c && !isalpha (*c); c++); code[0] = toupper (*c); memset (code + 1, '0', 3); for (n = 1; *c && n < 5; c++) { guchar ch = soundex_table[*c]; if (ch && ch != last) { code[n++] = ch; last = ch; } } code[4] = '\0'; } static gboolean header_soundex(const char *header, const char *match) { char mcode[5], hcode[5]; const char *p; char c; GString *word; int truth = FALSE; soundexify(match, mcode); /* split the header into words, and soundexify and compare each one */ /* FIXME: Should this convert to utf8, and split based on that, and what not? soundex only makes sense for us-ascii though ... */ word = g_string_new(""); p = header; do { c = *p++; if (c == 0 || isspace(c)) { if (word->len > 0) { soundexify(word->str, hcode); if (strcmp(hcode, mcode) == 0) truth = TRUE; } g_string_truncate(word, 0); } else if (isalpha(c)) g_string_append_c(word, c); } while (c && !truth); g_string_free(word, TRUE); return truth; } static gunichar utf8_get (const char **inp) { const unsigned char *p = *inp; gunichar c; g_return_val_if_fail (p != NULL, 0); c = g_utf8_get_char (p); *inp = g_utf8_next_char (p); return c; } static const char * camel_ustrstrcase (const char *haystack, const char *needle) { gunichar *nuni, *puni; gunichar u; const char *p; g_return_val_if_fail (haystack != NULL, NULL); g_return_val_if_fail (needle != NULL, NULL); if (strlen(needle) == 0) return haystack; if (strlen(haystack) == 0) return NULL; puni = nuni = alloca (sizeof (gunichar) * strlen (needle)); p = needle; while ((u = utf8_get (&p))) *puni++ = g_unichar_tolower (u); /* NULL means there was illegal utf-8 sequence */ if (!p) return NULL; p = haystack; while ((u = utf8_get (&p))) { gunichar c; c = g_unichar_tolower (u); /* We have valid stripped char */ if (c == nuni[0]) { const gchar *q = p; gint npos = 1; while (nuni + npos < puni) { u = utf8_get (&q); if (!q || !u) return NULL; c = g_unichar_tolower (u); if (c != nuni[npos]) break; npos++; } if (nuni + npos == puni) return p; } } return NULL; } #define CAMEL_SEARCH_COMPARE(x, y, z) G_STMT_START { \ if ((x) == (z)) { \ if ((y) == (z)) \ return 0; \ else \ return -1; \ } else if ((y) == (z)) \ return 1; \ } G_STMT_END static int camel_ustrcasecmp (const char *s1, const char *s2) { gunichar u1, u2 = 0; CAMEL_SEARCH_COMPARE (s1, s2, NULL); u1 = utf8_get (&s1); u2 = utf8_get (&s2); while (u1 && u2) { u1 = g_unichar_tolower (u1); u2 = g_unichar_tolower (u2); if (u1 < u2) return -1; else if (u1 > u2) return 1; u1 = utf8_get (&s1); u2 = utf8_get (&s2); } /* end of one of the strings ? */ CAMEL_SEARCH_COMPARE (u1, u2, 0); /* if we have invalid utf8 sequence ? */ CAMEL_SEARCH_COMPARE (s1, s2, NULL); return 0; } static int camel_ustrncasecmp (const char *s1, const char *s2, size_t len) { gunichar u1, u2 = 0; CAMEL_SEARCH_COMPARE (s1, s2, NULL); u1 = utf8_get (&s1); u2 = utf8_get (&s2); while (len > 0 && u1 && u2) { u1 = g_unichar_tolower (u1); u2 = g_unichar_tolower (u2); if (u1 < u2) return -1; else if (u1 > u2) return 1; len--; u1 = utf8_get (&s1); u2 = utf8_get (&s2); } if (len == 0) return 0; /* end of one of the strings ? */ CAMEL_SEARCH_COMPARE (u1, u2, 0); /* if we have invalid utf8 sequence ? */ CAMEL_SEARCH_COMPARE (s1, s2, NULL); return 0; } /* searhces for match inside value, if match is mixed case, hten use case-sensitive, else insensitive */ gboolean camel_search_header_match (const char *value, const char *match, camel_search_match_t how) { const char *p; int vlen, mlen; while (*value && isspace (*value)) value++; if (how == CAMEL_SEARCH_MATCH_SOUNDEX) return header_soundex (value, match); vlen = strlen (value); mlen = strlen (match); if (vlen < mlen) return FALSE; /* from dan the man, if we have mixed case, perform a case-sensitive match, otherwise not */ p = match; while (*p) { if (isupper(*p)) { switch(how) { case CAMEL_SEARCH_MATCH_EXACT: return strcmp(value, match) == 0; case CAMEL_SEARCH_MATCH_CONTAINS: return strstr(value, match) != NULL; case CAMEL_SEARCH_MATCH_STARTS: return strncmp (value, match, mlen) == 0; case CAMEL_SEARCH_MATCH_ENDS: return strcmp (value + vlen - mlen, match) == 0; default: break; } return FALSE; } p++; } switch(how) { case CAMEL_SEARCH_MATCH_EXACT: return camel_ustrcasecmp(value, match) == 0; case CAMEL_SEARCH_MATCH_CONTAINS: return camel_ustrstrcase(value, match) != NULL; case CAMEL_SEARCH_MATCH_STARTS: return camel_ustrncasecmp (value, match, mlen) == 0; case CAMEL_SEARCH_MATCH_ENDS: return camel_ustrcasecmp (value + vlen - mlen, match) == 0; default: break; } return FALSE; } /* performs a 'slow' content-based match */ /* there is also an identical copy of this in camel-filter-search.c */ gboolean camel_search_message_body_contains(CamelDataWrapper *object, regex_t *pattern) { CamelDataWrapper *containee; int truth = FALSE; int parts, i; containee = camel_medium_get_content_object(CAMEL_MEDIUM(object)); if (containee == NULL) return FALSE; /* TODO: I find it odd that get_part and get_content_object do not add a reference, probably need fixing for multithreading */ /* using the object types is more accurate than using the mime/types */ if (CAMEL_IS_MULTIPART(containee)) { parts = camel_multipart_get_number(CAMEL_MULTIPART(containee)); for (i=0;imime_type, "text", "*")) { /* for all other text parts, we look inside, otherwise we dont care */ CamelStreamMem *mem = (CamelStreamMem *)camel_stream_mem_new(); camel_data_wrapper_write_to_stream(containee, (CamelStream *)mem); camel_stream_write((CamelStream *)mem, "", 1); truth = regexec(pattern, mem->buffer->data, 0, NULL, 0) == 0; camel_object_unref((CamelObject *)mem); } return truth; } n class='column1'>| | | | | | | | | | 2002-01-22 Jeffrey Stedfast <fejj@ximian.com> * mail-ops.c (mail_filter_folder): Now takes a boolean notify argument. If this is *not* set, then remove the sound-notify filter rule that mail-session adds. Kinda kludgy, but good enough for the moment. * mail-callbacks.c (guess_me): Simplified. svn path=/trunk/; revision=15426 * Simplified.Jeffrey Stedfast2002-01-232-30/+34 | | | | | | | | 2002-01-22 Jeffrey Stedfast <fejj@ximian.com> * mail-callbacks.c (guess_me): Simplified. svn path=/trunk/; revision=15424 * If the first "token" in the body is "<html>", then treat this as aJeffrey Stedfast2002-01-223-1/+19 | | | | | | | | | | | | | 2002-01-21 Jeffrey Stedfast <fejj@ximian.com> * mail-format.c (handle_text_plain): If the first "token" in the body is "<html>", then treat this as a text/html part rather than a text/plain part. Fixes bug #16817. * component-factory.c (destination_folder_handle_drop): Removed some unused variables. svn path=/trunk/; revision=15420 * Update to match new uudecode interface (ie, no longer need a uulen stateJeffrey Stedfast2002-01-182-3/+8 | | | | | | | | | 2002-01-17 Jeffrey Stedfast <fejj@ximian.com> * mail-format.c (try_uudecoding): Update to match new uudecode interface (ie, no longer need a uulen state variable). svn path=/trunk/; revision=15350 * New callback to handle the set_base signal. (on_url_requested): If theJeffrey Stedfast2002-01-163-5/+60 | | | | | | | | | | | | | | | | 2002-01-15 Jeffrey Stedfast <fejj@ximian.com> * mail-display.c (on_set_base): New callback to handle the set_base signal. (on_url_requested): If the base_url is set, prepend it to the data url (we don't want to do this for cid urls or part urls tho). (mail_display_init): Initialize md->base_url to NULL. (mail_display_destroy): Free the base_url. (mail_display_initialize_gtkhtml): Connect to the set_base signal. (on_link_clicked): If the base_url is set, prepend it to the url string passed to us from gtkhtml. svn path=/trunk/; revision=15329 * Don't remove any X-Evolution* headers here, the composer already knows toJeffrey Stedfast2002-01-112-3/+6 | | | | | | | | | | 2002-01-10 Jeffrey Stedfast <fejj@ximian.com> * mail-callbacks.c (do_edit_messages): Don't remove any X-Evolution* headers here, the composer already knows to ignore these. Besides, it needs to know the X-Evolution-Format header. svn path=/trunk/; revision=15287 * Do proper refcounting on the draft folder.Jeffrey Stedfast2002-01-092-2/+10 | | | | | | | | | 2002-01-08 Jeffrey Stedfast <fejj@ximian.com> * mail-callbacks.c (composer_save_draft_cb): Do proper refcounting on the draft folder. svn path=/trunk/; revision=15268 * When performing a wraparound, check to see if the first (or last dependingJeffrey Stedfast2002-01-092-4/+26 | | | | | | | | | | | | | | | 2002-01-08 Jeffrey Stedfast <fejj@ximian.com> * message-list.c (message_list_select): When performing a wraparound, check to see if the first (or last depending on direction) message fits the selection criteria before telling etable to find the next/previous matching node. * mail-account-gui.c (mail_account_gui_new): When connecting to the transport username changed event, pass the gui->transport not the gui->source. svn path=/trunk/; revision=15267 * When connecting to the transport username changed event, pass theJeffrey Stedfast2002-01-093-1/+9 | | | | | | | | | | 2002-01-08 Jeffrey Stedfast <fejj@ximian.com> * mail-account-gui.c (mail_account_gui_new): When connecting to the transport username changed event, pass the gui->transport not the gui->source. svn path=/trunk/; revision=15266 * Make the mbox importer check for Mozilla status headers and act on them.Iain Holmes2002-01-094-4/+124 | | | | svn path=/trunk/; revision=15265 * Renamed. (mail_config_get_new_mail_notify_sound_file): Renamed.Jeffrey Stedfast2002-01-0810-53/+102 | | | | | | | | | | | | | | | | | | | | | | | | | 2002-01-07 Jeffrey Stedfast <fejj@ximian.com> * mail-config.c (mail_config_set_new_mail_notify_sound_file): Renamed. (mail_config_get_new_mail_notify_sound_file): Renamed. * mail-accounts.c (notify_radio_toggled): Replace EXEC with PLAY_SOUND. (construct): renamed the exec_command stuff to play_sound. * main.c (main): Init and shutdown gnome_sound. * mail-ops.c (fetch_mail_fetch): Don't do any new-mail notification here. (filter_folder_filter): call camel_filter_driver_flush. * mail-session.c (main_get_filter_driver): Set the filter-driver exec_func here instead. * mail-ops.c (mail_fetch_mail): Don't set the filter-driver exec_func here. svn path=/trunk/; revision=15263 * Add an Organization header.Jeffrey Stedfast2002-01-043-1/+8 | | | | | | | | | 2002-01-03 Jeffrey Stedfast <fejj@ximian.com> * mail-callbacks.c (composer_get_message): Add an Organization header. svn path=/trunk/; revision=15242 * Simplified. Also no longer needs an "ignore_addr" argument as far as I canJeffrey Stedfast2002-01-032-38/+46 | | | | | | | | | | | | | | | 2002-01-02 Jeffrey Stedfast <fejj@ximian.com> * mail-callbacks.c (list_add_addresses): Simplified. Also no longer needs an "ignore_addr" argument as far as I can tell so that has been removed. (mail_generate_reply): Don't pass an ignore_addr argument to list_add_addresses and also change to use g_strcase_hash and g_strcase_equal since addresses are not case snesitive (mostly). Also, Reply-To can contain multiple addresses, so handle this case too. svn path=/trunk/; revision=15231 * remove e_gnome_dialog util functions and use e-util ones insteadJP Rosevear2002-01-032-44/+6 | | | | | | | | | | | | | | | | | | | 2002-01-02 JP Rosevear <jpr@ximian.com> * mail-callbacks.c: remove e_gnome_dialog util functions and use e-util ones instead 2002-01-02 JP Rosevear <jpr@ximian.com> * e-dialog-utils.c (e_gnome_dialog_set_parent): util function moved from mail-callbacks, also destroys the dialog if the parent is destroyed (e_gnome_warning_dialog_parented): similarly (e_gnome_ok_cancel_dialog_parented): ditto * e-dialog-utils.h: new protos svn path=/trunk/; revision=15225 * The idea here is that if we consistantly name the movemail file betweenJeffrey Stedfast2002-01-033-24/+39 | | | | | | | | | | | | | | | | | | | | | 2001-12-21 Jeffrey Stedfast <fejj@ximian.com> The idea here is that if we consistantly name the movemail file between Send&Receive sessions that if the user cancells the "download" of a mbox spool that the next Send&Receive will not "lose" mail that didn't finish the previous session. Fixes bug #17759. Well, mostly. If you have 200 messages and cancel after the first 100, say, then the next time you hit Send&Receive, it will start over from 1 so you'll end up duplicating the first 100 messages, but at least you won't "lose" mail. * mail-tools.c (mail_tool_get_local_movemail_path): Now a static internal function, takes a char *uri argument and no longer generates movemail.%d filenames... they are now based on the uri provided. (mail_tool_do_movemail): Pass along the source_uri. svn path=/trunk/; revision=15224 * Makes the auto-undelete behavior when changing message flags a bit moreJon Trowbridge2001-12-212-3/+20 | | | | | | | | | 2001-12-20 Jon Trowbridge <trow@ximian.com> * message-list.c (on_click): Makes the auto-undelete behavior when changing message flags a bit more sane. (Fixes #17634) svn path=/trunk/; revision=15200 * -- Merge fix for #17377 from the evolution-1-0-branch.Ettore Perazzoli2001-12-202-0/+9 | | | | | | * main.c (main): Push GdkRGB visual and colormap. svn path=/trunk/; revision=15195 * Add the auto-cc/bcc recipients here. The problem with setting them in theJeffrey Stedfast2001-12-207-45/+315 | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-12-19 Jeffrey Stedfast <fejj@ximian.com> * mail-callbacks.c (composer_get_message): Add the auto-cc/bcc recipients here. The problem with setting them in the composer is that what if the user changes which account he wants to use? We'd either have to clear the cc/bcc lists *or* we'd have to leave them alone. Either way is bad. We can't just clear the entries because the user may have added addresses since the composer was opened. We don't want to leave any old auto-cc/bcc addresses there because that isn't desirable either. So we give up and add them here after the user has already hit the send button. * mail-config.c (account_copy): Update to copy the always-[b]cc options. (account_destroy): Update to destroy the above options. (config_read): Update to read in those values. (mail_config_write): Save those options. * mail-account-gui.c (mail_account_gui_new): Setup Always Cc/Bcc widgets. (mail_account_gui_save): Get the user-entered values for the always-cc/bcc stuff. svn path=/trunk/; revision=15189 * If the provider is NULL, don't do anything.Jeffrey Stedfast2001-12-203-4/+8 | | | | | | | | | | | | | | 2001-12-19 Jeffrey Stedfast <fejj@ximian.com> * mail-account-gui.c (setup_service): If the provider is NULL, don't do anything. * mail-accounts.c (construct): Oops, no wonder the exec command thing never stuck around... I wasn't getting the right widget from libglade. Also connect to the GtkEntry's changed event since a GnomeFileEntry doesn't have that signal in its ancestry. svn path=/trunk/; revision=15188 * Oops, no wonder the exec command thing never stuck around... I wasn'tJeffrey Stedfast2001-12-203-2/+9 | | | | | | | | | | 2001-12-19 Jeffrey Stedfast <fejj@ximian.com> * mail-accounts.c (construct): Oops, no wonder the exec command thing never stuck around... I wasn't getting the right widget from libglade. svn path=/trunk/; revision=15187 * Argh, don't notify about new mail here. (fetch_mail_fetch): Notify aboutJeffrey Stedfast2001-12-192-18/+22 | | | | | | | | | | 2001-12-18 Jeffrey Stedfast <fejj@ximian.com> * mail-ops.c (filter_folder_free): Argh, don't notify about new mail here. (fetch_mail_fetch): Notify about new mail here instead. svn path=/trunk/; revision=15170 * slight fixJeffrey Stedfast2001-12-191-3/+3 | | | | svn path=/trunk/; revision=15169 * Setup the new-mail-notification widgets. (notify_command_changed): UpdateJeffrey Stedfast2001-12-197-18/+213 | | | | | | | | | | | | | | | 2001-12-18 Jeffrey Stedfast <fejj@ximian.com> * mail-accounts.c (construct): Setup the new-mail-notification widgets. (notify_command_changed): Update the command-line for new mail notification. (notify_radio_toggled): Update the new-mail-notification type. * mail-ops.c (filter_folder_free): See if we got any new mail and "sound the alarm" if we did. svn path=/trunk/; revision=15168 * Set citation color to black when we are printing.Jon Trowbridge2001-12-182-0/+7 | | | | | | | | | 2001-12-17 Jon Trowbridge <trow@ximian.com> * mail-format.c (handle_text_plain_flowed): Set citation color to black when we are printing. svn path=/trunk/; revision=15140 * Avoid embedding <object> tags when we are printing.Jon Trowbridge2001-12-183-13/+34 | | | | | | | | | | | | | | | | 2001-12-17 Jon Trowbridge <trow@ximian.com> * mail-format.c (attachment_header): Avoid embedding <object> tags when we are printing. (handle_multipart_signed): Don't do the click-for-info signature stuff when we are printing. (handle_via_bonobo): Don't embed an <object> tag if we are printing. * folder-browser.c: Changed context_menu[] array so that we can print when the preview pane is closed. svn path=/trunk/; revision=15139 * Set the filter driver's shell-exec callback.Jeffrey Stedfast2001-12-153-2/+9 | | | | | | | | | 2001-12-14 Jeffrey Stedfast <fejj@ximian.com> * mail-ops.c (mail_fetch_mail): Set the filter driver's shell-exec callback. svn path=/trunk/; revision=15088 * Connect to the destroy signal on the popup dialog.Jeffrey Stedfast2001-12-153-11/+32 | | | | | | | | | | | | | | 2001-12-12 Jeffrey Stedfast <fejJ@ximian.com> * mail-config.c (mail_config_check_service): Connect to the destroy signal on the popup dialog. 2001-12-12 Jeffrey Stedfast <fejj@ximian.com> * mail-format.c (handle_text_plain): Make sure i != num_specials after we check for any special text markers. Fixes bug #12265. svn path=/trunk/; revision=15085 * Connect to the save-draft signal. (send_to_url): Here too. (mail_reply):Jeffrey Stedfast2001-12-153-1/+107 | | | | | | | | | | | | 2001-12-14 Jeffrey Stedfast <fejj@ximian.com> * mail-callbacks.c (compose_msg): Connect to the save-draft signal. (send_to_url): Here too. (mail_reply): And here... (forward_get_composer): Same. (do_edit_messages): And finally here. svn path=/trunk/; revision=15081 * Start reiplementing The Right Way and not danw's fucking half-assed kludgeJeffrey Stedfast2001-12-153-129/+40 | | | | | | | | | | 2001-12-14 Jeffrey Stedfast <fejj@ximian.com> * mail-format.c (try_inline_pgp): (try_inline_pgp_sig): Start reiplementing The Right Way and not danw's fucking half-assed kludge that doesn't work. svn path=/trunk/; revision=15076 * set the new-mail-notify command.Jeffrey Stedfast2001-12-135-6/+134 | | | | | | | | | | | | | | | | | | | | | | 2001-12-12 Jeffrey Stedfast <fejj@ximian.com> * mail-config.c (mail_config_set_new_mail_notification_command): set the new-mail-notify command. (mail_config_get_new_mail_notification_command): get the new-mail-notify command. (mail_config_set_new_mail_notification): set the new-mail-notification action. (mail_config_get_new_mail_notification): get the new-mail-notification action. (mail_config_write_on_exit): save the new-mail-notification settings. (config_read): Read in the new-mail-notification settings. * mail-ops.c (mail_execute_shell_command): New function to execute a shell command async. Will be used for playing sounds on new mail or whatever. svn path=/trunk/; revision=15005 * Fixed for mail_content_loaded's new signature.Jon Trowbridge2001-12-129-96/+189 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-12-11 Jon Trowbridge <trow@ximian.com> * mail-identify.c (mail_identify_mime_part): Fixed for mail_content_loaded's new signature. * mail-format.c (attachment_header): Don't convert URLs, etc. if we are printing. (write_address): Don't convert addresses to mailto: links if we are printing. (write_one_text_plain_chunk): Add a printing flag, that we pass along to mail_text_write. (handle_text_plain): Pass our printing flag to write_one_text_plain_chunk. (mail_get_message_rfc822): Don't unneccesarily convert URLs. (mail_content_loaded): Add a GtkHTML parameter. * mail-display.c (mail_display_initialize_gtkhtml): Added. Breaks all of the signal hookups out of mail_display_new. (mail_display_new): Call mail_display_initialize_gtkhtml. (mail_text_write): Don't convert URLs, etc., if we are printing. Lots of other changes to pass around GtkHTML/GtkHTMLStream objects. * mail-callbacks.c (do_mail_print): Call mail_display_initialize_gtkhtml on our GtkHTML object. * folder-browser.c (update_status_bar): Make the status bar more useful when you have a large number of hidden messages. svn path=/trunk/; revision=14997 * Add ETable magic for our new "Needs Reply" column. (The next few entriesJon Trowbridge2001-12-1210-230/+399 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-12-11 Jon Trowbridge <trow@ximian.com> * message-list.etspec: Add ETable magic for our new "Needs Reply" column. (The next few entries are for bug #90) * message-list.h: Add COL_NEED_REPLY. * message-list.c: Move mail_need_reply_xpm to the end of states_pixmaps. (ml_duplicate_value): Handle COL_NEED_REPLY. (ml_free_value): Handle COL_NEED_REPLY. (ml_initialize_value): Handle COL_NEED_REPLY. (ml_value_is_empty): Handle COL_NEED_REPLY. Added needs_reply_map[] array. (ml_value_to_string): Handle COL_NEED_REPLY. (ml_tree_value_at): Fix magic numbers, undoing my changes from the otehr day. Add handler for COL_NEED_REPLY. (message_list_create_extras): Attach icons for COL_NEED_REPLY. (on_click): Undo my previous changes to display need-reply status in COL_MESSAGE_STATUS. Add handing for COL_NEED_REPLY. * mail.h: Change mail_format_mime_message, mail_format_raw_message and the MailMimeHandlerFn typedef to take GtkHTML and GtkHTMLStream args, as per our changes in mail-format.c. * mail-format.c: Giant refactoring. Remove the assumption throughout that we will always want to render into the GtkHTML object contained in the MailDisplay. Instead, always pass in the GtkHTML and GtkHTMLStream that we want to write to. Also, ignore theme work-arounds if the printing flag is set. (This and what follows fixes bug #82) * mail-display.h: Remove GtkHTMLStream *stream from MailDisplay. We don't need it anymore. * mail-display.c (mail_display_render): Added. Breaks the code that renders the message into the GtkHTML object out of mail_display_redisplay. (mail_display_redisplay): Call mail_display_render. (mail_display_init): Remove reference to ->stream. (mail_display_new): Remove reference to ->stream. * mail-callbacks.c (do_mail_print): Create a new GtkHTML to render our printed version into (via the new function mail_display_render. Set the MailDisplay's printing flag to TRUE before we render, and set it back to FALSE afterwards. (do_mail_fetch_and_print): If the preview pane isn't open when we try to print, fetch the message before printing. (print_msg): Call do_mail_fetch_and_print. (print_preview_msg): Call do_mail_fetch_and_print. * folder-browser-ui.c: Remove "PrintMessage" and "PrintPreviewMessage" from message_pane_enables... these now work when the preview pane is closed. Disable printing if multiple messages are selected. svn path=/trunk/; revision=14981 * Don't expunge when we sync anymore, this fixes bug #4472.Jeffrey Stedfast2001-12-112-2/+7 | | | | | | | | | 2001-12-10 Jeffrey Stedfast <fejj@ximian.com> * mail-ops.c (filter_folder_filter): Don't expunge when we sync anymore, this fixes bug #4472. svn path=/trunk/; revision=14969 * Make sure that the message subject is non-NULL beforetrying to base aJeffrey Stedfast2001-12-114-29/+40 | | | | | | | | | | | | | | | | | | | 2001-12-04 Jeffrey Stedfast <fejj@ximian.com> * mail-autofilter.c (rule_from_message): Make sure that the message subject is non-NULL beforetrying to base a vfolder rule off it. Fixes bug #16284. 2001-12-07 Jeffrey Stedfast <fejj@ximian.com> * mail-accounts.c (construct): Connect to the dialog's "destroy" event and close any druids/editors that may be open when that signal is caught. Fixes bug #16501. * mail-vfolder.c (vfolder_edit): Set the window title to "Virtual Folders". Fixes bug #16695. svn path=/trunk/; revision=14966 * set paper size to _("US-Letter"), use gtk_html_print_set_masterRadek Doulik2001-12-112-2/+7 | | | | | | | | | 2001-12-05 Radek Doulik <rodo@ximian.com> * mail-callbacks.c (do_mail_print): set paper size to _("US-Letter"), use gtk_html_print_set_master svn path=/trunk/; revision=14953 * Don't just assume all of the GtkHTMLEmbedded's fields are filled in, sinceDan Winship2001-12-105-7/+35 | | | | | | | | | | | | | | | | | * mail-display.c (on_object_requested): Don't just assume all of the GtkHTMLEmbedded's fields are filled in, since HTML messages may have <object>s in them that we're not expecting. * mail-send-recv.c (mail_send_receive): Add a "current_folder" arg. (build_dialogue): Remember the current_folder (free_send_data): If current_folder is set, refresh it so it's guaranteed to be synced with the folder tree. Fixes #14770. * mail-callbacks.c (send_receive_mail): Pass current_folder to mail_send_receive(). svn path=/trunk/; revision=14950 * Implements marking messages as "Need Reply".Jon Trowbridge2001-12-105-48/+144 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implements marking messages as "Need Reply". 2001-12-09 Jon Trowbridge <trow@ximian.com> * mail-need-reply.xpm: Added a really, really ugly and awful icon to symbolize "message needs a reply". * Makefile.am (EXTRA_DIST): Added mail-need-reply.xpm. 2001-12-09 Jon Trowbridge <trow@ximian.com> * camel-folder-summary.c: Add "NeedsReply" to the flag_names array for CAMEL_MESSAGE_NEEDS_REPLY. * camel-folder-summary.h: Added CAMEL_MESSAGE_NEEDS_REPLY flag. 2001-12-09 Jon Trowbridge <trow@ximian.com> * vfoldertypes.xml: Add "Needs Reply" option to different status types. * filtertypes.xml: Add "Needs Reply" option to different status types. 2001-12-09 Jon Trowbridge <trow@ximian.com> * message-list.c: #include "art/mail-need-reply.xpm". (ml_tree_value_at): Adjust magic numbers, show "Need Reply" icon if the message needs reply. (message_list_create_extras): Adjust magic numbers to add new icon. (on_click): Changed to toggle between unread, read, and need reply when the status icon is clicked. * mail-callbacks.c (mark_as_needing_reply): Added. (mark_as_not_needing_reply): Added. Add "set" value to struct post_send_data. (composer_sent_cb): Use both "flags" and "set" elements of post_send_data when setting message flags. (mail_reply): Clear "Needs Reply" flag when we actually reply to a message. * folder-browser.c: Changed flag values to be given by bit-shifting (1<<5) vs. base-ten (32). Added CAN_MARK_DOESNT_NEED_REPLY flag. Added "Mark as Needing Reply" and "Mark as Not Needing Reply" elements to context menu. (on_right_click): Hide "Mark as (Not) Needing Reply" context menu elements as appropriate. svn path=/trunk/; revision=14946 * Check that the mail-display hasn't been destroyed.Jeffrey Stedfast2001-12-084-7/+42 | | | | | | | | | | | | | | | | | | | 2001-12-04 Jeffrey Stedfast <fejj@ximian.com> * mail-display.c (stream_write_or_redisplay_when_loaded): Check that the mail-display hasn't been destroyed. (mail_display_redisplay): Same here. 2001-12-07 Dan Winship <danw@ximian.com> * mail-send-recv.c (receive_update_got_store): If updating a store that we don't have an associated storage for, just request a folder tree and then free it. (For the Connector) * mail-callbacks.h: Add missing part of Jeff's 12-03 patch so this actually compiles. svn path=/trunk/; revision=14938 * s/PREVIEW_RELEASE/VERSION_COMMENTJeffrey Stedfast2001-12-072-1/+5 | | | | | | | | 2001-12-06 Jeffrey Stedfast <fejj@ximian.com> * mail-ops.c (mail_send_message): s/PREVIEW_RELEASE/VERSION_COMMENT svn path=/trunk/; revision=14924 * ack, forgot about this piece of the patchJeffrey Stedfast2001-12-071-1/+1 | | | | svn path=/trunk/; revision=14916 * Don't append "(Preview Version)" at the end of the version string. Use theJeffrey Stedfast2001-12-072-6/+9 | | | | | | | | | | 2001-12-03 Jeffrey Stedfast <fejj@ximian.com> * mail-ops.c (mail_send_message): Don't append "(Preview Version)" at the end of the version string. Use the PREVIEW_RELEASE #define instead. svn path=/trunk/; revision=14913 * fixed changelog merge conflictsJeffrey Stedfast2001-12-071-1/+0 | | | | svn path=/trunk/; revision=14906 * Setup the UI for the AddSenderToAddressbook ui verb thingy.Jeffrey Stedfast2001-12-074-39/+24 | | | | | | | | | | | | 2001-12-03 Jeffrey Stedfast <fejj@ximian.com> * folder-browser-ui.c: Setup the UI for the AddSenderToAddressbook ui verb thingy. * mail-callbacks.c (add_sender_to_addrbook): New bonobo-ui callback that adds a sender to the addressbook. svn path=/trunk/; revision=14905 * Allow 'n' and 'p' to work when multiple messages are selected. FixesJon Trowbridge2001-12-052-6/+9 | | | | | | | | | | 2001-12-04 Jon Trowbridge <trow@ximian.com> * folder-browser-ui.c (folder_browser_ui_set_selection_state): Allow 'n' and 'p' to work when multiple messages are selected. Fixes #12062. svn path=/trunk/; revision=14874 * If the path exists, make sure it's a regular file (or we can't possiblyJeffrey Stedfast2001-12-043-24/+58 | | | | | | | | | | | | | | | | 2001-11-28 Jeffrey Stedfast <fejj@ximian.com> * mail-callbacks.c (save_msg_ok): If the path exists, make sure it's a regular file (or we can't possibly save to it). Fix for #14127. 2001-11-28 Jeffrey Stedfast <fejj@ximian.com> * message-list.c (message_list_select): Cleaned up the code. * mail-callbacks.c (previous_unread_msg): Pass wraparound as TRUE. svn path=/trunk/; revision=14850 * Fix the boolean check to be && and not ||.Jeffrey Stedfast2001-12-012-1/+6 | | | | | | | | | 2001-11-24 Jeffrey Stedfast <fejj@ximian.com> * mail-config.c (pgpopen): Fix the boolean check to be && and not ||. svn path=/trunk/; revision=14826 * Reverted the non-NULL mime-type patch from a little while back, didn'tJeffrey Stedfast2001-11-282-6/+8 | | | | | | | | | | 2001-11-27 Jeffrey Stedfast <fejj@ximian.com> * mail-format.c (format_mime_part): Reverted the non-NULL mime-type patch from a little while back, didn't mean to commit this. svn path=/trunk/; revision=14798 * merged from evoution-1-0-branchNot Zed2001-11-285-24/+38 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-11-25 Not Zed <NotZed@Ximian.com> * mail-config.c (config_read): Enable news accounts that exist always, since no gui for it. 2001-11-20 Jeffrey Stedfast <fejj@ximian.com> * message-list.c (message_list_select): 'n' shouldn't wrap if 'p' doesn't. * mail-format.c (format_mime_part): Make sure the mime-type is non-NULL before passing it off to mail_lookup_handler(). 2001-11-20 Not Zed <NotZed@Ximian.com> * folder-browser-ui.c: Disable search if no message loaded/viewed. Also for #14348. * folder-browser.c: Disable "Add sender to addressbook" if we dont have a message loaded (it wont work). For #14348. 2001-11-20 Jeffrey Stedfast <fejj@ximian.com> * mail-display.c (load_content_loaded): Make sure the mail-display object is still "alive" before accessing any of it's data. svn path=/trunk/; revision=14796 * Reverted my hide_save_state patch.Jeffrey Stedfast2001-11-222-6/+4 | | | | | | | | 2001-11-21 Jeffrey Stedfast <fejj@ximian.com> * message-list.c: Reverted my hide_save_state patch. svn path=/trunk/; revision=14775 * 'n' shouldn't wrap if 'p' doesn't.Jeffrey Stedfast2001-11-212-9/+5 | | | | | | | | | 2001-11-20 Jeffrey Stedfast <fejj@ximian.com> * message-list.c (message_list_select): 'n' shouldn't wrap if 'p' doesn't. svn path=/trunk/; revision=14766 * Save hide state. (message_list_hide_uids): Save hide state.Jeffrey Stedfast2001-11-173-6/+25 | | | | | | | | | | | | | 2001-11-16 Jeffrey Stedfast <fejj@ximian.com> * message-list.c (message_list_hide_clear): Save hide state. (message_list_hide_uids): Save hide state. (message_list_hide_add): Save hide state. * mail-format.c (format_mime_part): Make sure the mime-type is non-NULL before passing it off to mail_lookup_handler(). svn path=/trunk/; revision=14734 * Undo a really weird mangling of part of the ChangeLog from last AugustDan Winship2001-11-161-42/+42 | | | | svn path=/trunk/; revision=14728 * s/_/U_/ (filter_rule_set_name requires UTF-8 string)Chyla Zbigniew2001-11-152-4/+10 | | | | | | | * mail-autofilter.c (rule_match_recipients, rule_from_message, rule_from_mlist): s/_/U_/ (filter_rule_set_name requires UTF-8 string) svn path=/trunk/; revision=14707 * Instead of doing pthread_exit() after redirecting the SEGV, try to lock aDan Winship2001-11-152-1/+17 | | | | | | | | | * main.c (segv_redirect): Instead of doing pthread_exit() after redirecting the SEGV, try to lock a mutex we know is already locked. This will hopefully help debug a bunch of bugs where the crashed thread seems to be missing from the bug-buddy report. svn path=/trunk/; revision=14699 * Call e_passwords_remember_password() for account passwords if the user setJeffrey Stedfast2001-11-152-8/+23 | | | | | | | | | | 2001-11-13 Jeffrey Stedfast <fejj@ximian.com> * mail-session.c (pass_got): Call e_passwords_remember_password() for account passwords if the user set the "remember password" checkbox. svn path=/trunk/; revision=14696 * Add a NULL check for rule->name. (mail_vfolder_add_uri): Same here.Jeffrey Stedfast2001-11-132-6/+20 | | | | | | | | | | 2001-11-12 Jeffrey Stedfast <fejj@ximian.com> * mail-vfolder.c (vfolder_load_storage): Add a NULL check for rule->name. (mail_vfolder_add_uri): Same here. svn path=/trunk/; revision=14677 * If we already have the message loaded in the mail-display, don't botherJeffrey Stedfast2001-11-112-3/+15 | | | | | | | | | | 2001-11-09 Jeffrey Stedfast <fejj@ximian.com> * mail-callbacks.c (forward_message): If we already have the message loaded in the mail-display, don't bother re-loading. This happens to fix bug #14848. svn path=/trunk/; revision=14663 * Was x_evolution_message_parse from folder-browser.c. A space char is noJeffrey Stedfast2001-11-105-68/+69 | | | | | | | | | | | | | | | | | | | | 2001-11-08 Jeffrey Stedfast <fejj@ximian.com> * mail-tools.c (mail_tools_x_evolution_message_parse): Was x_evolution_message_parse from folder-browser.c. A space char is no longer used to separate the folder URI and the first uid, instead this is now done with a nul-char so update to parse the newer/better format. * component-factory.c (destination_folder_handle_drop): Update to parse the new/better format. * folder-browser.c (x_evolution_message_parse): Moved to mail-tools.c (message_list_drag_data_get): Instead of placing a space char after the folder URI, instead use a nul-char. svn path=/trunk/; revision=14645 * Call mail_config_pgp_type_detect_from_path() instead of doing our own lameJeffrey Stedfast2001-11-094-20/+243 | | | | | | | | | | | | | | | | 2001-11-06 Jeffrey Stedfast <fejj@ximian.com> * mail-accounts.c (pgp_path_changed): Call mail_config_pgp_type_detect_from_path() instead of doing our own lame auto-detection that didn't even work ;-) * mail-config.c (auto_detect_pgp_variables): Execute the pgp binary and look at it's version string if we have a version string to compare to. (mail_config_pgp_type_detect_from_path): New function that takes a pgp path and attempts to figure out what pgp version it is. svn path=/trunk/; revision=14634 * Add a "x-inline-pgp-hack=true" paramter to the multipart's content-type.Jeffrey Stedfast2001-11-082-1/+7 | | | | | | | | | 2001-11-07 Jeffrey Stedfast <fejj@ximian.com> * mail-format.c (try_inline_pgp): Add a "x-inline-pgp-hack=true" paramter to the multipart's content-type. svn path=/trunk/; revision=14619 * Don't make the account editor modal either.Jeffrey Stedfast2001-11-067-62/+109 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-11-05 Jeffrey Stedfast <fejj@ximian.com> * mail-account-editor.c (construct): Don't make the account editor modal either. * mail-accounts.c (mail_add): Use the new global account druid variable so that we can avoid having more than a single druid at a time. If a druid already exists, bring it to the top. (mail_edit): Same idea only for the account editor this time. (mail_editor_destroyed): Set the global editor to NULL. (mail_add_finished): Set the global druid to NULL. (mail_delete): Don't allow any deletes if an account editor is opened (we don't want to be able to delete the account we are editing...) (news_edit): Same thing for the news editor. (news_editor_destroyed): Set the news editor to NULL. (news_add): And again for the news add. * mail-account-gui.c (service_check_supported): Updated to pass a GtkWindow argument to mail_config_check_service(). * mail-config.c (mail_config_check_service): Now takes a GtkWindow argument so we can set our parent window. Also, don't make this dialog modal either. * mail-config-druid.c (construct): Don't make this druid modal. svn path=/trunk/; revision=14598 * Override the Move/Copy handlers setup by the folder_browser_ui code, and52001-11-063-1/+113 | | | | | | | | | | | | | | | | | | | | 2001-11-05 <NotZed@Ximian.com> * message-browser.c (set_bonobo_ui): Override the Move/Copy handlers setup by the folder_browser_ui code, and use our own, because we need to pass it a live window which we can't. (transfer_msg): Our own version of mail-callbacks.c:transfer_msg, so we can properly pass the parent to the user_select_folder. (transfer_msg_done): Also copy this so we can pass it diff args. All fix #13919. * mail-callbacks.c (transfer_msg): Set physical/uri to NULL before calling, because althought he shell client api call is supposed to null these out, it doesn't with its stupid assertion checks on entry. Also free physical to plug a memleak. Bugs exposed by #13919. svn path=/trunk/; revision=14597 * Renamed from mail_html_write_string.Jeffrey Stedfast2001-11-066-171/+205 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-11-01 Jeffrey Stedfast <fejj@ximian.com> * mail-display.h (mail_html_write): Renamed from mail_html_write_string. * mail-display.c (mail_text_write): Don't bother with varargs since nothing used them, we were only passing strings anyway... (mail_error_printf): Renamed from mail_error_write, this makes more sense. (mail_html_write): Removed. * mail-format.c: Updated to use gtk_html_stream_printf directly and s/mail_html_write_string/mail_html_write. (mail_lookup_handler): Don't use %.*s here either... (handle_text_enriched): Same. (write_one_text_plain_chunk): And finally here (also update for new mail_text_write api). (handle_multipart_signed): Update for new mail_text_write api. (format_mime_part): Update for new mail_error_text/printf name change. (handle_multipart_encrypted): Same. * mail-tools.c (mail_tool_generate_forward_subject): Same as mail_generate_reply. * mail-callbacks.c (mail_generate_reply): Don't use %.*s in any *printf* functions. svn path=/trunk/; revision=14590 * Use GINT_TO_POINTER here for platforms where simply casting an int to voidChristopher James Lahey2001-11-032-3/+14 | | | | | | | | | | | 2001-11-02 Christopher James Lahey <clahey@ximian.com> * message-list.c (ml_tree_value_at): Use GINT_TO_POINTER here for platforms where simply casting an int to void * won't work. (build_flat_diff, main_folder_changed): Call e_tree_model_pre_change here. svn path=/trunk/; revision=14581 * Disconnect from the message_list_built function so we dont do it every22001-11-035-9/+49 | | | | | | | | | | | | | | | | | | | | | | | 2001-11-02 <NotZed@Ximian.com> * message-browser.c (message_browser_message_list_built): Disconnect from the message_list_built function so we dont do it every time the list is rebuilt. * mail-callbacks.c (composer_send_cb): Disable autosave when we're sending mail. (composer_sent_cb): Re-enable autosave. * folder-browser-ui.c (fbui_sensitize_timeout): Make sure we reset any data we're using on the folderbrowser before doing anything 'cause things could vanish while we're doing it, and also ref/unref the folderbrowser so it doesn't vanish while w'ere working. * folder-browser.c (folder_browser_set_ui_component): If we are changing the ui comp, remove any pending timeouts. For #13719. svn path=/trunk/; revision=14575 * fix cut & paste from the message body.Larry Ewing2001-11-022-2/+6 | | | | | | | | | 2001-11-01 Larry Ewing <lewing@ximian.com> * folder-browser.c (folder_browser_copy): fix cut & paste from the message body. svn path=/trunk/; revision=14568 * Write out the url before callind add_url since add_url may free it. FixesDan Winship2001-11-023-4/+9 | | | | | | | | | | * mail-format.c (handle_multipart_signed): Write out the url before callind add_url since add_url may free it. Fixes #13839. Remove debug printf. * mail-display.c (on_object_requested): Remove debug printf. svn path=/trunk/; revision=14564 * Don't use a case-sensitive comparison.Jeffrey Stedfast2001-11-012-2/+8 | | | | | | | | | 2001-10-31 Jeffrey Stedfast <fejj@ximian.com> * mail-callbacks.c (list_add_addresses): Don't use a case-sensitive comparison. svn path=/trunk/; revision=14556 * Make this work again.Dan Winship2001-11-012-1/+4 | | | | | | * mail-format.c (try_inline_pgp_sig): Make this work again. svn path=/trunk/; revision=14545 * add delete_event_handler. (menu_file_save_close_cb): add save and closeLarry Ewing2001-10-312-5/+34 | | | | | | | | | | | 2001-10-30 Larry Ewing <lewing@ximian.com> * mail-account-gui.c (delete_event_cb): add delete_event_handler. (menu_file_save_close_cb): add save and close command. (launch_signature_editor): initial the editor as having changed and attach the delete event handler. svn path=/trunk/; revision=14499 * Turn it off.02001-10-312-1/+3 | | | | | | | | 2001-10-30 <NotZed@Ximian.com> * message-browser.c (d): Turn it off. svn path=/trunk/; revision=14483 * Added exception strings to some of the op logging.02001-10-313-23/+12 | | | | | | | | | | | | | | 2001-10-30 <NotZed@Ximian.com> * mail-mt.c: Added exception strings to some of the op logging. * mail-format.c (elide_quotes): Remove, uh, what was this for, its not used anywhere? Also loops the instant it had a ", good one trow! :) (write_address): Remove name_arg/email_arg, these aren't used anywhere. svn path=/trunk/; revision=14482 * If we have a cancellation setup, destroy it immediately, to save fd's.02001-10-312-3/+15 | | | | | | | | | | | 2001-10-30 <NotZed@Ximian.com> * mail-mt.c (mail_msg_received): If we have a cancellation setup, destroy it immediately, to save fd's. (mail_msg_cancel): Check cancel != NULL. (mail_msg_free): Same. svn path=/trunk/; revision=14470 * Comment out the Folder: and you've got mail prints.02001-10-303-21/+52 | | | | | | | | | | | | | | | | | | | | | | 2001-10-30 <NotZed@Ximian.com> * folder-info.c: Comment out the Folder: and you've got mail prints. * mail-config-druid.c (wizard_next_cb): If we have a next function, honour if it tells us its going to set the page, and dont set it, otherwise, set it to the next page, unless we're at the end of our pages, and let the wizard do it itself. (wizard_back_cb): Same for going back. Rest of fix for #12127, see e-shell-startup-wizard for the rest. (next_func): If we're not on the last page, tell the druid we're gonna handle the next button, so we can sync properly with it, needed for above changes. (back_func): Similarly for going back past page 0. (wizard_listener_event): We want to set the page to the actual one asked for not, pagenum-1. svn path=/trunk/; revision=14449 * Oops, dont use the url storage path to offset the folder name we're02001-10-302-2/+7 | | | | | | | | | 2001-10-30 <NotZed@Ximian.com> * mail-local.c (mls_rename_folder): Oops, dont use the url storage path to offset the folder name we're renaming/opening, etc. svn path=/trunk/; revision=14431 * Require gal 0.15.99.8Joe Shaw2001-10-306-8/+6 | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-10-29 Joe Shaw <joe@ximian.com> * configure.in: Require gal 0.15.99.8 * addressbook/backend/ebook/e-card-simple.c, addressbook/gui/component/addressbook-storage.c, addressbook/gui/widgets/e-addressbook-view.c, calendar/gui/e-calendar-table.c, calendar/gui/e-itip-control.c, calendar/gui/e-meeting-model.c, calendar/gui/itip-utils.c, calendar/gui/print.c, calendar/gui/alarm-notify/alarm-notify-dialog.c, filter/rule-editor.c, mail/mail-config.c, mail/mail-folder-cache.c, mail/mail-format.c, mail/mail-local.c, mail/mail-ops.c, mail/mail-vfolder.c, shell/e-local-storage.c, shell/e-summary-storage.c: Change includes of e-util/e-unicode-i18n.h to gal/util/e-unicode-i18n.h svn path=/trunk/; revision=14427 * Argh!!! Dont free the async op data here, the async op is still running02001-10-3010-43/+83 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-10-30 <NotZed@Ximian.com> * subscribe-dialog.c (fe_cancel_op_foreach): Argh!!! Dont free the async op data here, the async op is still running and will access it! Just try to cancel it and mark it as cancelled (id == -1) (fe_done_subscribing): Only remove outselves from the hash table if we're not cancelled. The handle should always be set here, since this code runs in the gui thread. * message-list.c (on_cursor_activated_idle): If nothing selected/cursor not activated, then select no message. * mail-folder-cache.c (update_1folder): Make the trash count optional on EVOLUTION_COUNT_TRASH, becuase some lusers are just too stupid to understand what its for. * component-factory.c (storage_xfer_folder): Return slightly better error codes for copying folders, since its not implemented yet. * mail-vfolder.c, mail-local.c, mail-folder-cache.c, message-list.c component-factory.c, mail-ops.c, subscribe-dialog.c, mail-session.c: d() out some debug printfs, w() out some warnings. * folder-browser-ui.c (folder_browser_ui_add_message): Fix typo, Resent->Resend. svn path=/trunk/; revision=14412 * Don't warn the user if the source and destination folders are the same.Jeffrey Stedfast2001-10-303-4/+7 | | | | | | | | | 2001-10-29 Jeffrey Stedfast <fejj@ximian.com> * mail-ops.c (transfer_messages_transfer): Don't warn the user if the source and destination folders are the same. svn path=/trunk/; revision=14410 * add some debug spew re 13839.Dan Winship2001-10-303-0/+10 | | | | | | | | | * mail-format.c (handle_multipart_signed): add some debug spew re 13839. * mail-display.c (on_object_requested): here too svn path=/trunk/; revision=14404 * Fixed a warning by #if 0ing out this function.Christopher James Lahey2001-10-305-2/+44 | | | | | | | | | | | | | | | 2001-10-29 Christopher James Lahey <clahey@ximian.com> * e-searching-tokenizer.c (search_info_set_match_size_increase): Fixed a warning by #if 0ing out this function. * folder-browser.c, folder-browser.h (on_selection_changed): Update status bar in an idle call. Fixes Ximian bug #13929. * mail-folder-cache.c (folder_renamed, store_folder_renamed): Fixed some warnings here. svn path=/trunk/; revision=14372 * Fix the focus check. It's not fb->message_list that has focus, it's one ofDan Winship2001-10-302-1/+7 | | | | | | | | * folder-browser.c (folder_browser_copy): Fix the focus check. It's not fb->message_list that has focus, it's one of its children. #13616. svn path=/trunk/; revision=14370 * Sort the folder updates first, since we dont seem to get them in the right92001-10-293-24/+37 | | | | | | | | | | | | | | 2001-10-29 <NotZed@Ximian.com> * mail-folder-cache.c (store_folder_renamed): Sort the folder updates first, since we dont seem to get them in the right order, or infact in any tree representation whatsoever when using IMAP ...? get_folder_info bugs? Unrelated note to self, the subscribe dialogue may interfere with the folder cache. svn path=/trunk/; revision=14328 * Copy the folder's full_name before trying to use it to rename.92001-10-297-26/+56 | | | | | | | | | | | | | | | | | | | | | 2001-10-29 <NotZed@Ximian.com> * mail-vfolder.c (rule_changed): Copy the folder's full_name before trying to use it to rename. (vfolder_edit_rule): Set 'orig' to be a reference of the original rule. (edit_rule_clicked): Dont lookup orig by name, copy it over instead. * folder-browser.c (got_folder): oops, emit signal before unreffing object, incase we got killded during getting folder. (got_folder): Reset get_id. (folder_browser_new): Set get_id of the get_folder task. (folder_browser_init): Init get_id. (folder_browser_destroy): IF we have outstanding 'get folder' op, cancel it. svn path=/trunk/; revision=14323 * Call mail_autoreceive_setup() instead of mail_autoreceive_setup_account()Jeffrey Stedfast2001-10-29