aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNot Zed <NotZed@HelixCode.com>2000-10-18 14:13:12 +0800
committerMichael Zucci <zucchi@src.gnome.org>2000-10-18 14:13:12 +0800
commitee5eeb1dd21eee94538ffafe27cb58bc80d0d306 (patch)
tree795fa1429fd972b8439d6d5877f00952888655f7
parent229f78b929e0a9553b543f596a7643129d80b494 (diff)
downloadgsoc2013-evolution-ee5eeb1dd21eee94538ffafe27cb58bc80d0d306.tar.gz
gsoc2013-evolution-ee5eeb1dd21eee94538ffafe27cb58bc80d0d306.tar.zst
gsoc2013-evolution-ee5eeb1dd21eee94538ffafe27cb58bc80d0d306.zip
No, we REALLY dont want to perform an immediate search as the keys are
2000-10-18 Not Zed <NotZed@HelixCode.com> * folder-browser.c (folder_browser_gui_init): No, we REALLY dont want to perform an immediate search as the keys are pressed. * mail-display.c (on_object_requested): Kill a minor warning with a cast. * mail-config.c: Include mising ctype.h to kill a warning. * message-thread.c (main): Fixed the test case for api changes. * message-list.c (message_list_drag_data_get): Set some flags to get_folder(). I dont even think this will work because mail_tool_get_folder doesn't handle file url's. * mail-vfolder.c (vfolder_uri_to_folder): Pass appropriate flags. * mail-ops.c (do_setup_folder): Pass appropriate flags. Hmm, whats the difference between setup and create. *shrug* (do_create_folder): Pass appropriate flags to get_folder. Needs a way to specify the index flag. * mail-tools.c (mail_tool_get_folder_from_urlname): Changed create to flags argument. (mail_tool_get_local_inbox_url): Add an index argument. (mail_tool_get_local_inbox): honour index flag. (mail_tool_get_inbox): Changed for api change. (mail_tool_uri_to_folder): Fixed calls to store_get_folder(); * mail-local.c (load_metainfo): Added an indexed field to the metainfo. (save_metainfo): And save it too. (do_reconfigure_folder): Honour index flag when creating the new folder. Do not open the old folder with an index at all. (mail_local_map_uri): Add an index argument - tells if the mbox is indexed. (mail_tool_local_uri_to_folder): Create & pass flags properly. (#include gnome.h): Dont include all of gnome, just what we use, and explicity include xml-memory, so we get xmlFree(). svn path=/trunk/; revision=5979
-rw-r--r--mail/ChangeLog40
-rw-r--r--mail/folder-browser.c1
-rw-r--r--mail/mail-config.c1
-rw-r--r--mail/mail-display.c2
-rw-r--r--mail/mail-local.c41
-rw-r--r--mail/mail-local.h2
-rw-r--r--mail/mail-ops.c8
-rw-r--r--mail/mail-tools.c22
-rw-r--r--mail/mail-tools.h6
-rw-r--r--mail/mail-vfolder.c3
-rw-r--r--mail/main.c17
-rw-r--r--mail/message-list.c2
-rw-r--r--mail/message-thread.c2
13 files changed, 118 insertions, 29 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 1adccb1e0f..331502cc90 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,43 @@
+2000-10-18 Not Zed <NotZed@HelixCode.com>
+
+ * folder-browser.c (folder_browser_gui_init): No, we REALLY dont
+ want to perform an immediate search as the keys are pressed.
+
+ * mail-display.c (on_object_requested): Kill a minor warning with
+ a cast.
+
+ * mail-config.c: Include mising ctype.h to kill a warning.
+
+ * message-thread.c (main): Fixed the test case for api changes.
+
+ * message-list.c (message_list_drag_data_get): Set some flags to
+ get_folder(). I dont even think this will work because
+ mail_tool_get_folder doesn't handle file url's.
+
+ * mail-vfolder.c (vfolder_uri_to_folder): Pass appropriate flags.
+
+ * mail-ops.c (do_setup_folder): Pass appropriate flags. Hmm,
+ whats the difference between setup and create. *shrug*
+ (do_create_folder): Pass appropriate flags to get_folder. Needs a
+ way to specify the index flag.
+
+ * mail-tools.c (mail_tool_get_folder_from_urlname): Changed create
+ to flags argument.
+ (mail_tool_get_local_inbox_url): Add an index argument.
+ (mail_tool_get_local_inbox): honour index flag.
+ (mail_tool_get_inbox): Changed for api change.
+ (mail_tool_uri_to_folder): Fixed calls to store_get_folder();
+
+ * mail-local.c (load_metainfo): Added an indexed field to the metainfo.
+ (save_metainfo): And save it too.
+ (do_reconfigure_folder): Honour index flag when creating the new
+ folder. Do not open the old folder with an index at all.
+ (mail_local_map_uri): Add an index argument - tells if the mbox is
+ indexed.
+ (mail_tool_local_uri_to_folder): Create & pass flags properly.
+ (#include gnome.h): Dont include all of gnome, just what we use,
+ and explicity include xml-memory, so we get xmlFree().
+
2000-10-16 Jeffrey Stedfast <fejj@helixcode.com>
* folder-browser.c (search_full_clicked): Un #if 0'd out
diff --git a/mail/folder-browser.c b/mail/folder-browser.c
index 46a78b6c77..567fc70da1 100644
--- a/mail/folder-browser.c
+++ b/mail/folder-browser.c
@@ -482,7 +482,6 @@ folder_browser_gui_init (FolderBrowser *fb)
fb->search_entry = gtk_entry_new();
gtk_widget_show(fb->search_entry);
gtk_signal_connect(GTK_OBJECT (fb->search_entry), "activate", search_activate, fb);
- gtk_signal_connect(GTK_OBJECT (fb->search_entry), "changed", search_activate, fb);
searchbutton = (GtkButton *)gtk_button_new_with_label(_("Full Search"));
gtk_widget_show((GtkWidget *)searchbutton);
label = gtk_label_new(_("Search"));
diff --git a/mail/mail-config.c b/mail/mail-config.c
index b8d3058181..73dce61f9c 100644
--- a/mail/mail-config.c
+++ b/mail/mail-config.c
@@ -27,6 +27,7 @@
#include <config.h>
#include <pwd.h>
+#include <ctype.h>
#include <gnome.h>
#include <gtkhtml/gtkhtml.h>
diff --git a/mail/mail-display.c b/mail/mail-display.c
index e23f4d229e..fbfca48415 100644
--- a/mail/mail-display.c
+++ b/mail/mail-display.c
@@ -490,7 +490,7 @@ on_object_requested (GtkHTML *html, GtkHTMLEmbedded *eb, gpointer data)
gtk_widget_set_usize (pixmap, 24, 24);
pbl->pixmap = pixmap;
- g_idle_add_full (G_PRIORITY_LOW, pixbuf_gen_idle,
+ g_idle_add_full (G_PRIORITY_LOW, (GSourceFunc)pixbuf_gen_idle,
pbl, NULL);
} else {
icon = gnome_vfs_mime_get_value (eb->type, "icon-filename");
diff --git a/mail/mail-local.c b/mail/mail-local.c
index 04ca6fe0d1..a852b7c183 100644
--- a/mail/mail-local.c
+++ b/mail/mail-local.c
@@ -33,8 +33,9 @@
#include <config.h>
#endif
#include <bonobo.h>
-#include <gnome.h>
+#include <libgnomeui/gnome-dialog.h>
#include <glade/glade.h>
+#include <gnome-xml/xmlmemory.h>
#include "Evolution.h"
#include "evolution-storage.h"
@@ -60,6 +61,7 @@ struct _local_meta {
char *format; /* format of mailbox */
char *name; /* name of mbox itself */
+ int indexed; /* do we index the body? */
};
static struct _local_meta *
@@ -85,8 +87,16 @@ load_metainfo(const char *path)
node = node->childs;
while (node) {
if (!strcmp(node->name, "folder")) {
+ char *index;
meta->format = xmlGetProp(node, "type");
meta->name = xmlGetProp(node, "name");
+ index = xmlGetProp(node, "index");
+ if (index) {
+ meta->indexed = atoi(index);
+ xmlFree(index);
+ } else
+ meta->indexed = TRUE;
+
}
node = node->next;
}
@@ -96,6 +106,7 @@ load_metainfo(const char *path)
dodefault:
meta->format = g_strdup("mbox"); /* defaults */
meta->name = g_strdup("mbox");
+ meta->indexed = TRUE;
if (doc)
xmlFreeDoc(doc);
return meta;
@@ -126,6 +137,7 @@ save_metainfo(struct _local_meta *meta)
node = xmlNewChild(root, NULL, "folder", NULL);
xmlSetProp(node, "type", meta->format);
xmlSetProp(node, "name", meta->name);
+ xmlSetProp(node, "index", meta->indexed?"1":"0");
ret = xmlSaveFile(meta->path, doc);
xmlFreeDoc(doc);
@@ -134,7 +146,7 @@ save_metainfo(struct _local_meta *meta)
/* maps a local uri to the real type */
char *
-mail_local_map_uri(const char *uri)
+mail_local_map_uri(const char *uri, int *index)
{
CamelURL *url;
char *metapath;
@@ -142,6 +154,9 @@ mail_local_map_uri(const char *uri)
struct _local_meta *meta;
CamelException *ex;
+ if (index)
+ *index = TRUE;
+
if (strncmp(uri, "file:", 5)) {
g_warning("Trying to map non-local uri: %s", uri);
return g_strdup(uri);
@@ -159,6 +174,9 @@ mail_local_map_uri(const char *uri)
meta = load_metainfo(metapath);
g_free(metapath);
+ if (index)
+ *index = meta->indexed;
+
/* change file: to format: */
camel_url_set_protocol(url, meta->format);
storename = camel_url_to_string(url, TRUE);
@@ -175,6 +193,7 @@ mail_tool_local_uri_to_folder(const char *uri, CamelException *ex)
char *storename;
CamelFolder *folder = NULL;
struct _local_meta *meta;
+ int flags;
if (strncmp(uri, "file:", 5)) {
return NULL;
@@ -197,8 +216,11 @@ mail_tool_local_uri_to_folder(const char *uri, CamelException *ex)
storename = camel_url_to_string(url, TRUE);
printf("store name is %s\n", storename);
+ flags = 0;
+ if (meta->indexed)
+ flags |= CAMEL_STORE_FOLDER_BODY_INDEX;
- folder = mail_tool_get_folder_from_urlname (storename, meta->name, FALSE, ex);
+ folder = mail_tool_get_folder_from_urlname (storename, meta->name, flags, ex);
camel_url_free(url);
g_free (storename);
free_metainfo(meta);
@@ -297,6 +319,7 @@ do_reconfigure_folder(gpointer in_data, gpointer op_data, CamelException *ex)
char *uri;
CamelURL *url = NULL;
struct _local_meta *meta;
+ guint32 flags;
printf("reconfiguring folder: %s to type %s\n", input->fb->uri, input->newtype);
@@ -342,7 +365,7 @@ do_reconfigure_folder(gpointer in_data, gpointer op_data, CamelException *ex)
if (camel_exception_is_set(ex))
goto cleanup;
- /* rename the old mbox and open it again */
+ /* rename the old mbox and open it again, without indexing */
tmpname = g_strdup_printf("%s_reconfig", meta->name);
printf("renaming %s to %s, and opening it\n", meta->name, tmpname);
update_progress("Renaming old folder and opening", 0.0);
@@ -353,8 +376,9 @@ do_reconfigure_folder(gpointer in_data, gpointer op_data, CamelException *ex)
mail_tool_camel_lock_down ();
goto cleanup;
}
-
- fromfolder = camel_store_get_folder(fromstore, tmpname, TRUE, ex);
+
+ /* we dont need to set the create flag ... or need an index if it has one */
+ fromfolder = camel_store_get_folder(fromstore, tmpname, 0, ex);
if (fromfolder == NULL || camel_exception_is_set(ex)) {
/* try and recover ... */
camel_exception_clear (ex);
@@ -367,7 +391,10 @@ do_reconfigure_folder(gpointer in_data, gpointer op_data, CamelException *ex)
printf("Creating the destination mbox\n");
update_progress("Creating new folder", 0.0);
- tofolder = camel_store_get_folder(tostore, meta->name, TRUE, ex);
+ flags = CAMEL_STORE_FOLDER_CREATE;
+ if (meta->indexed)
+ flags |= CAMEL_STORE_FOLDER_BODY_INDEX;
+ tofolder = camel_store_get_folder(tostore, meta->name, flags, ex);
if (tofolder == NULL || camel_exception_is_set(ex)) {
printf("cannot open destination folder\n");
/* try and recover ... */
diff --git a/mail/mail-local.h b/mail/mail-local.h
index c5892d29d9..7c0b619de4 100644
--- a/mail/mail-local.h
+++ b/mail/mail-local.h
@@ -32,6 +32,6 @@
/* mail-local.c */
CamelFolder *mail_tool_local_uri_to_folder(const char *uri, CamelException *ex);
void local_reconfigure_folder(FolderBrowser *fb);
-char *mail_local_map_uri(const char *uri);
+char *mail_local_map_uri(const char *uri, int *index);
#endif
diff --git a/mail/mail-ops.c b/mail/mail-ops.c
index 851c7df634..11dff55b9a 100644
--- a/mail/mail-ops.c
+++ b/mail/mail-ops.c
@@ -1881,8 +1881,10 @@ do_create_folder (gpointer in_data, gpointer op_data, CamelException *ex)
Evolution_ShellComponentListener_UNSUPPORTED_TYPE;
else {
camel_url = g_strdup_printf ("mbox://%s", input->uri);
+ /* FIXME: supply a way to make indexes optional */
folder = mail_tool_get_folder_from_urlname (camel_url,
- "mbox", TRUE, ex);
+ "mbox", CAMEL_STORE_FOLDER_CREATE
+ |CAMEL_STORE_FOLDER_BODY_INDEX, ex);
g_free (camel_url);
if (!camel_exception_is_set (ex)) {
@@ -2259,7 +2261,9 @@ do_setup_folder (gpointer in_data, gpointer op_data, CamelException *ex)
url = g_strdup_printf ("mbox://%s/local/%s", evolution_dir,
input->name);
*(input->folder) = mail_tool_get_folder_from_urlname (url, "mbox",
- TRUE, ex);
+ CAMEL_STORE_FOLDER_CREATE
+ |CAMEL_STORE_FOLDER_BODY_INDEX,
+ ex);
g_free (url);
}
diff --git a/mail/mail-tools.c b/mail/mail-tools.c
index ccbcce3d1d..ae76bb544d 100644
--- a/mail/mail-tools.c
+++ b/mail/mail-tools.c
@@ -88,7 +88,7 @@ void mail_tool_camel_lock_down (void)
CamelFolder *
mail_tool_get_folder_from_urlname (const gchar *url, const gchar *name,
- gboolean create, CamelException *ex)
+ guint32 flags, CamelException *ex)
{
CamelStore *store;
CamelFolder *folder;
@@ -109,7 +109,7 @@ mail_tool_get_folder_from_urlname (const gchar *url, const gchar *name,
*}
*/
- folder = camel_store_get_folder (store, name, create, ex);
+ folder = camel_store_get_folder (store, name, flags, ex);
camel_object_unref (CAMEL_OBJECT (store));
mail_tool_camel_lock_down();
@@ -136,12 +136,12 @@ mail_tool_get_folder_name (CamelFolder *folder)
}
gchar *
-mail_tool_get_local_inbox_url (void)
+mail_tool_get_local_inbox_url (int *index)
{
char *uri, *new;
uri = g_strdup_printf("file://%s/local/Inbox", evolution_dir);
- new = mail_local_map_uri(uri);
+ new = mail_local_map_uri(uri, index);
g_free(uri);
return new;
}
@@ -163,9 +163,13 @@ mail_tool_get_local_inbox (CamelException *ex)
{
gchar *url;
CamelFolder *folder;
+ int index;
+ guint32 flags = CAMEL_STORE_FOLDER_CREATE;
- url = mail_tool_get_local_inbox_url();
- folder = mail_tool_get_folder_from_urlname (url, "mbox", TRUE, ex);
+ url = mail_tool_get_local_inbox_url(&index);
+ if (index)
+ flags |= CAMEL_STORE_FOLDER_BODY_INDEX;
+ folder = mail_tool_get_folder_from_urlname (url, "mbox", flags, ex);
g_free (url);
return folder;
}
@@ -174,7 +178,7 @@ CamelFolder *
mail_tool_get_inbox (const gchar *url, CamelException *ex)
{
/* FIXME: should be smarter? get_default_folder, etc */
- return mail_tool_get_folder_from_urlname (url, "inbox", FALSE, ex);
+ return mail_tool_get_folder_from_urlname (url, "inbox", 0, ex);
}
@@ -516,7 +520,7 @@ mail_tool_uri_to_folder (const char *uri, CamelException *ex)
/*for ( ; *ptr && *ptr == '/'; ptr++);*/
folder_uri = g_strdup (ptr);
- folder = camel_store_get_folder (store, folder_uri, TRUE, ex);
+ folder = camel_store_get_folder (store, folder_uri, CAMEL_STORE_FOLDER_CREATE, ex);
g_free (folder_uri);
}
}
@@ -533,7 +537,7 @@ mail_tool_uri_to_folder (const char *uri, CamelException *ex)
if (*ptr == '/') {
ptr++;
folder_path = ptr;
- folder = camel_store_get_folder (store, folder_path, FALSE, ex);
+ folder = camel_store_get_folder (store, folder_path, 0, ex);
}
}
diff --git a/mail/mail-tools.h b/mail/mail-tools.h
index 1178921bb7..da5c0af8ff 100644
--- a/mail/mail-tools.h
+++ b/mail/mail-tools.h
@@ -35,13 +35,13 @@ void mail_tool_camel_lock_down (void);
/* Get a CamelFolder from a root url and a foldername (uses the global session)*/
CamelFolder *
mail_tool_get_folder_from_urlname (const gchar *url, const gchar *name,
- gboolean create, CamelException *ex);
+ guint32 flags, CamelException *ex);
/* Get a useful name for a given CamelFolder (ie, not "mbox") */
const gchar *mail_tool_get_folder_name (CamelFolder *folder);
-/* Get the url for the local inbox */
-gchar *mail_tool_get_local_inbox_url (void);
+/* Get the url for the local inbox, index returns if the mailbox is indexed */
+gchar *mail_tool_get_local_inbox_url (int *index);
/* Get the filename for our movemail folder or storage */
gchar *mail_tool_get_local_movemail_path (void);
diff --git a/mail/mail-vfolder.c b/mail/mail-vfolder.c
index 606a5a0b64..80b4b10651 100644
--- a/mail/mail-vfolder.c
+++ b/mail/mail-vfolder.c
@@ -194,7 +194,8 @@ vfolder_uri_to_folder(const char *uri, CamelException *ex)
storeuri = g_strdup_printf("vfolder:%s/vfolder/%s", evolution_dir, info->name);
foldername = g_strdup_printf("mbox?%s", info->query);
- folder = mail_tool_get_folder_from_urlname (storeuri, foldername, TRUE, ex);
+ /* we dont have indexing on vfolders */
+ folder = mail_tool_get_folder_from_urlname (storeuri, foldername, CAMEL_STORE_FOLDER_CREATE, ex);
sourceuri = NULL;
sources = 0;
diff --git a/mail/main.c b/mail/main.c
index 5207543d92..e21982f465 100644
--- a/mail/main.c
+++ b/mail/main.c
@@ -29,13 +29,26 @@
#include "component-factory.h"
#include "mail.h"
+static int blowup(int status)
+{
+ printf("memory blew up, status %d\n", status);
+ /*abort();*/
+}
+
int
main (int argc, char *argv [])
{
CORBA_ORB orb;
-
- /* free (malloc (10));*/
+#if 0
+ /* used to make elfence work */
+#if 0
+ free (malloc (10));
+#else
+ /*mtrace();*/
+ mcheck(blowup);
+#endif
+#endif
bindtextdomain (PACKAGE, EVOLUTION_LOCALEDIR);
textdomain (PACKAGE);
diff --git a/mail/message-list.c b/mail/message-list.c
index e7aeb1e234..b065405e30 100644
--- a/mail/message-list.c
+++ b/mail/message-list.c
@@ -374,7 +374,7 @@ message_list_drag_data_get (ETable *table,
url = g_strdup_printf ("file:%s", dirname);
ex = camel_exception_new ();
- folder = mail_tool_get_folder_from_urlname (url, filename, TRUE, ex);
+ folder = mail_tool_get_folder_from_urlname (url, filename, CAMEL_STORE_FOLDER_CREATE, ex);
if (camel_exception_is_set (ex)) {
camel_exception_free (ex);
g_free (url);
diff --git a/mail/message-thread.c b/mail/message-thread.c
index 5f8085839a..dd391c1201 100644
--- a/mail/message-thread.c
+++ b/mail/message-thread.c
@@ -643,7 +643,7 @@ main (int argc, char**argv)
return -1;
}
- folder = camel_store_get_folder (store, "mbox", TRUE, ex);
+ folder = camel_store_get_folder (store, "mbox", 0, ex);
if (camel_exception_get_id (ex)) {
printf ("Exception caught in camel_store_get_folder\n"
"Full description : %s\n", camel_exception_get_description (ex));