From 5b887fe6dc36d6ec21c8d86af60d29b7cbbbc871 Mon Sep 17 00:00:00 2001 From: Not Zed Date: Sun, 28 May 2000 06:18:11 +0000 Subject: vfolder gui! So you can define them,k they show up in the list (well, after a restart), but they always come up empty - doesn't search any folders yet. 2000-05-27 Not Zed * Makefile.am (SHELL_OBJS): Include mail storage so we can initialise folders. * component-factory.c (create_test_storage): Parses vfolder defintions and adds them to the storage. Definetly needs more work. * folder-browser-factory.c (control_activate): Add the VFolder druid menu item. (control_deactivate): And remove it. * mail-ops.c (vfolder_editor_clicked): For editing vfolder definitions (rather like filters, oddly enough :). Tries to update the shell but it doesn't seem to work properly - requires a mail component restart to take effect. * folder-browser.c (folder_browser_load_folder): Handle vfolder: urls' appropriately and map to camel. Still needs a way to tell the vfolder what folders to search! (all vfolders come up empty!). svn path=/trunk/; revision=3241 --- mail/mail-ops.c | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) (limited to 'mail/mail-ops.c') diff --git a/mail/mail-ops.c b/mail/mail-ops.c index 606532a5ef..873dc7e6ab 100644 --- a/mail/mail-ops.c +++ b/mail/mail-ops.c @@ -32,6 +32,10 @@ #include "filter/filter-editor.h" #include "filter/filter-driver.h" +/* FIXME: is there another way to do this? */ +#include "Evolution.h" +#include "evolution-storage.h" + #ifndef HAVE_MKSTEMP #include #include @@ -511,4 +515,92 @@ void filter_edit (GtkWidget *button, gpointer user_data) gtk_widget_show((GtkWidget *)fe); } +static void +vfolder_editor_clicked(FilterEditor *fe, int button, FolderBrowser *fb) +{ + printf("closing dialog\n"); + if (button == 0) { + char *user; + + user = g_strdup_printf ("%s/vfolders.xml", evolution_dir); + filter_editor_save_rules(fe, user); + printf("saving vfolders to '%s'\n", user); + g_free(user); + + /* FIXME: this is also not the way to do this, see also + component-factory.c */ + { + EvolutionStorage *storage; + FilterDriver *fe; + int i, count; + char *user, *system; + extern char *evolution_dir; + + storage = gtk_object_get_data((GtkObject *)fb, "e-storage"); + + fe = filter_driver_new(); + user = g_strdup_printf ("%s/vfolders.xml", evolution_dir); + system = g_strdup_printf("%s/evolution/vfoldertypes.xml", EVOLUTION_DATADIR); + filter_driver_set_rules(fe, system, user); + g_free(user); + g_free(system); + count = filter_driver_rule_count(fe); + for (i=0;idescription) + desc = fo->description->data; + if (desc) + desctext = desc->data; + else { + sprintf(descunknown, "volder-%p", fo); + desctext = descunknown; + } + g_string_sprintf(query, "vfolder:/%s/vfolder/%s?", evolution_dir, desctext); + filter_driver_expand_option(fe, query, NULL, fo); + name = g_strdup_printf("/%s", desctext); + printf("Adding new vfolder: %s\n", query->str); + evolution_storage_new_folder (storage, name, + "mail", + query->str, + name+1); + g_string_free(query, TRUE); + g_free(name); + } + gtk_object_unref((GtkObject *)fe); + } + + } + if (button != -1) { + gnome_dialog_close((GnomeDialog *)fe); + } +} + +void vfolder_edit (GtkWidget *button, gpointer user_data) +{ + FolderBrowser *fb = FOLDER_BROWSER(user_data); + FilterEditor *fe; + char *user, *system; + + printf("Editing vfolders ...\n"); + fe = filter_editor_new(); + + user = g_strdup_printf ("%s/vfolders.xml", evolution_dir); + system = g_strdup_printf("%s/evolution/vfoldertypes.xml", EVOLUTION_DATADIR); + filter_editor_set_rule_files(fe, system, user); + g_free(user); + g_free(system); + gnome_dialog_append_buttons((GnomeDialog *)fe, GNOME_STOCK_BUTTON_OK, GNOME_STOCK_BUTTON_CANCEL, 0); + gtk_signal_connect((GtkObject *)fe, "clicked", vfolder_editor_clicked, fb); + gtk_widget_show((GtkWidget *)fe); +} + -- cgit