aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNot Zed <NotZed@Ximian.com>2004-03-03 14:39:14 +0800
committerMichael Zucci <zucchi@src.gnome.org>2004-03-03 14:39:14 +0800
commit467bbf6fb6b0b215d7b6bd18a6b84acd839a08f9 (patch)
tree9bb0cb5e2fb74fbea57f5dfd818a4769349f8990
parent9b2a16eb3e313e3057a8ac785fecacf54c8266a0 (diff)
downloadgsoc2013-evolution-467bbf6fb6b0b215d7b6bd18a6b84acd839a08f9.tar
gsoc2013-evolution-467bbf6fb6b0b215d7b6bd18a6b84acd839a08f9.tar.gz
gsoc2013-evolution-467bbf6fb6b0b215d7b6bd18a6b84acd839a08f9.tar.bz2
gsoc2013-evolution-467bbf6fb6b0b215d7b6bd18a6b84acd839a08f9.tar.lz
gsoc2013-evolution-467bbf6fb6b0b215d7b6bd18a6b84acd839a08f9.tar.xz
gsoc2013-evolution-467bbf6fb6b0b215d7b6bd18a6b84acd839a08f9.tar.zst
gsoc2013-evolution-467bbf6fb6b0b215d7b6bd18a6b84acd839a08f9.zip
if we have the folder opened already, and its the outbox, then use the
2004-03-03 Not Zed <NotZed@Ximian.com> * em-inline-filter.c (emif_scan): * em-folder-tree-model.c (em_folder_tree_model_set_folder_info): if we have the folder opened already, and its the outbox, then use the total count instead of unread count. Bit of hack, but copies mail-folder-cache stuff. * mail-component.c (mc_add_store): renamed from mail_component_add_store, internal call. Added a done callback. (mc_add_local_store): renamed from mc_add_store, callback for local store. (mail_component_add_store): call mc_add_store to do the work. (mc_add_local_store_done): ugh, the target of all this shit - note all the default folders now they should be setup. * mail-folder-cache.c (mail_note_folder): clean up the logic a bit. was gonna do osmething else but it didn't work. 2004-03-02 Not Zed <NotZed@Ximian.com> * mail-send-recv.c (mail_send): if we're already sending, up the again count to tell it we need to re-send again. (receive_done): if we've been asked to run a send again while we were already running it, run it again to make sure we didn't miss any new messages. See bug #46839. * em-mailer-prefs.c (em_mailer_prefs_construct): update check_incoming_imap changes for merge conflicts. (settings_changed): i have no idea what these changes jeff did do, but check_incoming_imap is no longer needed, so i've deleted most of it. 2004-02-27 Not Zed <NotZed@Ximian.com> * em-format.c (emf_multipart_encrypted, emf_multipart_signed): If validation fails, display as multipart/mixed rather than unkown attachment type, and make the error a little clearer that its an error. See #52939. 2004-02-26 Not Zed <NotZed@Ximian.com> * message-list.c (regen_list_regened): NOOP if the folder has changed. * mail-session.c (mail_session_check_junk_notify): remove check_incoming_imap test. (mail_session_init): " * evolution-mail.schemas.in.in: Remove check_incoming_imap option. * mail-config.glade: Remove check incoming imap checkbox. * em-mailer-prefs.c (em_mailer_prefs_construct): remove check_incoming_imap test. (em_mailer_prefs_apply): " (settings_changed): " svn path=/trunk/; revision=24944
-rw-r--r--mail/ChangeLog59
-rw-r--r--mail/em-folder-tree-model.c30
-rw-r--r--mail/em-format.c12
-rw-r--r--mail/em-mailer-prefs.c25
-rw-r--r--mail/em-mailer-prefs.h1
-rw-r--r--mail/evolution-mail.schemas.in.in14
-rw-r--r--mail/mail-component.c65
-rw-r--r--mail/mail-config.glade52
-rw-r--r--mail/mail-folder-cache.c28
-rw-r--r--mail/mail-ops.c6
-rw-r--r--mail/mail-send-recv.c18
-rw-r--r--mail/mail-session.c3
12 files changed, 166 insertions, 147 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 9c09a787b3..cdf0fd8097 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,62 @@
+2004-03-03 Not Zed <NotZed@Ximian.com>
+
+ * em-inline-filter.c (emif_scan):
+
+ * em-folder-tree-model.c (em_folder_tree_model_set_folder_info):
+ if we have the folder opened already, and its the outbox, then use
+ the total count instead of unread count. Bit of hack, but copies
+ mail-folder-cache stuff.
+
+ * mail-component.c (mc_add_store): renamed from
+ mail_component_add_store, internal call. Added a done callback.
+ (mc_add_local_store): renamed from mc_add_store, callback for
+ local store.
+ (mail_component_add_store): call mc_add_store to do the work.
+ (mc_add_local_store_done): ugh, the target of all this shit - note
+ all the default folders now they should be setup.
+
+ * mail-folder-cache.c (mail_note_folder): clean up the logic a
+ bit. was gonna do osmething else but it didn't work.
+
+2004-03-02 Not Zed <NotZed@Ximian.com>
+
+ * mail-send-recv.c (mail_send): if we're already sending, up the
+ again count to tell it we need to re-send again.
+ (receive_done): if we've been asked to run a send again while we
+ were already running it, run it again to make sure we didn't miss
+ any new messages. See bug #46839.
+
+ * em-mailer-prefs.c (em_mailer_prefs_construct): update
+ check_incoming_imap changes for merge conflicts.
+ (settings_changed): i have no idea what these changes jeff did do,
+ but check_incoming_imap is no longer needed, so i've deleted most
+ of it.
+
+2004-02-27 Not Zed <NotZed@Ximian.com>
+
+ * em-format.c (emf_multipart_encrypted, emf_multipart_signed): If
+ validation fails, display as multipart/mixed rather than unkown
+ attachment type, and make the error a little clearer that its an
+ error. See #52939.
+
+2004-02-26 Not Zed <NotZed@Ximian.com>
+
+ * message-list.c (regen_list_regened): NOOP if the folder has
+ changed.
+
+ * mail-session.c (mail_session_check_junk_notify): remove
+ check_incoming_imap test.
+ (mail_session_init): "
+
+ * evolution-mail.schemas.in.in: Remove check_incoming_imap option.
+
+ * mail-config.glade: Remove check incoming imap checkbox.
+
+ * em-mailer-prefs.c (em_mailer_prefs_construct): remove
+ check_incoming_imap test.
+ (em_mailer_prefs_apply): "
+ (settings_changed): "
+
2004-03-02 Jeffrey Stedfast <fejj@ximian.com>
* em-folder-tree.c (emft_tree_button_press): s/||/&&/. Fixes a
diff --git a/mail/em-folder-tree-model.c b/mail/em-folder-tree-model.c
index 91defd775b..948de7774a 100644
--- a/mail/em-folder-tree-model.c
+++ b/mail/em-folder-tree-model.c
@@ -41,12 +41,16 @@
#include "mail-tools.h"
#include "mail-mt.h"
+/* sigh, these 2 only needed for outbox total count checking - a mess */
+#include "mail-component.h"
+#include "mail-folder-cache.h"
+
#include "em-utils.h"
#include "em-marshal.h"
#include "em-folder-tree-model.h"
-
+#define u(x) /* unread count debug */
#define d(x) x
static GType col_types[] = {
@@ -408,6 +412,7 @@ em_folder_tree_model_set_folder_info (EMFolderTreeModel *model, GtkTreeIter *ite
GtkTreePath *path;
GtkTreeIter sub;
gboolean load;
+ struct _CamelFolder *folder;
load = fi->child == NULL && !(fi->flags & (CAMEL_FOLDER_NOCHILDREN | CAMEL_FOLDER_NOINFERIORS));
@@ -415,12 +420,19 @@ em_folder_tree_model_set_folder_info (EMFolderTreeModel *model, GtkTreeIter *ite
uri_row = gtk_tree_row_reference_new ((GtkTreeModel *) model, path);
path_row = gtk_tree_row_reference_copy (uri_row);
gtk_tree_path_free (path);
-
+
g_hash_table_insert (model->uri_hash, g_strdup (fi->url), uri_row);
g_hash_table_insert (si->path_hash, g_strdup (fi->path), path_row);
-
+
+ /* HACK: if we have the folder, and its the outbox folder, we need the total count, not unread */
+ /* This is duplicated in mail-folder-cache too, should perhaps be functionised */
unread = fi->unread_message_count == -1 ? 0 : fi->unread_message_count;
-
+ if (mail_note_get_folder_from_uri(fi->url, &folder) && folder) {
+ if (folder == mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_OUTBOX))
+ unread = camel_folder_get_message_count(folder);
+ camel_object_unref(folder);
+ }
+
gtk_tree_store_set ((GtkTreeStore *) model, iter,
COL_STRING_DISPLAY_NAME, fi->name,
COL_POINTER_CAMEL_STORE, si->store,
@@ -939,14 +951,20 @@ em_folder_tree_model_set_unread_count (EMFolderTreeModel *model, CamelStore *sto
g_return_if_fail (CAMEL_IS_STORE (store));
g_return_if_fail (path != NULL);
+ u(printf("set unread count %p '%s' %d\n", store, path, unread));
+
if (unread < 0)
unread = 0;
- if (!(si = g_hash_table_lookup (model->store_hash, store)))
+ if (!(si = g_hash_table_lookup (model->store_hash, store))) {
+ u(printf(" can't find store\n"));
return;
+ }
- if (!(row = g_hash_table_lookup (si->path_hash, path)))
+ if (!(row = g_hash_table_lookup (si->path_hash, path))) {
+ u(printf(" can't find row\n"));
return;
+ }
tree_path = gtk_tree_row_reference_get_path (row);
if (!gtk_tree_model_get_iter ((GtkTreeModel *) model, &iter, tree_path)) {
diff --git a/mail/em-format.c b/mail/em-format.c
index e107e39db4..9917f1ce8b 100644
--- a/mail/em-format.c
+++ b/mail/em-format.c
@@ -1158,8 +1158,10 @@ emf_multipart_encrypted(EMFormat *emf, CamelStream *stream, CamelMimePart *part,
opart = camel_mime_part_new();
valid = camel_cipher_decrypt(context, part, opart, ex);
if (valid == NULL) {
- em_format_format_error(emf, stream, ex->desc?ex->desc:_("Could not parse S/MIME message: Unknown error"));
- em_format_part_as(emf, stream, part, NULL);
+ em_format_format_error(emf, stream, ex->desc?("Could not parse S/MIME message"):_("Could not parse S/MIME message: Unknown error"));
+ if (ex->desc)
+ em_format_format_error(emf, stream, ex->desc);
+ em_format_part_as(emf, stream, part, "multipart/mixed");
} else {
em_format_format_secure(emf, stream, opart, valid);
}
@@ -1319,8 +1321,10 @@ emf_multipart_signed(EMFormat *emf, CamelStream *stream, CamelMimePart *part, co
valid = camel_cipher_verify(cipher, part, ex);
if (valid == NULL) {
- em_format_format_error(emf, stream, ex->desc?ex->desc:_("Unknown error verifying signature"));
- em_format_part_as(emf, stream, part, NULL);
+ em_format_format_error(emf, stream, ex->desc?_("Error verifying signature"):_("Unknown error verifying signature"));
+ if (ex->desc)
+ em_format_format_error(emf, stream, ex->desc);
+ em_format_part_as(emf, stream, part, "multipart/mixed");
} else {
em_format_format_secure(emf, stream, cpart, valid);
}
diff --git a/mail/em-mailer-prefs.c b/mail/em-mailer-prefs.c
index 9f12c4522c..ff8c789be0 100644
--- a/mail/em-mailer-prefs.c
+++ b/mail/em-mailer-prefs.c
@@ -159,16 +159,6 @@ static void
settings_changed (GtkWidget *widget, gpointer user_data)
{
EMMailerPrefs *prefs = (EMMailerPrefs *) user_data;
- gboolean check_incoming, locked = FALSE;
-
- if (prefs->check_incoming && prefs->check_incoming_imap) {
- /* this callback can get called in _construct() before
- * these widgets have been created */
- if ((check_incoming = gtk_toggle_button_get_active (prefs->check_incoming)))
- locked = gconf_client_key_is_writable (prefs->gconf, "/apps/evolution/mail/junk/sa/check_incoming_imap", NULL);
-
- gtk_widget_set_sensitive (GTK_WIDGET (prefs->check_incoming_imap), check_incoming && !locked);
- }
if (prefs->control)
evolution_config_control_changed (prefs->control);
@@ -465,7 +455,7 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs)
GtkTreeIter iter;
char *font, *buf;
GladeXML *gui;
- gboolean locked, check_incoming;
+ gboolean locked;
int val, i;
gui = glade_xml_new (EVOLUTION_GLADEDIR "/mail-config.glade", "preferences_tab", NULL);
@@ -756,20 +746,11 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs)
emmp_header_remove_sensitivity (prefs);
/* Junk prefs */
- prefs->check_incoming_imap = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkDoNotCheckIMAP"));
- toggle_button_init (prefs->check_incoming_imap, prefs->gconf,
- "/apps/evolution/mail/junk/sa/check_incoming_imap",
- TRUE, G_CALLBACK (settings_changed), prefs);
-
prefs->check_incoming = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkCheckIncomingMail"));
toggle_button_init (prefs->check_incoming, prefs->gconf,
"/apps/evolution/mail/junk/sa/check_incoming",
FALSE, G_CALLBACK (settings_changed), prefs);
-
- check_incoming = gtk_toggle_button_get_active (prefs->check_incoming);
- if (!gtk_toggle_button_get_active (prefs->check_incoming))
- gtk_widget_set_sensitive ((GtkWidget *) prefs->check_incoming_imap, FALSE);
-
+
prefs->sa_local_tests_only = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkSALocalTestsOnly"));
toggle_button_init (prefs->sa_local_tests_only, prefs->gconf,
"/apps/evolution/mail/junk/sa/local_only",
@@ -918,8 +899,6 @@ em_mailer_prefs_apply (EMMailerPrefs *prefs)
/* junk prefs */
gconf_client_set_bool (prefs->gconf, "/apps/evolution/mail/junk/check_incoming",
gtk_toggle_button_get_active (prefs->check_incoming), NULL);
- gconf_client_set_bool (prefs->gconf, "/apps/evolution/mail/junk/check_incoming_imap",
- !gtk_toggle_button_get_active (prefs->check_incoming_imap), NULL);
gconf_client_set_bool (prefs->gconf, "/apps/evolution/mail/junk/sa/local_only",
gtk_toggle_button_get_active (prefs->sa_local_tests_only), NULL);
gconf_client_set_bool (prefs->gconf, "/apps/evolution/mail/junk/sa/use_daemon",
diff --git a/mail/em-mailer-prefs.h b/mail/em-mailer-prefs.h
index bf7a2cbfb8..3a182476ff 100644
--- a/mail/em-mailer-prefs.h
+++ b/mail/em-mailer-prefs.h
@@ -116,7 +116,6 @@ struct _EMMailerPrefs {
/* Junk prefs */
GtkToggleButton *check_incoming;
- GtkToggleButton *check_incoming_imap;
GtkToggleButton *sa_local_tests_only;
GtkToggleButton *sa_use_daemon;
};
diff --git a/mail/evolution-mail.schemas.in.in b/mail/evolution-mail.schemas.in.in
index f6b85a1f22..56a17130fc 100644
--- a/mail/evolution-mail.schemas.in.in
+++ b/mail/evolution-mail.schemas.in.in
@@ -688,20 +688,6 @@
</schema>
<schema>
- <key>/schemas/apps/evolution/mail/junk/check_incoming_imap</key>
- <applyto>/apps/evolution/mail/junk/check_incoming_imap</applyto>
- <owner>evolution-mail</owner>
- <type>bool</type>
- <default>true</default>
- <locale name="C">
- <short>Check incoming mail being junk for IMAP accounts</short>
- <long>
- Run junk test on incoming mail for IMAP accounts (only valid if check_incoming is set to true)
- </long>
- </locale>
- </schema>
-
- <schema>
<key>/schemas/apps/evolution/mail/junk/sa/local_only</key>
<applyto>/apps/evolution/mail/junk/sa/local_only</applyto>
<owner>evolution-mail</owner>
diff --git a/mail/mail-component.c b/mail/mail-component.c
index f2d2304736..ec02f61196 100644
--- a/mail/mail-component.c
+++ b/mail/mail-component.c
@@ -106,16 +106,6 @@ struct _MailComponentPrivate {
CamelStore *local_store;
};
-/* Utility functions. */
-static void
-mc_add_store(CamelStore *store, const char *name, MailComponent *mc)
-{
- mail_component_add_store(mc, store, name);
-
- camel_object_unref(store);
- g_object_unref(mc);
-}
-
/* indexed by _mail_component_folder_t */
static struct {
char *name;
@@ -129,6 +119,44 @@ static struct {
{ "Inbox", }, /* 'always local' inbox */
};
+/* Utility functions. */
+static void
+mc_add_store(MailComponent *component, CamelStore *store, const char *name, void (*done)(CamelStore *store, CamelFolderInfo *info, void *data))
+{
+ char *service_name = NULL;
+
+ MAIL_COMPONENT_DEFAULT(component);
+
+ if (name == NULL)
+ name = service_name = camel_service_get_name ((CamelService *) store, TRUE);
+
+ camel_object_ref(store);
+ g_hash_table_insert(component->priv->store_hash, store, g_strdup(name));
+ em_folder_tree_model_add_store(component->priv->model, store, name);
+ mail_note_store(store, NULL, done, component);
+ g_free(service_name);
+}
+
+static void
+mc_add_local_store_done(CamelStore *store, CamelFolderInfo *info, void *data)
+{
+ MailComponent *mc = data;
+ int i;
+
+ for (i=0;i<sizeof(mc_default_folders)/sizeof(mc_default_folders[0]);i++) {
+ if (mc_default_folders[i].folder)
+ mail_note_folder(mc_default_folders[i].folder);
+ }
+}
+
+static void
+mc_add_local_store(CamelStore *store, const char *name, MailComponent *mc)
+{
+ mc_add_store(mc, store, name, mc_add_local_store_done);
+ camel_object_unref(store);
+ g_object_unref(mc);
+}
+
static void
mc_setup_local_store(MailComponent *mc)
{
@@ -170,7 +198,7 @@ mc_setup_local_store(MailComponent *mc)
g_object_ref(mc);
camel_object_ref(p->local_store);
- mail_async_event_emit(p->async_event, MAIL_ASYNC_GUI, (MailAsyncFunc)mc_add_store, p->local_store, _("On This Computer"), mc);
+ mail_async_event_emit(p->async_event, MAIL_ASYNC_GUI, (MailAsyncFunc)mc_add_local_store, p->local_store, _("On This Computer"), mc);
return;
fail:
@@ -329,8 +357,6 @@ impl_dispose (GObject *object)
{
MailComponentPrivate *priv = MAIL_COMPONENT (object)->priv;
- printf("mail dispose?\n");
-
if (priv->activity_handler != NULL) {
g_object_unref (priv->activity_handler);
priv->activity_handler = NULL;
@@ -706,18 +732,7 @@ mail_component_peek_activity_handler (MailComponent *component)
void
mail_component_add_store (MailComponent *component, CamelStore *store, const char *name)
{
- char *service_name = NULL;
-
- MAIL_COMPONENT_DEFAULT(component);
-
- if (name == NULL)
- name = service_name = camel_service_get_name ((CamelService *) store, TRUE);
-
- camel_object_ref(store);
- g_hash_table_insert(component->priv->store_hash, store, g_strdup(name));
- em_folder_tree_model_add_store(component->priv->model, store, name);
- mail_note_store(store, NULL, NULL, NULL);
- g_free(service_name);
+ mc_add_store(component, store, name, NULL);
}
/**
diff --git a/mail/mail-config.glade b/mail/mail-config.glade
index f81eeeaf55..7498de63ee 100644
--- a/mail/mail-config.glade
+++ b/mail/mail-config.glade
@@ -4678,58 +4678,6 @@ For example: &quot;Work&quot; or &quot;Personal&quot;</property>
<property name="fill">False</property>
</packing>
</child>
-
- <child>
- <widget class="GtkHBox" id="hbox177">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkLabel" id="label475">
- <property name="visible">True</property>
- <property name="label" translatable="yes"> </property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkCheckButton" id="chkDoNotCheckIMAP">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Do _Not Check Incoming Mail For IMAP Accounts</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
</widget>
<packing>
<property name="padding">0</property>
diff --git a/mail/mail-folder-cache.c b/mail/mail-folder-cache.c
index c2df775195..edd6dc1dc3 100644
--- a/mail/mail-folder-cache.c
+++ b/mail/mail-folder-cache.c
@@ -54,7 +54,7 @@
#include "em-folder-tree-model.h"
#define w(x)
-#define d(x) /*(printf("%s(%d):%s: ", __FILE__, __LINE__, __PRETTY_FUNCTION__), (x))*/
+#define d(x) /*(printf("%s(%d):%s: ", __FILE__, __LINE__, __PRETTY_FUNCTION__), (x))*/
/* note that many things are effectively serialised by having them run in
the main loop thread which they need to do because of corba/gtk calls */
@@ -334,11 +334,14 @@ update_1folder(struct _folder_info *mfi, int new, CamelFolderInfo *info)
folder = mfi->folder;
if (folder) {
+ d(printf("update 1 folder '%s'\n", folder->full_name));
if ((count_trash && CAMEL_IS_VTRASH_FOLDER (folder))
|| folder == mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_OUTBOX)
|| (count_sent && folder == mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_SENT))) {
+ d(printf(" total count\n"));
unread = camel_folder_get_message_count(folder);
} else {
+ d(printf(" unread count\n"));
if (info)
unread = info->unread_message_count;
else
@@ -423,7 +426,9 @@ folder_changed (CamelObject *o, gpointer event_data, gpointer user_data)
if (mfi->folder != folder)
return;
-
+
+ d(printf("folder '%s' changed\n", folder->full_name));
+
if (!CAMEL_IS_VTRASH_FOLDER(folder)
&& folder != mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_OUTBOX)
&& folder != mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_SENT)
@@ -480,22 +485,13 @@ void mail_note_folder(CamelFolder *folder)
struct _store_info *si;
struct _folder_info *mfi;
- if (stores == NULL) {
- g_warning("Adding a folder `%s' to a store which hasn't been added yet?\n", folder->full_name);
- return;
- }
+ d(printf("noting folder '%s'\n", folder->full_name));
LOCK(info_lock);
- si = g_hash_table_lookup(stores, store);
- if (si == NULL) {
- /*g_warning("Adding a folder `%s' to a store %p which hasn't been added yet?", folder->full_name, store);*/
- UNLOCK(info_lock);
- return;
- }
-
- mfi = g_hash_table_lookup(si->folders, folder->full_name);
- if (mfi == NULL) {
- w(g_warning("Adding a folder `%s' that I dont know about yet?", folder->full_name));
+ if (stores == NULL
+ || (si = g_hash_table_lookup(stores, store)) == NULL
+ || (mfi = g_hash_table_lookup(si->folders, folder->full_name)) == NULL) {
+ w(g_warning("Noting folder before store initialised"));
UNLOCK(info_lock);
return;
}
diff --git a/mail/mail-ops.c b/mail/mail-ops.c
index 91f068c664..2b338bb1ee 100644
--- a/mail/mail-ops.c
+++ b/mail/mail-ops.c
@@ -721,7 +721,7 @@ send_queue_send(struct _mail_msg *mm)
if (m->cancel)
camel_operation_register (m->cancel);
-
+
for (i = 0; i < uids->len; i++) {
CamelMimeMessage *message;
CamelMessageInfo *info;
@@ -754,9 +754,9 @@ send_queue_send(struct _mail_msg *mm)
camel_object_unref (m->driver);
m->driver = NULL;
}
-
+
camel_folder_free_uids (m->queue, uids);
-
+
if (!camel_exception_is_set (&mm->ex))
camel_folder_expunge (m->queue, &mm->ex);
diff --git a/mail/mail-send-recv.c b/mail/mail-send-recv.c
index 38bbb1b41e..1ee8eebf7f 100644
--- a/mail/mail-send-recv.c
+++ b/mail/mail-send-recv.c
@@ -112,6 +112,8 @@ struct _send_info {
GtkButton *stop;
EClippedLabel *status;
+ int again; /* need to run send again */
+
int timeout_id;
char *what;
int pc;
@@ -120,6 +122,8 @@ struct _send_info {
struct _send_data *data;
};
+static CamelFolder *receive_get_folder(CamelFilterDriver *d, const char *uri, void *data, CamelException *ex);
+
static struct _send_data *send_data = NULL;
static GtkWidget *send_recv_dialog = NULL;
@@ -568,6 +572,19 @@ receive_done (char *uri, void *data)
{
struct _send_info *info = data;
+ /* if we've been called to run again - run again */
+ if (info->type == SEND_SEND && info->state == SEND_ACTIVE && info->again) {
+ info->again = 0;
+ mail_send_queue (mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_OUTBOX),
+ info->uri,
+ FILTER_SOURCE_OUTGOING,
+ info->cancel,
+ receive_get_folder, info,
+ receive_status, info,
+ receive_done, info);
+ return;
+ }
+
if (info->bar) {
gtk_progress_bar_set_fraction((GtkProgressBar *)info->bar, (gfloat)1.0);
@@ -911,6 +928,7 @@ mail_send (void)
data = setup_send_data ();
info = g_hash_table_lookup (data->active, SEND_URI_KEY);
if (info != NULL) {
+ info->again++;
d(printf("send of %s still in progress\n", transport->url));
return;
}
diff --git a/mail/mail-session.c b/mail/mail-session.c
index ee7afdea94..1eb4f76b90 100644
--- a/mail/mail-session.c
+++ b/mail/mail-session.c
@@ -771,8 +771,6 @@ mail_session_check_junk_notify (GConfClient *gconf, guint id, GConfEntry *entry,
key ++;
if (!strcmp (key, "check_incoming"))
camel_session_set_check_junk (session, gconf_value_get_bool (gconf_entry_get_value (entry)));
- else if (!strcmp (key, "check_incoming_imap"))
- camel_session_set_check_junk_for_imap (session, gconf_value_get_bool (gconf_entry_get_value (entry)));
}
}
@@ -793,7 +791,6 @@ mail_session_init (const char *base_directory)
gconf = mail_config_get_gconf_client ();
gconf_client_add_dir (gconf, "/apps/evolution/mail/junk", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
camel_session_set_check_junk (session, gconf_client_get_bool (gconf, "/apps/evolution/mail/junk/check_incoming", NULL));
- camel_session_set_check_junk_for_imap (session, gconf_client_get_bool (gconf, "/apps/evolution/mail/junk/check_incoming_imap", NULL));
session_check_junk_notify_id = gconf_client_notify_add (gconf, "/apps/evolution/mail/junk",
(GConfClientNotifyFunc) mail_session_check_junk_notify,
session, NULL, NULL);