diff options
author | Iain Holmes <iain@src.gnome.org> | 2002-04-04 20:10:37 +0800 |
---|---|---|
committer | Iain Holmes <iain@src.gnome.org> | 2002-04-04 20:10:37 +0800 |
commit | 91b1b557145ed88defb02d8495dc0d0580a53ea4 (patch) | |
tree | 7c6d8e4a6a7cf770083b59ec9769b719fa9166f2 | |
parent | c763b8c63074f35553d46c91cc2ca0b7f1d74830 (diff) | |
download | gsoc2013-evolution-91b1b557145ed88defb02d8495dc0d0580a53ea4.tar gsoc2013-evolution-91b1b557145ed88defb02d8495dc0d0580a53ea4.tar.gz gsoc2013-evolution-91b1b557145ed88defb02d8495dc0d0580a53ea4.tar.bz2 gsoc2013-evolution-91b1b557145ed88defb02d8495dc0d0580a53ea4.tar.lz gsoc2013-evolution-91b1b557145ed88defb02d8495dc0d0580a53ea4.tar.xz gsoc2013-evolution-91b1b557145ed88defb02d8495dc0d0580a53ea4.tar.zst gsoc2013-evolution-91b1b557145ed88defb02d8495dc0d0580a53ea4.zip |
Make the preferences seperate from the views
svn path=/trunk/; revision=16338
-rw-r--r-- | my-evolution/component-factory.c | 12 | ||||
-rw-r--r-- | my-evolution/e-summary-calendar.c | 4 | ||||
-rw-r--r-- | my-evolution/e-summary-factory.c | 2 | ||||
-rw-r--r-- | my-evolution/e-summary-mail.c | 259 | ||||
-rw-r--r-- | my-evolution/e-summary-mail.h | 14 | ||||
-rw-r--r-- | my-evolution/e-summary-preferences.c | 168 | ||||
-rw-r--r-- | my-evolution/e-summary-preferences.h | 3 | ||||
-rw-r--r-- | my-evolution/e-summary-tasks.c | 4 | ||||
-rw-r--r-- | my-evolution/e-summary-weather.c | 8 | ||||
-rw-r--r-- | my-evolution/e-summary-weather.h | 3 | ||||
-rw-r--r-- | my-evolution/e-summary.c | 36 | ||||
-rw-r--r-- | my-evolution/e-summary.h | 2 |
12 files changed, 250 insertions, 265 deletions
diff --git a/my-evolution/component-factory.c b/my-evolution/component-factory.c index fb7dbc8829..d16f6b077e 100644 --- a/my-evolution/component-factory.c +++ b/my-evolution/component-factory.c @@ -32,11 +32,14 @@ #include <shell/evolution-shell-component.h> #include <shell/Evolution.h> +#include <gal/widgets/e-gui-utils.h> + #include "e-summary-factory.h" #include "e-summary-offline-handler.h" #include "e-summary.h" +#include "e-summary-preferences.h" + #include "component-factory.h" -#include <gal/widgets/e-gui-utils.h> #define COMPONENT_ID "OAFIID:GNOME_Evolution_Summary_ShellComponent" #define COMPONENT_FACTORY_ID "OAFIID:GNOME_Evolution_Summary_ShellComponentFactory" @@ -89,9 +92,16 @@ owner_set_cb (EvolutionShellComponent *shell_component, const char *evolution_homedir, gpointer user_data) { + GNOME_Evolution_Shell corba_shell; + if (evolution_dir != NULL) { evolution_dir = g_strdup (evolution_homedir); } + + corba_shell = bonobo_object_corba_objref (BONOBO_OBJECT (shell_client)); + + e_summary_folder_init_folder_store (corba_shell); + e_summary_preferences_register_config_control_factory (); } static void diff --git a/my-evolution/e-summary-calendar.c b/my-evolution/e-summary-calendar.c index 45d5abec77..6ad68427b4 100644 --- a/my-evolution/e-summary-calendar.c +++ b/my-evolution/e-summary-calendar.c @@ -371,7 +371,7 @@ generate_html (gpointer data) g_free (s1); g_free (s2); - e_summary_draw (summary); +/* e_summary_draw (summary); */ return FALSE; } else { GPtrArray *uidarray; @@ -434,7 +434,7 @@ generate_html (gpointer data) calendar->html = string->str; g_string_free (string, FALSE); - e_summary_draw (summary); +/* e_summary_draw (summary); */ return FALSE; } diff --git a/my-evolution/e-summary-factory.c b/my-evolution/e-summary-factory.c index bda75452ab..db84213374 100644 --- a/my-evolution/e-summary-factory.c +++ b/my-evolution/e-summary-factory.c @@ -155,7 +155,5 @@ e_summary_factory_new_control (const char *uri, /* FIXME: We register the factory here as it needs the summary object. Sigh, this is really wrong. */ - e_summary_preferences_register_config_control_factory (summary); - return control; } diff --git a/my-evolution/e-summary-mail.c b/my-evolution/e-summary-mail.c index 014e29cd85..aa9753619c 100644 --- a/my-evolution/e-summary-mail.c +++ b/my-evolution/e-summary-mail.c @@ -40,12 +40,27 @@ #include "e-summary.h" #include "e-summary-mail.h" #include "e-summary-table.h" +#include "e-summary-preferences.h" #include "e-util/e-path.h" #define MAIL_IID "OAFIID:GNOME_Evolution_FolderInfo" +typedef struct _FolderStore { + GNOME_Evolution_Shell shell; + GNOME_Evolution_FolderInfo folder_info; + GNOME_Evolution_StorageRegistry registry; + BonoboListener *listener; + EvolutionStorageListener *storage_listener; + + GSList *storage_list; + GHashTable *folders; + + GList *shown; +} FolderStore; + struct _ESummaryMail { +#if 0 GNOME_Evolution_FolderInfo folder_info; GNOME_Evolution_StorageRegistry registry; BonoboListener *listener; @@ -54,6 +69,7 @@ struct _ESummaryMail { GSList *storage_list; GHashTable *folders; +#endif GList *shown; ESummaryMailMode mode; @@ -66,7 +82,7 @@ typedef struct _StorageInfo { GNOME_Evolution_Storage storage; EvolutionStorageListener *listener; - ESummary *summary; +/* ESummary *summary; */ GList *folders; } StorageInfo; @@ -81,6 +97,8 @@ typedef struct _ESummaryMailFolder { StorageInfo *si; } ESummaryMailFolder; +static FolderStore *folder_store = NULL; + /* Work out what to do with folder names */ static char * make_pretty_foldername (ESummary *summary, @@ -164,19 +182,17 @@ e_summary_mail_get_html (ESummary *summary) } static void -e_summary_mail_get_info (ESummaryMail *mail, - const char *uri, +e_summary_mail_get_info (const char *uri, BonoboListener *listener) { Bonobo_Listener corba_listener; CORBA_Environment ev; - g_return_if_fail (mail != NULL); - g_return_if_fail (mail->folder_info != CORBA_OBJECT_NIL); + g_return_if_fail (folder_store->folder_info != CORBA_OBJECT_NIL); corba_listener = bonobo_object_corba_objref (BONOBO_OBJECT (listener)); CORBA_exception_init (&ev); - GNOME_Evolution_FolderInfo_getInfo (mail->folder_info, uri ? uri : "", + GNOME_Evolution_FolderInfo_getInfo (folder_store->folder_info, uri ? uri : "", corba_listener, &ev); if (BONOBO_EX (&ev)) { g_warning ("Error getting info for %s:\n%s", uri, @@ -184,7 +200,7 @@ e_summary_mail_get_info (ESummaryMail *mail, CORBA_exception_free (&ev); return; } - + CORBA_exception_free (&ev); return; } @@ -195,8 +211,7 @@ new_folder_cb (EvolutionStorageListener *listener, const GNOME_Evolution_Folder *folder, StorageInfo *si) { - ESummary *summary = si->summary; - ESummaryMail *mail; + ESummaryPrefs *global_preferences; ESummaryMailFolder *mail_folder; GList *p; @@ -206,7 +221,6 @@ new_folder_cb (EvolutionStorageListener *listener, strncmp (folder->physicalUri, "vfolder", 7) != 0)) { return; } - mail = summary->mail; mail_folder = g_new (ESummaryMailFolder, 1); mail_folder->si = si; @@ -216,14 +230,16 @@ new_folder_cb (EvolutionStorageListener *listener, mail_folder->unread = -1; mail_folder->init = FALSE; - g_hash_table_insert (mail->folders, mail_folder->path, mail_folder); + g_hash_table_insert (folder_store->folders, mail_folder->path, mail_folder); si->folders = g_list_prepend (si->folders, mail_folder); - - for (p = summary->preferences->display_folders; p; p = p->next) { + + global_preferences = e_summary_preferences_get_global (); + for (p = global_preferences->display_folders; p; p = p->next) { if (strcmp (p->data, folder->physicalUri) == 0) { - mail->shown = g_list_append (mail->shown, mail_folder); - e_summary_mail_get_info (mail, mail_folder->path, - mail->listener); + g_print ("Showning: %s\n", folder->physicalUri); + folder_store->shown = g_list_append (folder_store->shown, mail_folder); + e_summary_mail_get_info (mail_folder->path, + folder_store->listener); } } } @@ -234,7 +250,6 @@ update_folder_cb (EvolutionStorageListener *listener, int unread_count, StorageInfo *si) { - ESummary *summary = si->summary; char *evolution_dir; static char *proto = NULL; char *uri; @@ -248,8 +263,7 @@ update_folder_cb (EvolutionStorageListener *listener, } uri = e_path_to_physical (proto, path); - if (summary->mail != NULL) - e_summary_mail_get_info (summary->mail, uri, summary->mail->listener); + e_summary_mail_get_info (uri, folder_store->listener); g_free (uri); } @@ -259,27 +273,24 @@ remove_folder_cb (EvolutionStorageListener *listener, const char *path, StorageInfo *si) { - ESummary *summary = si->summary; - ESummaryMail *mail; ESummaryMailFolder *mail_folder; GList *p; - mail = summary->mail; - mail_folder = g_hash_table_lookup (mail->folders, path); + mail_folder = g_hash_table_lookup (folder_store->folders, path); if (mail_folder == NULL) { return; } /* Check if we're displaying it, because we can't display it if it doesn't exist :) */ - for (p = mail->shown; p; p = p->next) { + for (p = folder_store->shown; p; p = p->next) { if (p->data == mail_folder) { - mail->shown = g_list_remove_link (mail->shown, p); + folder_store->shown = g_list_remove_link (folder_store->shown, p); g_list_free (p); } } - g_hash_table_remove (mail->folders, path); + g_hash_table_remove (folder_store->folders, path); g_free (mail_folder->name); g_free (mail_folder->path); g_free (mail_folder); @@ -293,16 +304,12 @@ mail_change_notify (BonoboListener *listener, ESummary *summary) { GNOME_Evolution_FolderInfo_MessageCount *count; - ESummaryMail *mail; ESummaryMailFolder *folder; GList *p; - mail = summary->mail; - - g_return_if_fail (mail != NULL); - + g_print ("Yo!\n"); count = arg->_value; - folder = g_hash_table_lookup (mail->folders, count->path); + folder = g_hash_table_lookup (folder_store->folders, count->path); if (folder == NULL) { return; @@ -314,8 +321,10 @@ mail_change_notify (BonoboListener *listener, /* Are we displaying this folder? */ for (p = summary->preferences->display_folders; p; p = p->next) { + g_print ("folder: %s\n", folder->path); if (strcmp (p->data, folder->path) == 0) { - e_summary_draw (summary); + g_print ("Received info for shown folder %s\n", folder->path); + e_summary_redraw_all (); /* All summaries should be redrawn, not just this one */ return; } } @@ -331,26 +340,21 @@ e_summary_mail_protocol (ESummary *summary, static gboolean -e_summary_mail_register_storage (ESummary *summary, - const char *name, +e_summary_folder_register_storage (const char *name, GNOME_Evolution_Storage corba_storage) { - ESummaryMail *mail; GNOME_Evolution_StorageListener corba_listener; StorageInfo *si; CORBA_Environment ev; - mail = summary->mail; - si = g_new (StorageInfo, 1); si->name = g_strdup (name); si->toplevel = NULL; - si->summary = summary; si->storage = corba_storage; si->listener = evolution_storage_listener_new (); si->folders = NULL; - mail->storage_list = g_slist_prepend (mail->storage_list, si); + folder_store->storage_list = g_slist_prepend (folder_store->storage_list, si); gtk_signal_connect (GTK_OBJECT (si->listener), "new-folder", GTK_SIGNAL_FUNC (new_folder_cb), si); @@ -368,7 +372,6 @@ e_summary_mail_register_storage (ESummary *summary, CORBA_exception_id (&ev)); CORBA_exception_free (&ev); - g_free (mail); return FALSE; } @@ -378,16 +381,13 @@ e_summary_mail_register_storage (ESummary *summary, } static void -e_summary_mail_register_local_storage (ESummary *summary) +e_summary_folder_register_local_storage (void) { - ESummaryMail *mail; GNOME_Evolution_Storage local_storage; CORBA_Environment ev; - mail = summary->mail; - CORBA_exception_init (&ev); - local_storage = GNOME_Evolution_Shell_getLocalStorage (summary->shell, &ev); + local_storage = GNOME_Evolution_Shell_getLocalStorage (folder_store->shell, &ev); if (BONOBO_EX (&ev) || local_storage == CORBA_OBJECT_NIL) { g_warning ("Error getting local storage: %s", CORBA_exception_id (&ev)); CORBA_exception_free (&ev); @@ -395,7 +395,7 @@ e_summary_mail_register_local_storage (ESummary *summary) } CORBA_exception_free (&ev); - e_summary_mail_register_storage (summary, _("Local Folders"), local_storage); + e_summary_folder_register_storage (_("Local Folders"), local_storage); } static void @@ -403,15 +403,11 @@ storage_notify (BonoboListener *listener, const char *name, const BonoboArg *arg, CORBA_Environment *ev, - ESummary *summary) + gpointer data) { GNOME_Evolution_StorageRegistry_NotifyResult *nr; GNOME_Evolution_Storage corba_storage; CORBA_Environment ev2; - ESummaryMail *mail; - - mail = summary->mail; - g_return_if_fail (mail != NULL); nr = arg->_value; switch (nr->type) { @@ -422,12 +418,12 @@ storage_notify (BonoboListener *listener, } if (strcmp (nr->name, "local") == 0) { - e_summary_mail_register_local_storage (summary); + e_summary_folder_register_local_storage (); break; } CORBA_exception_init (&ev2); - corba_storage = GNOME_Evolution_StorageRegistry_getStorageByName (mail->registry, + corba_storage = GNOME_Evolution_StorageRegistry_getStorageByName (folder_store->registry, nr->name, &ev2); if (BONOBO_EX (&ev2) || corba_storage == CORBA_OBJECT_NIL) { g_warning ("Error getting storage %s\n%s", nr->name, @@ -437,7 +433,7 @@ storage_notify (BonoboListener *listener, } CORBA_exception_free (&ev2); - e_summary_mail_register_storage (summary, nr->name, corba_storage); + e_summary_folder_register_storage (nr->name, corba_storage); break; case GNOME_Evolution_StorageRegistry_STORAGE_DESTROYED: @@ -451,22 +447,18 @@ storage_notify (BonoboListener *listener, } static gboolean -e_summary_mail_register_storages (ESummary *summary, - GNOME_Evolution_Shell corba_shell) +e_summary_folder_register_storages (GNOME_Evolution_Shell corba_shell) { Bonobo_Listener corba_listener; BonoboListener *listener; CORBA_Environment ev; - g_return_val_if_fail (summary != NULL, FALSE); - g_return_val_if_fail (IS_E_SUMMARY (summary), FALSE); - CORBA_exception_init (&ev); - summary->mail->registry = Bonobo_Unknown_queryInterface (corba_shell, - "IDL:GNOME/Evolution/StorageRegistry:1.0", - &ev); - if (BONOBO_EX (&ev) || summary->mail->registry == NULL) { + folder_store->registry = Bonobo_Unknown_queryInterface (corba_shell, + "IDL:GNOME/Evolution/StorageRegistry:1.0", + &ev); + if (BONOBO_EX (&ev) || folder_store->registry == NULL) { g_warning ("No storage registry: %s", CORBA_exception_id (&ev)); CORBA_exception_free (&ev); return FALSE; @@ -474,11 +466,11 @@ e_summary_mail_register_storages (ESummary *summary, listener = bonobo_listener_new (NULL, NULL); gtk_signal_connect (GTK_OBJECT (listener), "event-notify", - GTK_SIGNAL_FUNC (storage_notify), summary); + GTK_SIGNAL_FUNC (storage_notify), NULL); corba_listener = bonobo_object_corba_objref (BONOBO_OBJECT (listener)); /* Storages will be added whenever the listener gets an event. */ - GNOME_Evolution_StorageRegistry_addListener (summary->mail->registry, corba_listener, &ev); + GNOME_Evolution_StorageRegistry_addListener (folder_store->registry, corba_listener, &ev); if (BONOBO_EX (&ev)) { g_warning ("Cannot add listener\n%s", CORBA_exception_id (&ev)); CORBA_exception_free (&ev); @@ -490,59 +482,39 @@ e_summary_mail_register_storages (ESummary *summary, } void -e_summary_mail_init (ESummary *summary, - GNOME_Evolution_Shell corba_shell) +e_summary_mail_init (ESummary *summary) { ESummaryMail *mail; - CORBA_Environment ev; g_return_if_fail (summary != NULL); g_return_if_fail (IS_E_SUMMARY (summary)); + g_return_if_fail (folder_store != NULL); + mail = g_new0 (ESummaryMail, 1); summary->mail = mail; mail->html = NULL; - CORBA_exception_init (&ev); - mail->folder_info = oaf_activate_from_id (MAIL_IID, 0, NULL, &ev); - if (BONOBO_EX (&ev) || mail->folder_info == NULL) { - g_warning ("Exception creating FolderInfo: %s", - CORBA_exception_id (&ev)); - CORBA_exception_free (&ev); - - return; - } - CORBA_exception_free (&ev); - - /* Create a BonoboListener for all the notifies. */ - mail->listener = bonobo_listener_new (NULL, NULL); - gtk_signal_connect (GTK_OBJECT (mail->listener), "event-notify", + /* Connect to the global folder_store listener */ + gtk_signal_connect (GTK_OBJECT (folder_store->listener), "event-notify", GTK_SIGNAL_FUNC (mail_change_notify), summary); - /* Create a hash table for the folders */ - mail->folders = g_hash_table_new (g_str_hash, g_str_equal); - mail->shown = NULL; - - e_summary_mail_register_storages (summary, corba_shell); e_summary_add_protocol_listener (summary, "mail", e_summary_mail_protocol, mail); return; } void -e_summary_mail_reconfigure (ESummary *summary) +e_summary_mail_reconfigure (void) { - ESummaryMail *mail; + ESummaryPrefs *preferences; GList *old, *p; - g_return_if_fail (summary != NULL); - g_return_if_fail (IS_E_SUMMARY (summary)); - - mail = summary->mail; - old = mail->shown; - mail->shown = NULL; + old = folder_store->shown; + folder_store->shown = NULL; - for (p = g_list_last (summary->preferences->display_folders); p; p = p->prev) { + preferences = e_summary_preferences_get_global (); + for (p = g_list_last (preferences->display_folders); p; p = p->prev) { ESummaryMailFolder *folder; char *uri; @@ -553,13 +525,13 @@ e_summary_mail_reconfigure (ESummary *summary) uri = g_strconcat ("file://", p->data, NULL); } - folder = g_hash_table_lookup (mail->folders, uri); + folder = g_hash_table_lookup (folder_store->folders, uri); if (folder != NULL) { if (folder->init == FALSE) { - e_summary_mail_get_info (mail, folder->path, - mail->listener); + e_summary_mail_get_info (folder->path, + folder_store->listener); } - mail->shown = g_list_append (mail->shown, folder); + folder_store->shown = g_list_append (folder_store->shown, folder); } g_free (uri); @@ -568,8 +540,7 @@ e_summary_mail_reconfigure (ESummary *summary) /* Free the old list */ g_list_free (old); - e_summary_mail_generate_html (summary); - e_summary_draw (summary); +/* e_summary_redraw_all (); */ } static void @@ -642,12 +613,11 @@ get_parent_path (const char *path) } static gboolean -is_folder_shown (ESummaryMail *mail, - const char *path) +is_folder_shown (const char *path) { GList *p; - for (p = mail->shown; p; p = p->next) { + for (p = folder_store->shown; p; p = p->next) { ESummaryMailFolder *folder = p->data; if (strcmp (folder->path, path) == 0) { return TRUE; @@ -661,8 +631,7 @@ static ETreePath insert_path_recur (ESummaryTable *est, StorageInfo *si, GHashTable *hash_table, - const char *path, - ESummaryMail *mail) + const char *path) { char *parent_path, *name; ETreePath parent_node, node; @@ -689,7 +658,7 @@ insert_path_recur (ESummaryTable *est, g_hash_table_insert (hash_table, g_strdup (path), node); return node; } else { - parent_node = insert_path_recur (est, si, hash_table, parent_path, mail); + parent_node = insert_path_recur (est, si, hash_table, parent_path); } } @@ -715,7 +684,7 @@ insert_path_recur (ESummaryTable *est, entry->removable = FALSE; /* Check if shown */ - entry->shown = is_folder_shown (mail, path); + entry->shown = is_folder_shown (path); g_hash_table_insert (est->model, entry->path, entry); g_hash_table_insert (hash_table, g_strdup (path), node); @@ -732,8 +701,7 @@ free_path_hash (gpointer key, static void add_storage_to_table (ESummaryTable *est, - StorageInfo *si, - ESummary *summary) + StorageInfo *si) { GHashTable *path_hash; GList *p; @@ -744,7 +712,7 @@ add_storage_to_table (ESummaryTable *est, for (; p; p = p->next) { ESummaryMailFolder *folder = p->data; - insert_path_recur (est, si, path_hash, folder->path, summary->mail); + insert_path_recur (est, si, path_hash, folder->path); } g_hash_table_foreach (path_hash, free_path_hash, NULL); @@ -771,21 +739,15 @@ make_toplevel (StorageInfo *si) } void -e_summary_mail_fill_list (ESummaryTable *est, - ESummary *summary) +e_summary_mail_fill_list (ESummaryTable *est) { - ESummaryMail *mail; GSList *p; g_return_if_fail (IS_E_SUMMARY_TABLE (est)); - g_return_if_fail (IS_E_SUMMARY (summary)); - - mail = summary->mail; - if (mail == NULL) { - return; - } - p = g_slist_sort (mail->storage_list, sort_storages); + g_return_if_fail (folder_store != NULL); + + p = g_slist_sort (folder_store->storage_list, sort_storages); for (; p; p = p->next) { StorageInfo *si = p->data; @@ -793,17 +755,16 @@ e_summary_mail_fill_list (ESummaryTable *est, make_toplevel (si); } - add_storage_to_table (est, si, summary); + add_storage_to_table (est, si); } } const char * -e_summary_mail_uri_to_name (ESummary *summary, - const char *uri) +e_summary_mail_uri_to_name (const char *uri) { ESummaryMailFolder *folder; - folder = g_hash_table_lookup (summary->mail->folders, uri); + folder = g_hash_table_lookup (folder_store->folders, uri); if (folder == NULL) { return NULL; } else { @@ -832,25 +793,57 @@ e_summary_mail_free (ESummary *summary) g_return_if_fail (IS_E_SUMMARY (summary)); mail = summary->mail; - bonobo_object_release_unref (mail->folder_info, NULL); - mail->folder_info = CORBA_OBJECT_NIL; - gtk_signal_disconnect_by_func (GTK_OBJECT (mail->listener), + /* Probably need to disconnect by ID here instead */ + gtk_signal_disconnect_by_func (GTK_OBJECT (folder_store->listener), GTK_SIGNAL_FUNC (mail_change_notify), summary); - bonobo_object_unref (BONOBO_OBJECT (mail->listener)); +#if 0 g_hash_table_foreach (mail->folders, free_folder, NULL); g_hash_table_destroy (mail->folders); - +#endif g_free (mail->html); +#if 0 gtk_signal_disconnect_by_func (GTK_OBJECT (mail->storage_listener), GTK_SIGNAL_FUNC (new_folder_cb), summary); gtk_signal_disconnect_by_func (GTK_OBJECT (mail->storage_listener), GTK_SIGNAL_FUNC (remove_folder_cb), summary); gtk_signal_disconnect_by_func (GTK_OBJECT (mail->storage_listener), GTK_SIGNAL_FUNC (update_folder_cb), summary); - +#endif + g_free (mail); summary->mail = NULL; } + +gboolean +e_summary_folder_init_folder_store (GNOME_Evolution_Shell shell) +{ + CORBA_Environment ev; + + if (folder_store != NULL) { + return TRUE; + } + + folder_store = g_new0 (FolderStore, 1); + folder_store->shell = shell; + + CORBA_exception_init (&ev); + folder_store->folder_info = oaf_activate_from_id (MAIL_IID, 0, NULL, &ev); + if (BONOBO_EX (&ev) || folder_store->folder_info == NULL) { + g_warning ("Exception creating folderinfo: %s\n", + CORBA_exception_id (&ev) ? CORBA_exception_id (&ev) : "(null)"); + CORBA_exception_free (&ev); + return FALSE; + } + + CORBA_exception_free (&ev); + folder_store->listener = bonobo_listener_new (NULL, NULL); + + /* Create a hash table for the folders */ + folder_store->folders = g_hash_table_new (g_str_hash, g_str_equal); + + e_summary_folder_register_storages (shell); + return TRUE; +} diff --git a/my-evolution/e-summary-mail.h b/my-evolution/e-summary-mail.h index 67740f7968..e6b84a16f3 100644 --- a/my-evolution/e-summary-mail.h +++ b/my-evolution/e-summary-mail.h @@ -43,12 +43,12 @@ struct _ESummaryMailRowData { }; const char *e_summary_mail_get_html (ESummary *summary); -void e_summary_mail_init (ESummary *summary, - GNOME_Evolution_Shell corba_shell); -void e_summary_mail_reconfigure (ESummary *summary); +void e_summary_mail_init (ESummary *summary); +void e_summary_mail_reconfigure (void); void e_summary_mail_free (ESummary *summary); -const char *e_summary_mail_uri_to_name (ESummary *summary, - const char *uri); -void e_summary_mail_fill_list (ESummaryTable *est, - ESummary *summary); +const char *e_summary_mail_uri_to_name (const char *uri); +void e_summary_mail_fill_list (ESummaryTable *est); + +/* Folder stuff */ +gboolean e_summary_folder_init_folder_store (GNOME_Evolution_Shell shell); #endif diff --git a/my-evolution/e-summary-preferences.c b/my-evolution/e-summary-preferences.c index 808dc04c7b..447812b317 100644 --- a/my-evolution/e-summary-preferences.c +++ b/my-evolution/e-summary-preferences.c @@ -402,6 +402,12 @@ e_summary_preferences_init (void) return prefs; } +ESummaryPrefs * +e_summary_preferences_get_global (void) +{ + return global_preferences; +} + struct _MailPage { GtkWidget *etable; GtkWidget *all, *shown; @@ -438,7 +444,6 @@ struct _CalendarPage { typedef struct _PropertyData { EvolutionConfigControl *config_control; - ESummary *summary; GtkWidget *new_url_entry, *new_name_entry; GladeXML *xml; @@ -562,7 +567,7 @@ rdf_is_shown (PropertyData *pd, { GList *p; - for (p = pd->summary->preferences->rdf_urls; p; p = p->next) { + for (p = global_preferences->rdf_urls; p; p = p->next) { if (strcmp (p->data, url) == 0) { return TRUE; } @@ -669,68 +674,27 @@ static void fill_weather_etable (ESummaryShown *ess, PropertyData *pd) { - e_summary_weather_fill_etable (ess, pd->summary); + e_summary_weather_fill_etable (ess); } static void fill_mail_etable (ESummaryTable *est, PropertyData *pd) { - e_summary_mail_fill_list (est, pd->summary); + e_summary_mail_fill_list (est); } static void mail_show_full_path_toggled_cb (GtkToggleButton *tb, PropertyData *pd) { - pd->summary->preferences->show_full_path = gtk_toggle_button_get_active (tb); + global_preferences->show_full_path = gtk_toggle_button_get_active (tb); evolution_config_control_changed (pd->config_control); } #if 0 static void -add_dialog_clicked_cb (GnomeDialog *dialog, - int button, - PropertyData *pd) -{ - struct _RDFInfo *info; - char *url, *name; - char *text[1]; - int row; - - if (button == 1) { - gnome_dialog_close (dialog); - return; - } - - url = gtk_entry_get_text (GTK_ENTRY (pd->new_url_entry)); - if (url == NULL || *text == 0) { - gnome_dialog_close (dialog); - return; - } - name = gtk_entry_get_text (GTK_ENTRY (pd->new_name_entry)); - info = g_new (struct _RDFInfo, 1); - info->url = g_strdup (url); - info->name = name ? g_strdup (name) : g_strdup (url); - - text[0] = info->name; - row = gtk_clist_append (GTK_CLIST (pd->rdf->all), text); - gtk_clist_set_row_data_full (GTK_CLIST (pd->rdf->all), row, info, - (GdkDestroyNotify) free_rdf_info); - pd->rdf->known = g_list_append (pd->rdf->known, info); - - save_known_rdfs (pd->rdf->known); - pd->summary->preferences->rdf_urls = g_list_prepend (pd->summary->preferences->rdf_urls, g_strdup (info->url)); - row = gtk_clist_prepend (GTK_CLIST (pd->rdf->shown), text); - gtk_clist_set_row_data (GTK_CLIST (pd->rdf->shown), row, - pd->summary->preferences->rdf_urls); - - evolution_config_control_changed (pd->config_control); - gnome_dialog_close (dialog); -} - -static void rdf_new_url_clicked_cb (GtkButton *button, PropertyData *pd) { @@ -777,7 +741,7 @@ static void rdf_refresh_value_changed_cb (GtkAdjustment *adj, PropertyData *pd) { - pd->summary->preferences->rdf_refresh_time = (int) adj->value; + global_preferences->rdf_refresh_time = (int) adj->value; evolution_config_control_changed (pd->config_control); } @@ -785,7 +749,7 @@ static void rdf_limit_value_changed_cb (GtkAdjustment *adj, PropertyData *pd) { - pd->summary->preferences->limit = (int) adj->value; + global_preferences->limit = (int) adj->value; evolution_config_control_changed (pd->config_control); } @@ -794,28 +758,34 @@ mail_etable_item_changed_cb (ESummaryTable *est, ETreePath path, PropertyData *pd) { - evolution_config_control_changed (pd->config_control); + if (pd->config_control != NULL) { + evolution_config_control_changed (pd->config_control); + } } static void -rdf_etable_item_changed_cb (ESummaryTable *est, +rdf_etable_item_changed_cb (ESummaryShown *ess, PropertyData *pd) { - evolution_config_control_changed (pd->config_control); + if (pd->config_control != NULL) { + evolution_config_control_changed (pd->config_control); + } } static void -weather_etable_item_changed_cb (ESummaryTable *est, +weather_etable_item_changed_cb (ESummaryShown *ess, PropertyData *pd) { - evolution_config_control_changed (pd->config_control); + if (pd->config_control != NULL) { + evolution_config_control_changed (pd->config_control); + } } static void weather_refresh_value_changed_cb (GtkAdjustment *adj, PropertyData *pd) { - pd->summary->preferences->weather_refresh_time = (int) adj->value; + global_preferences->weather_refresh_time = (int) adj->value; evolution_config_control_changed (pd->config_control); } @@ -827,7 +797,7 @@ weather_metric_toggled_cb (GtkToggleButton *tb, return; } - pd->summary->preferences->units = UNITS_METRIC; + global_preferences->units = UNITS_METRIC; evolution_config_control_changed (pd->config_control); } @@ -839,7 +809,7 @@ weather_imperial_toggled_cb (GtkToggleButton *tb, return; } - pd->summary->preferences->units = UNITS_IMPERIAL; + global_preferences->units = UNITS_IMPERIAL; evolution_config_control_changed (pd->config_control); } @@ -852,7 +822,7 @@ calendar_one_toggled_cb (GtkToggleButton *tb, return; } - pd->summary->preferences->days = E_SUMMARY_CALENDAR_ONE_DAY; + global_preferences->days = E_SUMMARY_CALENDAR_ONE_DAY; evolution_config_control_changed (pd->config_control); } @@ -864,7 +834,7 @@ calendar_five_toggled_cb (GtkToggleButton *tb, return; } - pd->summary->preferences->days = E_SUMMARY_CALENDAR_FIVE_DAYS; + global_preferences->days = E_SUMMARY_CALENDAR_FIVE_DAYS; evolution_config_control_changed (pd->config_control); } @@ -876,7 +846,7 @@ calendar_week_toggled_cb (GtkToggleButton *tb, return; } - pd->summary->preferences->days = E_SUMMARY_CALENDAR_ONE_WEEK; + global_preferences->days = E_SUMMARY_CALENDAR_ONE_WEEK; evolution_config_control_changed (pd->config_control); } @@ -888,7 +858,7 @@ calendar_month_toggled_cb (GtkToggleButton *tb, return; } - pd->summary->preferences->days = E_SUMMARY_CALENDAR_ONE_MONTH; + global_preferences->days = E_SUMMARY_CALENDAR_ONE_MONTH; evolution_config_control_changed (pd->config_control); } @@ -900,7 +870,7 @@ calendar_all_toggled_cb (GtkToggleButton *tb, return; } - pd->summary->preferences->show_tasks = E_SUMMARY_CALENDAR_ALL_TASKS; + global_preferences->show_tasks = E_SUMMARY_CALENDAR_ALL_TASKS; evolution_config_control_changed (pd->config_control); } @@ -912,7 +882,7 @@ calendar_today_toggled_cb (GtkToggleButton *tb, return; } - pd->summary->preferences->show_tasks = E_SUMMARY_CALENDAR_TODAYS_TASKS; + global_preferences->show_tasks = E_SUMMARY_CALENDAR_TODAYS_TASKS; evolution_config_control_changed (pd->config_control); } @@ -931,16 +901,15 @@ make_property_dialog (PropertyData *pd) mail->etable = glade_xml_get_widget (pd->xml, "mail-custom"); g_return_val_if_fail (mail->etable != NULL, FALSE); + fill_mail_etable (E_SUMMARY_TABLE (mail->etable), pd); + gtk_signal_connect (GTK_OBJECT (mail->etable), "item-changed", GTK_SIGNAL_FUNC (mail_etable_item_changed_cb), pd); - mail->model = E_SUMMARY_TABLE (mail->etable)->model; - fill_mail_etable (E_SUMMARY_TABLE (mail->etable), pd); - mail->fullpath = glade_xml_get_widget (pd->xml, "checkbutton1"); g_return_val_if_fail (mail->fullpath != NULL, FALSE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (mail->fullpath), - pd->summary->preferences->show_full_path); + global_preferences->show_full_path); gtk_signal_connect (GTK_OBJECT (mail->fullpath), "toggled", GTK_SIGNAL_FUNC (mail_show_full_path_toggled_cb), pd); @@ -960,14 +929,14 @@ make_property_dialog (PropertyData *pd) rdf->refresh = glade_xml_get_widget (pd->xml, "spinbutton1"); g_return_val_if_fail (rdf->refresh != NULL, FALSE); gtk_spin_button_set_value (GTK_SPIN_BUTTON (rdf->refresh), - (float) pd->summary->preferences->rdf_refresh_time); + (float) global_preferences->rdf_refresh_time); gtk_signal_connect (GTK_OBJECT (GTK_SPIN_BUTTON (rdf->refresh)->adjustment), "value_changed", GTK_SIGNAL_FUNC (rdf_refresh_value_changed_cb), pd); rdf->limit = glade_xml_get_widget (pd->xml, "spinbutton4"); g_return_val_if_fail (rdf->limit != NULL, FALSE); gtk_spin_button_set_value (GTK_SPIN_BUTTON (rdf->limit), - (float) pd->summary->preferences->limit); + (float) global_preferences->limit); gtk_signal_connect (GTK_OBJECT (GTK_SPIN_BUTTON (rdf->limit)->adjustment), "value_changed", GTK_SIGNAL_FUNC (rdf_limit_value_changed_cb), pd); @@ -987,7 +956,7 @@ make_property_dialog (PropertyData *pd) weather->refresh = glade_xml_get_widget (pd->xml, "spinbutton5"); g_return_val_if_fail (weather->refresh != NULL, FALSE); gtk_spin_button_set_value (GTK_SPIN_BUTTON (weather->refresh), - (float) pd->summary->preferences->weather_refresh_time); + (float) global_preferences->weather_refresh_time); gtk_signal_connect (GTK_OBJECT (GTK_SPIN_BUTTON (weather->refresh)->adjustment), "value-changed", GTK_SIGNAL_FUNC (weather_refresh_value_changed_cb), @@ -995,13 +964,15 @@ make_property_dialog (PropertyData *pd) weather->metric = glade_xml_get_widget (pd->xml, "radiobutton7"); g_return_val_if_fail (weather->metric != NULL, FALSE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (weather->metric), (pd->summary->preferences->units == UNITS_METRIC)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (weather->metric), + (global_preferences->units == UNITS_METRIC)); gtk_signal_connect (GTK_OBJECT (weather->metric), "toggled", GTK_SIGNAL_FUNC (weather_metric_toggled_cb), pd); weather->imperial = glade_xml_get_widget (pd->xml, "radiobutton8"); g_return_val_if_fail (weather->imperial != NULL, FALSE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (weather->imperial), (pd->summary->preferences->units == UNITS_IMPERIAL)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (weather->imperial), + (global_preferences->units == UNITS_IMPERIAL)); gtk_signal_connect (GTK_OBJECT (weather->imperial), "toggled", GTK_SIGNAL_FUNC (weather_imperial_toggled_cb), pd); @@ -1010,42 +981,42 @@ make_property_dialog (PropertyData *pd) calendar->one = glade_xml_get_widget (pd->xml, "radiobutton3"); g_return_val_if_fail (calendar->one != NULL, FALSE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (calendar->one), - (pd->summary->preferences->days == E_SUMMARY_CALENDAR_ONE_DAY)); + (global_preferences->days == E_SUMMARY_CALENDAR_ONE_DAY)); gtk_signal_connect (GTK_OBJECT (calendar->one), "toggled", GTK_SIGNAL_FUNC (calendar_one_toggled_cb), pd); calendar->five = glade_xml_get_widget (pd->xml, "radiobutton4"); g_return_val_if_fail (calendar->five != NULL, FALSE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (calendar->five), - (pd->summary->preferences->days == E_SUMMARY_CALENDAR_FIVE_DAYS)); + (global_preferences->days == E_SUMMARY_CALENDAR_FIVE_DAYS)); gtk_signal_connect (GTK_OBJECT (calendar->five), "toggled", GTK_SIGNAL_FUNC (calendar_five_toggled_cb), pd); calendar->week = glade_xml_get_widget (pd->xml, "radiobutton5"); g_return_val_if_fail (calendar->week != NULL, FALSE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (calendar->week), - (pd->summary->preferences->days == E_SUMMARY_CALENDAR_ONE_WEEK)); + (global_preferences->days == E_SUMMARY_CALENDAR_ONE_WEEK)); gtk_signal_connect (GTK_OBJECT (calendar->week), "toggled", GTK_SIGNAL_FUNC (calendar_week_toggled_cb), pd); calendar->month = glade_xml_get_widget (pd->xml, "radiobutton6"); g_return_val_if_fail (calendar->month != NULL, FALSE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (calendar->month), - (pd->summary->preferences->days == E_SUMMARY_CALENDAR_ONE_MONTH)); + (global_preferences->days == E_SUMMARY_CALENDAR_ONE_MONTH)); gtk_signal_connect (GTK_OBJECT (calendar->month), "toggled", GTK_SIGNAL_FUNC (calendar_month_toggled_cb), pd); calendar->all = glade_xml_get_widget (pd->xml, "radiobutton1"); g_return_val_if_fail (calendar->all != NULL, FALSE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (calendar->all), - (pd->summary->preferences->show_tasks == E_SUMMARY_CALENDAR_ALL_TASKS)); + (global_preferences->show_tasks == E_SUMMARY_CALENDAR_ALL_TASKS)); gtk_signal_connect (GTK_OBJECT (calendar->all), "toggled", GTK_SIGNAL_FUNC (calendar_all_toggled_cb), pd); calendar->today = glade_xml_get_widget (pd->xml, "radiobutton2"); g_return_val_if_fail (calendar->today != NULL, FALSE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (calendar->today), - (pd->summary->preferences->show_tasks == E_SUMMARY_CALENDAR_TODAYS_TASKS)); + (global_preferences->show_tasks == E_SUMMARY_CALENDAR_TODAYS_TASKS)); gtk_signal_connect (GTK_OBJECT(calendar->today), "toggled", GTK_SIGNAL_FUNC (calendar_today_toggled_cb), pd); @@ -1079,9 +1050,6 @@ free_property_dialog (PropertyData *pd) if (pd->xml) { gtk_object_unref (GTK_OBJECT (pd->xml)); } - if (pd->summary) { - gtk_object_unref (GTK_OBJECT (pd->summary)); - } g_free (pd); } @@ -1161,12 +1129,12 @@ config_control_apply_cb (EvolutionConfigControl *control, g_hash_table_foreach (E_SUMMARY_SHOWN (pd->rdf->etable)->shown_model, add_shown_to_list, &pd->rdf->tmp_list); - if (pd->summary->preferences->rdf_urls) { - free_str_list (pd->summary->preferences->rdf_urls); - g_list_free (pd->summary->preferences->rdf_urls); + if (global_preferences->rdf_urls) { + free_str_list (global_preferences->rdf_urls); + g_list_free (global_preferences->rdf_urls); } - pd->summary->preferences->rdf_urls = copy_str_list (pd->rdf->tmp_list); + global_preferences->rdf_urls = copy_str_list (pd->rdf->tmp_list); /* Weather */ if (pd->weather->tmp_list) { @@ -1177,11 +1145,11 @@ config_control_apply_cb (EvolutionConfigControl *control, g_hash_table_foreach (E_SUMMARY_SHOWN (pd->weather->etable)->shown_model, add_shown_to_list, &pd->weather->tmp_list); - if (pd->summary->preferences->stations) { - free_str_list (pd->summary->preferences->stations); - g_list_free (pd->summary->preferences->stations); + if (global_preferences->stations) { + free_str_list (global_preferences->stations); + g_list_free (global_preferences->stations); } - pd->summary->preferences->stations = copy_str_list (pd->weather->tmp_list); + global_preferences->stations = copy_str_list (pd->weather->tmp_list); /* Folders */ if (pd->mail->tmp_list) { @@ -1191,13 +1159,13 @@ config_control_apply_cb (EvolutionConfigControl *control, } g_hash_table_foreach (pd->mail->model, maybe_add_to_shown, &pd->mail->tmp_list); - if (pd->summary->preferences->display_folders) { - free_str_list (pd->summary->preferences->display_folders); - g_list_free (pd->summary->preferences->display_folders); + if (global_preferences->display_folders) { + free_str_list (global_preferences->display_folders); + g_list_free (global_preferences->display_folders); } - pd->summary->preferences->display_folders = copy_str_list (pd->mail->tmp_list); - - e_summary_reconfigure (pd->summary); + global_preferences->display_folders = copy_str_list (pd->mail->tmp_list); + + e_summary_reconfigure_all (); } static void @@ -1208,7 +1176,7 @@ config_control_destroy_cb (EvolutionConfigControl *config_control, pd = (PropertyData *) data; - e_summary_preferences_save (pd->summary->preferences); + e_summary_preferences_save (global_preferences); free_property_dialog (pd); } @@ -1216,17 +1184,11 @@ static BonoboObject * factory_fn (BonoboGenericFactory *generic_factory, void *data) { - ESummary *summary; PropertyData *pd; GtkWidget *widget; - summary = E_SUMMARY (data); - pd = g_new0 (PropertyData, 1); - gtk_object_ref (GTK_OBJECT (summary)); - pd->summary = summary; - pd->xml = glade_xml_new (EVOLUTION_GLADEDIR "/my-evolution.glade", NULL); g_return_val_if_fail (pd->xml != NULL, NULL); @@ -1254,9 +1216,9 @@ factory_fn (BonoboGenericFactory *generic_factory, } gboolean -e_summary_preferences_register_config_control_factory (ESummary *summary) +e_summary_preferences_register_config_control_factory (void) { - if (bonobo_generic_factory_new (FACTORY_ID, factory_fn, summary) == NULL) + if (bonobo_generic_factory_new (FACTORY_ID, factory_fn, NULL) == NULL) return FALSE; return TRUE; diff --git a/my-evolution/e-summary-preferences.h b/my-evolution/e-summary-preferences.h index df5e28ac30..867380bd7f 100644 --- a/my-evolution/e-summary-preferences.h +++ b/my-evolution/e-summary-preferences.h @@ -31,8 +31,9 @@ void e_summary_preferences_save (ESummaryPrefs *prefs); void e_summary_preferences_free (ESummaryPrefs *prefs); ESummaryPrefs *e_summary_preferences_copy (ESummaryPrefs *prefs); ESummaryPrefs *e_summary_preferences_init (void); +ESummaryPrefs *e_summary_preferences_get_global (void); -gboolean e_summary_preferences_register_config_control_factory (ESummary *summary); +gboolean e_summary_preferences_register_config_control_factory (void); #endif diff --git a/my-evolution/e-summary-tasks.c b/my-evolution/e-summary-tasks.c index 51ab45c051..4a96e565cb 100644 --- a/my-evolution/e-summary-tasks.c +++ b/my-evolution/e-summary-tasks.c @@ -256,7 +256,7 @@ generate_html (gpointer data) g_free (s1); g_free (s2); - e_summary_draw (summary); +/* e_summary_draw (summary); */ return FALSE; } else { char *s; @@ -316,7 +316,7 @@ generate_html (gpointer data) tasks->html = string->str; g_string_free (string, FALSE); - e_summary_draw (summary); +/* e_summary_draw (summary); */ return FALSE; } diff --git a/my-evolution/e-summary-weather.c b/my-evolution/e-summary-weather.c index c121ba4927..0b8e183125 100644 --- a/my-evolution/e-summary-weather.c +++ b/my-evolution/e-summary-weather.c @@ -663,20 +663,14 @@ is_weather_shown (ESummaryWeather *weather, } void -e_summary_weather_fill_etable (ESummaryShown *ess, - ESummary *summary) +e_summary_weather_fill_etable (ESummaryShown *ess) { - ESummaryWeather *weather; ETreePath region, state, location; ESummaryShownModelEntry *entry; char *key, *path; int nregions, iregions; char **regions; - g_return_if_fail (IS_E_SUMMARY (summary)); - - weather = summary->weather; - path = g_strdup (EVOLUTION_DATADIR "/evolution/Locations"); key = g_strdup_printf ("=%s=/", path); diff --git a/my-evolution/e-summary-weather.h b/my-evolution/e-summary-weather.h index 3dac76f7ee..6933137ed2 100644 --- a/my-evolution/e-summary-weather.h +++ b/my-evolution/e-summary-weather.h @@ -145,8 +145,7 @@ typedef time_t ESummaryWeatherUpdate; char *e_summary_weather_get_html (ESummary *summary); void e_summary_weather_init (ESummary *summary); void e_summary_weather_reconfigure (ESummary *summary); -void e_summary_weather_fill_etable (ESummaryShown *ess, - ESummary *summary); +void e_summary_weather_fill_etable (ESummaryShown *ess); const char *e_summary_weather_code_to_name (const char *code); void e_summary_weather_free (ESummary *summary); gboolean e_summary_weather_update (ESummary *summary); diff --git a/my-evolution/e-summary.c b/my-evolution/e-summary.c index f5945aeda2..be738d726f 100644 --- a/my-evolution/e-summary.c +++ b/my-evolution/e-summary.c @@ -72,6 +72,8 @@ extern char *evolution_dir; +static GList *all_summaries = NULL; + static GtkObjectClass *e_summary_parent_class; struct _ESummaryMailFolderInfo { @@ -126,6 +128,8 @@ destroy (GtkObject *object) return; } + all_summaries = g_list_remove (all_summaries, summary); + if (priv->pending_reload_tag) { gtk_timeout_remove (priv->pending_reload_tag); priv->pending_reload_tag = 0; @@ -235,6 +239,16 @@ e_summary_draw (ESummary *summary) g_string_free (string, TRUE); } +void +e_summary_redraw_all (void) +{ + GList *p; + + for (p = all_summaries; p; p = p->next) { + e_summary_draw (E_SUMMARY (p->data)); + } +} + static char * e_pixmap_file (const char *filename) { @@ -539,7 +553,7 @@ e_summary_new (const GNOME_Evolution_Shell shell, e_summary_add_protocol_listener (summary, "evolution", e_summary_evolution_protocol_listener, summary); - e_summary_mail_init (summary, shell); + e_summary_mail_init (summary); e_summary_calendar_init (summary); e_summary_tasks_init (summary); e_summary_rdf_init (summary); @@ -547,6 +561,7 @@ e_summary_new (const GNOME_Evolution_Shell shell, /* e_summary_draw (summary); */ + all_summaries = g_list_prepend (all_summaries, summary); return GTK_WIDGET (summary); } @@ -720,10 +735,6 @@ e_summary_unset_message (ESummary *summary) void e_summary_reconfigure (ESummary *summary) { - if (summary->mail != NULL) { - e_summary_mail_reconfigure (summary); - } - if (summary->rdf != NULL) { e_summary_rdf_reconfigure (summary); } @@ -739,6 +750,21 @@ e_summary_reconfigure (ESummary *summary) if (summary->tasks != NULL) { e_summary_tasks_reconfigure (summary); } + + e_summary_draw (summary); +} + +void +e_summary_reconfigure_all (void) +{ + GList *p; + + /* This is here, because it only needs to be done once for all summaries */ + e_summary_mail_reconfigure (); + + for (p = all_summaries; p; p = p->next) { + e_summary_reconfigure (E_SUMMARY (p->data)); + } } static gint diff --git a/my-evolution/e-summary.h b/my-evolution/e-summary.h index ad3e72d925..4ee9d7f98c 100644 --- a/my-evolution/e-summary.h +++ b/my-evolution/e-summary.h @@ -137,6 +137,8 @@ void e_summary_reload (BonoboUIComponent *component, gpointer user_data, const char *cname); void e_summary_draw (ESummary *summary); +void e_summary_redraw_all (void); + void e_summary_change_current_view (ESummary *summary, const char *uri); |