aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--my-evolution/component-factory.c12
-rw-r--r--my-evolution/e-summary-calendar.c4
-rw-r--r--my-evolution/e-summary-factory.c2
-rw-r--r--my-evolution/e-summary-mail.c259
-rw-r--r--my-evolution/e-summary-mail.h14
-rw-r--r--my-evolution/e-summary-preferences.c168
-rw-r--r--my-evolution/e-summary-preferences.h3
-rw-r--r--my-evolution/e-summary-tasks.c4
-rw-r--r--my-evolution/e-summary-weather.c8
-rw-r--r--my-evolution/e-summary-weather.h3
-rw-r--r--my-evolution/e-summary.c36
-rw-r--r--my-evolution/e-summary.h2
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);