diff options
-rw-r--r-- | mail/ChangeLog | 8 | ||||
-rw-r--r-- | mail/folder-browser-ui.c | 21 | ||||
-rw-r--r-- | mail/folder-browser.c | 32 | ||||
-rw-r--r-- | mail/folder-browser.h | 3 |
4 files changed, 52 insertions, 12 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index c0ef75e560..ef15999f3b 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,5 +1,13 @@ 2003-01-13 Jeffrey Stedfast <fejj@ximian.com> + * folder-browser-ui.c (folder_browser_ui_add_message): Check the + state of message_style in gconf and set the menus accordingly. + + * folder-browser.c (folder_browser_destroy): Remove listener for + message_style change notification. + (folder_browser_gui_init): Connect a listener for changes to + message_style. + * mail-config.c (account_to_xml): Save the auto-check timeout value. (account_new_from_xml): Load the auto-check-timeout value. diff --git a/mail/folder-browser-ui.c b/mail/folder-browser-ui.c index cf5a689304..b5d76a5fb6 100644 --- a/mail/folder-browser-ui.c +++ b/mail/folder-browser-ui.c @@ -511,9 +511,10 @@ char *message_display_styles[] = { void folder_browser_ui_add_message (FolderBrowser *fb) { - int state; BonoboUIComponent *uic = fb->uicomp; FolderBrowserSelectionState prev_state; + GConfClient *gconf; + int style; if (fb->sensitise_state) { g_hash_table_destroy(fb->sensitise_state); @@ -522,16 +523,19 @@ folder_browser_ui_add_message (FolderBrowser *fb) ui_add (fb, "message", message_verbs, message_pixcache); + gconf = gconf_client_get_default (); + /* Display Style */ - state = fb->mail_display->display_style; - bonobo_ui_component_set_prop (uic, message_display_styles[state], - "state", "1", NULL); + style = gconf_client_get_int (gconf, "/apps/evolution/mail/display/message_style", NULL); + style = style >= 0 && style < MAIL_CONFIG_DISPLAY_MAX ? style : 0; + bonobo_ui_component_set_prop (uic, message_display_styles[style], "state", "1", NULL); bonobo_ui_component_add_listener (uic, "ViewNormal", folder_browser_set_message_display_style, fb); bonobo_ui_component_add_listener (uic, "ViewFullHeaders", folder_browser_set_message_display_style, fb); bonobo_ui_component_add_listener (uic, "ViewSource", folder_browser_set_message_display_style, fb); - /* FIXME: this kind of bypasses bonobo but seems the only way when we change components */ - folder_browser_set_message_display_style (uic, strrchr (message_display_styles[state], '/') + 1, - Bonobo_UIComponent_STATE_CHANGED, "1", fb); + if (fb->mail_display->display_style != style) { + fb->mail_display->display_style = style; + mail_display_redisplay (fb->mail_display, TRUE); + } /* Resend Message */ if (fb->folder && !folder_browser_is_sent (fb)) @@ -544,8 +548,7 @@ folder_browser_ui_add_message (FolderBrowser *fb) /* Charset picker */ e_charset_picker_bonobo_ui_populate (uic, "/menu/View", FB_DEFAULT_CHARSET, - folder_browser_charset_changed, - fb); + folder_browser_charset_changed, fb); } void diff --git a/mail/folder-browser.c b/mail/folder-browser.c index 074bdd5f6e..4c4c29bc3d 100644 --- a/mail/folder-browser.c +++ b/mail/folder-browser.c @@ -213,6 +213,11 @@ folder_browser_destroy (GtkObject *object) folder_browser->hide_deleted_notify_id = 0; } + if (folder_browser->message_style_notify_id != 0) { + gconf_client_notify_remove (gconf, folder_browser->message_style_notify_id); + folder_browser->message_style_notify_id = 0; + } + /* wait for all outstanding async events against us */ mail_async_event_destroy (folder_browser->async_event); @@ -1344,8 +1349,6 @@ folder_browser_set_message_display_style (BonoboUIComponent *component GConfClient *gconf; int i; - /* FIXME: we should listen for changes to this, so when it changes for one folder all folders get updated */ - if (type != Bonobo_UIComponent_STATE_CHANGED || atoi (state) == 0 || fb->message_list == NULL) @@ -1353,6 +1356,8 @@ folder_browser_set_message_display_style (BonoboUIComponent *component gconf = gconf_client_get_default (); + printf ("message display style: %s\n", path); + for (i = 0; i < MAIL_CONFIG_DISPLAY_MAX; i++) { if (strstr (message_display_styles[i], path)) { fb->mail_display->display_style = i; @@ -2384,6 +2389,22 @@ hide_deleted_changed (GConfClient *client, guint cnxn_id, GConfEntry *entry, gpo } static void +message_style_changed (GConfClient *client, guint cnxn_id, GConfEntry *entry, gpointer user_data) +{ + extern char *message_display_styles[]; + FolderBrowser *fb = user_data; + const char *uipath; + int style; + + if (fb->uicomp) { + style = gconf_client_get_int (client, "/apps/evolution/mail/display/message_style", NULL); + style = style >= 0 && style < MAIL_CONFIG_DISPLAY_MAX ? style : 0; + uipath = message_display_styles[style]; + bonobo_ui_component_set_prop (fb->uicomp, uipath, "state", "1", NULL); + } +} + +static void folder_browser_gui_init (FolderBrowser *fb) { extern RuleContext *search_context; @@ -2453,6 +2474,13 @@ folder_browser_gui_init (FolderBrowser *fb) fb->show_preview_notify_id = gconf_client_notify_add (gconf, "/apps/evolution/mail/display/show_preview", show_preview_changed, fb, NULL, NULL); + /* message display style */ + gconf_client_add_dir (gconf, "/apps/evolution/mail/display/message_style", + GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); + + fb->message_style_notify_id = gconf_client_notify_add (gconf, "/apps/evolution/mail/display/message_style", + message_style_changed, fb, NULL, NULL); + /* paned size */ gconf_client_add_dir (gconf, "/apps/evolution/mail/display/paned_size", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); diff --git a/mail/folder-browser.h b/mail/folder-browser.h index f9d0f1df3e..69aca02f9c 100644 --- a/mail/folder-browser.h +++ b/mail/folder-browser.h @@ -60,10 +60,11 @@ struct _FolderBrowser { guint seen_id; gulong paned_resize_id; - guint paned_size_notify_id; + guint paned_size_notify_id; guint show_preview_notify_id; guint hide_deleted_notify_id; + guint message_style_notify_id; /* a folder we are expunging, dont use other than to compare the pointer value */ CamelFolder *expunging; |