diff options
-rw-r--r-- | mail/em-account-editor.c | 39 | ||||
-rw-r--r-- | mail/mail-config.glade | 368 | ||||
-rw-r--r-- | modules/mail/e-mail-shell-settings.c | 12 | ||||
-rw-r--r-- | modules/mail/em-mailer-prefs.c | 125 | ||||
-rw-r--r-- | modules/mail/em-mailer-prefs.h | 9 | ||||
-rw-r--r-- | plugins/bbdb/bbdb.c | 44 | ||||
-rw-r--r-- | widgets/misc/e-charset-picker.c | 80 | ||||
-rw-r--r-- | widgets/misc/e-charset-picker.h | 11 |
8 files changed, 368 insertions, 320 deletions
diff --git a/mail/em-account-editor.c b/mail/em-account-editor.c index e25d0553cb..71a2457409 100644 --- a/mail/em-account-editor.c +++ b/mail/em-account-editor.c @@ -60,6 +60,7 @@ #include "widgets/misc/e-signature-editor.h" #include "e-mail-local.h" +#include "e-mail-store.h" #include "em-config.h" #include "em-folder-selection-button.h" #include "em-account-editor.h" @@ -191,6 +192,7 @@ struct _EMAccountEditorPrivate { /* for druid page preparation */ guint identity_set:1; guint receive_set:1; + guint send_set:1; guint management_set:1; }; @@ -3047,11 +3049,11 @@ emae_check_complete (EConfig *ec, const gchar *pageid, gpointer data) const gchar *tmp; EAccount *ea; gboolean refresh = FALSE; - gboolean edit; + gboolean new_account; account = em_account_editor_get_modified_account (emae); - original_account = em_account_editor_get_modified_account (emae); - edit = (original_account != NULL); + original_account = em_account_editor_get_original_account (emae); + new_account = (original_account == NULL); /* We use the page-check of various pages to 'prepare' or pre-load their values, only in the druid */ @@ -3090,28 +3092,35 @@ emae_check_complete (EConfig *ec, const gchar *pageid, gpointer data) index = check_servers (at); gtk_entry_set_text (emae->priv->source.username, user); gtk_entry_set_text (emae->priv->transport.username, user); - if (!edit && uri && (url = camel_url_new (uri, NULL)) != NULL) { + if (new_account && uri && (url = camel_url_new (uri, NULL)) != NULL) { refresh = TRUE; - camel_url_set_protocol (url, mail_servers[index].proto); - camel_url_set_param (url, "use_ssl", mail_servers[index].ssl); - camel_url_set_host (url, mail_servers[index].recv); camel_url_set_user (url, user); - gtk_entry_set_text (emae->priv->source.hostname, mail_servers[index].recv); - gtk_entry_set_text (emae->priv->transport.hostname, mail_servers[index].send); + if (index != -1) { + camel_url_set_protocol (url, mail_servers[index].proto); + camel_url_set_param (url, "use_ssl", mail_servers[index].ssl); + camel_url_set_host (url, mail_servers[index].recv); + gtk_entry_set_text (emae->priv->source.hostname, mail_servers[index].recv); + gtk_entry_set_text (emae->priv->transport.hostname, mail_servers[index].send); + } else { + camel_url_set_host (url, ""); + } + g_free (uri); uri = camel_url_to_string (url, 0); e_account_set_string (account, E_ACCOUNT_SOURCE_URL, uri); - g_free (uri); camel_url_free (url); } + g_free (uri); } } else if (!strcmp (pageid, "30.send")) { + if (!emae->priv->send_set) { CamelURL *url; gchar *at, *user; gint index; gchar *uri = (gchar *)e_account_get_string (account, E_ACCOUNT_TRANSPORT_URL); + emae->priv->send_set = 1; tmp = e_account_get_string (account, E_ACCOUNT_ID_ADDRESS); at = strchr (tmp, '@'); user = g_alloca (at-tmp+1); @@ -3120,7 +3129,7 @@ emae_check_complete (EConfig *ec, const gchar *pageid, gpointer data) at++; index = check_servers (at); - if (uri && (url = camel_url_new (uri, NULL)) != NULL) { + if (index != -1 && uri && (url = camel_url_new (uri, NULL)) != NULL) { refresh = TRUE; camel_url_set_protocol (url, "smtp"); camel_url_set_param (url, "use_ssl", mail_servers[index].ssl); @@ -3130,9 +3139,8 @@ emae_check_complete (EConfig *ec, const gchar *pageid, gpointer data) e_account_set_string (account, E_ACCOUNT_TRANSPORT_URL, uri); g_free (uri); camel_url_free (url); - } else { - g_warning ("buz2\n"); } + } } else if (!strcmp (pageid, "20.receive_options")) { if (emae->priv->source.provider @@ -3223,15 +3231,12 @@ em_account_editor_check (EMAccountEditor *emae, const gchar *page) static void add_new_store (gchar *uri, CamelStore *store, gpointer user_data) { -#if 0 /* KILL-BONOBO: Try to actually fix this? */ - MailComponent *component = mail_component_peek (); EAccount *account = user_data; if (store == NULL) return; - mail_component_add_store (component, store, account->name); -#endif + e_mail_store_add (store, account->name); } static void diff --git a/mail/mail-config.glade b/mail/mail-config.glade index 0124d086a3..e9fda21741 100644 --- a/mail/mail-config.glade +++ b/mail/mail-config.glade @@ -1,7 +1,7 @@ <?xml version="1.0"?> <glade-interface> <requires lib="gnome"/> - <!-- interface-requires gnome 2301.3464 --> + <!-- interface-requires gnome 2298.56488 --> <!-- interface-requires gtk+ 2.16 --> <!-- interface-naming-policy toplevel-contextual --> <widget class="GtkWindow" id="account_druid"> @@ -906,6 +906,7 @@ For example: "Work" or "Personal"</property> <widget class="GtkImage" id="image2"> <property name="visible">True</property> <property name="stock">gtk-dialog-warning</property> + <property name="icon-size">4</property> </widget> <packing> <property name="expand">False</property> @@ -1354,6 +1355,7 @@ For example: "Work" or "Personal"</property> <widget class="GtkImage" id="image1"> <property name="visible">True</property> <property name="stock">gtk-dialog-warning</property> + <property name="icon-size">4</property> </widget> <packing> <property name="expand">False</property> @@ -2360,7 +2362,7 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="GtkLabel" id="label2"> + <widget class="GtkLabel" id="label1"> <property name="visible">True</property> <property name="xalign">0</property> <property name="label" translatable="yes">Encry_ption certificate:</property> @@ -2404,13 +2406,14 @@ For example: "Work" or "Personal"</property> <property name="xscale">0</property> <property name="yscale">0</property> <child> - <widget class="GtkHBox" id="hbox2"> + <widget class="GtkHBox" id="hbox1"> <property name="visible">True</property> <property name="spacing">2</property> <child> <widget class="GtkImage" id="image3"> <property name="visible">True</property> <property name="stock">gtk-open</property> + <property name="icon-size">4</property> </widget> <packing> <property name="expand">False</property> @@ -2459,6 +2462,7 @@ For example: "Work" or "Personal"</property> <widget class="GtkImage" id="image10"> <property name="visible">True</property> <property name="stock">gtk-clear</property> + <property name="icon-size">4</property> </widget> <packing> <property name="expand">False</property> @@ -2514,13 +2518,14 @@ For example: "Work" or "Personal"</property> <property name="xscale">0</property> <property name="yscale">0</property> <child> - <widget class="GtkHBox" id="hbox1"> + <widget class="GtkHBox" id="hbox2"> <property name="visible">True</property> <property name="spacing">2</property> <child> <widget class="GtkImage" id="image4"> <property name="visible">True</property> <property name="stock">gtk-open</property> + <property name="icon-size">4</property> </widget> <packing> <property name="expand">False</property> @@ -2529,7 +2534,7 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="GtkLabel" id="label1"> + <widget class="GtkLabel" id="label2"> <property name="visible">True</property> <property name="label" translatable="yes">_Select...</property> <property name="use_underline">True</property> @@ -2569,6 +2574,7 @@ For example: "Work" or "Personal"</property> <widget class="GtkImage" id="image9"> <property name="visible">True</property> <property name="stock">gtk-clear</property> + <property name="icon-size">4</property> </widget> <packing> <property name="expand">False</property> @@ -2647,6 +2653,144 @@ For example: "Work" or "Personal"</property> </widget> </child> </widget> + <widget class="GtkWindow" id="accounts_tab"> + <property name="title" translatable="yes">Email Accounts</property> + <child> + <widget class="GtkHBox" id="toplevel"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="Custom" id="etableMailAccounts"> + <property name="visible">True</property> + <property name="creation_function">em_account_prefs_treeview_new</property> + </widget> + <packing> + <property name="position">0</property> + </packing> + </child> + <child> + <widget class="GtkVBox" id="vboxMailFunctions"> + <property name="visible">True</property> + <property name="spacing">6</property> + <child> + <widget class="GtkVButtonBox" id="vbuttonboxMailAccounts"> + <property name="visible">True</property> + <property name="spacing">6</property> + <property name="layout_style">start</property> + <child> + <widget class="GtkButton" id="cmdAccountAdd"> + <property name="label">gtk-add</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="receives_default">False</property> + <property name="use_stock">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="cmdAccountEdit"> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="receives_default">False</property> + <child> + <widget class="GtkAlignment" id="alignment33"> + <property name="visible">True</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <child> + <widget class="GtkHBox" id="hbox224"> + <property name="visible">True</property> + <property name="spacing">2</property> + <child> + <widget class="GtkImage" id="image8"> + <property name="visible">True</property> + <property name="stock">gtk-properties</property> + <property name="icon-size">4</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label557"> + <property name="visible">True</property> + <property name="label" translatable="yes">_Edit</property> + <property name="use_underline">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="cmdAccountDelete"> + <property name="label">gtk-delete</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="receives_default">False</property> + <property name="use_stock">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="cmdAccountDefault"> + <property name="label" translatable="yes">De_fault</property> + <property name="width_request">89</property> + <property name="height_request">36</property> + <property name="visible">True</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> + </widget> + <packing> + <property name="position">0</property> + </packing> + </child> + </widget> + <packing> + <property name="expand">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + </child> + </widget> <widget class="GtkWindow" id="preferences_tab"> <property name="title" translatable="yes">Mail Preferences</property> <child> @@ -3215,10 +3359,10 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="GtkOptionMenu" id="omenuEmptyTrashDays"> + <widget class="GtkComboBox" id="comboboxEmptyTrashDays"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> + <property name="items" translatable="yes">a +b</property> </widget> <packing> <property name="expand">False</property> @@ -3848,6 +3992,7 @@ For example: "Work" or "Personal"</property> <widget class="GtkImage" id="plugin_image"> <property name="visible">True</property> <property name="icon_name">gtk-info</property> + <property name="icon-size">4</property> </widget> <packing> <property name="expand">False</property> @@ -3894,10 +4039,10 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="GtkOptionMenu" id="junk_empty_combo"> + <widget class="GtkComboBox" id="junk_empty_combobox"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> + <property name="items" translatable="yes">a +b</property> </widget> <packing> <property name="expand">False</property> @@ -4041,6 +4186,7 @@ For example: "Work" or "Personal"</property> <widget class="GtkImage" id="image11"> <property name="visible">True</property> <property name="stock">gtk-info</property> + <property name="icon-size">4</property> </widget> <packing> <property name="expand">False</property> @@ -4114,7 +4260,7 @@ For example: "Work" or "Personal"</property> <property name="visible">True</property> <property name="can_focus">True</property> <child> - <widget class="GtkVBox" id="vboxGeneral1"> + <widget class="GtkVBox" id="vboxGeneral"> <property name="visible">True</property> <property name="border_width">12</property> <property name="spacing">18</property> @@ -4256,6 +4402,62 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> + <widget class="GtkAlignment" id="alignment25"> + <property name="visible">True</property> + <property name="xalign">7.4505801528346183e-09</property> + <property name="xscale">0</property> + <child> + <widget class="GtkHBox" id="hboxReplyStyle"> + <property name="visible">True</property> + <child> + <widget class="GtkComboBox" id="comboboxReplyStyle"> + <property name="visible">True</property> + <property name="items" translatable="yes">Attachment +Inline (Outlook style) +Quoted +Do not quote</property> + </widget> + <packing> + <property name="position">0</property> + </packing> + </child> + </widget> + </child> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="hboxForwardStyle"> + <property name="visible">True</property> + <child> + <widget class="GtkComboBox" id="comboboxForwardStyle"> + <property name="visible">True</property> + <property name="items" translatable="yes">Attachment +Inline +Quoted</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> <widget class="GtkOptionMenu" id="omenuCharset1"> <property name="visible">True</property> <property name="can_focus">True</property> @@ -4297,33 +4499,6 @@ For example: "Work" or "Personal"</property> <property name="y_options"></property> </packing> </child> - <child> - <widget class="GtkComboBox" id="comboboxForwardStyle"> - <property name="visible">True</property> - <property name="items" translatable="yes">Attachment -Inline -Quoted</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - </packing> - </child> - <child> - <widget class="GtkComboBox" id="comboboxReplyStyle"> - <property name="visible">True</property> - <property name="items" translatable="yes">Attachment -Inline (Outlook style) -Quoted -Do Not Quote</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - </packing> - </child> </widget> <packing> <property name="position">5</property> @@ -4481,7 +4656,7 @@ Do Not Quote</property> </widget> </child> <child> - <widget class="GtkLabel" id="lblGeneral1"> + <widget class="GtkLabel" id="lblGeneral"> <property name="visible">True</property> <property name="label" translatable="yes">General</property> <property name="use_underline">True</property> @@ -4508,6 +4683,7 @@ Do Not Quote</property> <property name="label" translatable="yes"><b>Sig_natures</b></property> <property name="use_markup">True</property> <property name="use_underline">True</property> + <property name="mnemonic_widget">listSignatures</property> </widget> <packing> <property name="expand">False</property> @@ -4704,6 +4880,7 @@ Do Not Quote</property> <property name="visible">True</property> <property name="yalign">0</property> <property name="stock">gtk-dialog-info</property> + <property name="icon-size">4</property> </widget> <packing> <property name="expand">False</property> @@ -4874,7 +5051,7 @@ Do Not Quote</property> <widget class="GtkWindow" id="font_tab"> <property name="title" translatable="yes">Font Properties</property> <child> - <widget class="GtkVBox" id="toplevel1"> + <widget class="GtkVBox" id="toplevel"> <property name="visible">True</property> <property name="spacing">12</property> <child> @@ -5016,7 +5193,7 @@ Do Not Quote</property> <property name="border_width">12</property> <property name="spacing">6</property> <child> - <widget class="GtkHBox" id="hboxImageAndHelp1"> + <widget class="GtkHBox" id="hboxImageAndHelp"> <property name="visible">True</property> <property name="spacing">6</property> <child> @@ -5154,6 +5331,7 @@ for display purposes only. </property> <widget class="GtkImage" id="image5"> <property name="visible">True</property> <property name="stock">gtk-add</property> + <property name="icon-size">4</property> </widget> <packing> <property name="expand">False</property> @@ -5217,7 +5395,7 @@ for display purposes only. </property> <property name="visible">True</property> <property name="can_focus">True</property> <child> - <widget class="GtkVBox" id="vboxGeneral2"> + <widget class="GtkVBox" id="vboxGeneral"> <property name="visible">True</property> <property name="border_width">12</property> <property name="spacing">18</property> @@ -5291,7 +5469,7 @@ for display purposes only. </property> <property name="visible">True</property> <property name="spacing">6</property> <child> - <widget class="GtkTable" id="table1"> + <widget class="GtkTable" id="table8"> <property name="visible">True</property> <property name="n_rows">4</property> <property name="n_columns">4</property> @@ -5326,21 +5504,6 @@ for display purposes only. </property> </packing> </child> <child> - <widget class="GtkLabel" id="lblSocksHost"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">S_OCKS Host:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">txtSocksHost</property> - </widget> - <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> <widget class="GtkLabel" id="lblIgnoreHosts"> <property name="visible">True</property> <property name="xalign">0</property> @@ -5380,19 +5543,6 @@ for display purposes only. </property> </packing> </child> <child> - <widget class="GtkEntry" id="txtSocksHost"> - <property name="visible">True</property> - <property name="can_focus">True</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="y_options"></property> - </packing> - </child> - <child> <widget class="GtkLabel" id="lblHttpPort"> <property name="visible">True</property> <property name="xalign">0</property> @@ -5421,21 +5571,6 @@ for display purposes only. </property> </packing> </child> <child> - <widget class="GtkLabel" id="lblSocksPort"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Port:</property> - </widget> - <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> <widget class="GtkSpinButton" id="spnHttpPort"> <property name="visible">True</property> <property name="can_focus">True</property> @@ -5464,21 +5599,6 @@ for display purposes only. </property> </packing> </child> <child> - <widget class="GtkSpinButton" id="spnSocksPort"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="adjustment">0 0 65535 1 10 0</property> - <property name="climb_rate">1</property> - </widget> - <packing> - <property name="left_attach">3</property> - <property name="right_attach">4</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="y_options"></property> - </packing> - </child> - <child> <widget class="GtkEntry" id="txtIgnoreHosts"> <property name="visible">True</property> <property name="can_focus">True</property> @@ -5491,6 +5611,18 @@ for display purposes only. </property> <property name="y_options"></property> </packing> </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> </widget> <packing> <property name="expand">False</property> @@ -5589,36 +5721,6 @@ for display purposes only. </property> <property name="position">3</property> </packing> </child> - <child> - <widget class="GtkRadioButton" id="rdoAutoConfig"> - <property name="label" translatable="yes">_Automatic proxy configuration URL:</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="draw_indicator">True</property> - <property name="group">rdoSysSettings</property> - </widget> - <packing> - <property name="position">4</property> - </packing> - </child> - <child> - <widget class="GtkAlignment" id="alignment36"> - <property name="visible">True</property> - <property name="left_padding">24</property> - <child> - <widget class="GtkEntry" id="txtAutoConfigUrl"> - <property name="visible">True</property> - <property name="can_focus">True</property> - </widget> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="position">5</property> - </packing> - </child> </widget> <packing> <property name="expand">False</property> @@ -5634,7 +5736,7 @@ for display purposes only. </property> </widget> </child> <child> - <widget class="GtkLabel" id="lblGeneral2"> + <widget class="GtkLabel" id="lblGeneral"> <property name="visible">True</property> <property name="label" translatable="yes">General</property> </widget> diff --git a/modules/mail/e-mail-shell-settings.c b/modules/mail/e-mail-shell-settings.c index 8237924e3c..c7e3218191 100644 --- a/modules/mail/e-mail-shell-settings.c +++ b/modules/mail/e-mail-shell-settings.c @@ -155,6 +155,18 @@ e_mail_shell_settings_init (EShell *shell) e_shell_settings_install_property ( g_param_spec_boolean ( + "mail-empty-junk-on-exit", + NULL, + NULL, + FALSE, + G_PARAM_READWRITE)); + + e_shell_settings_bind_to_gconf ( + shell_settings, "mail-empty-junk-on-exit", + "/apps/evolution/mail/junk/empty_on_exit"); + + e_shell_settings_install_property ( + g_param_spec_boolean ( "mail-empty-trash-on-exit", NULL, NULL, diff --git a/modules/mail/em-mailer-prefs.c b/modules/mail/em-mailer-prefs.c index fa450dc2ee..6b550b1a55 100644 --- a/modules/mail/em-mailer-prefs.c +++ b/modules/mail/em-mailer-prefs.c @@ -602,81 +602,91 @@ charset_menu_init (EMMailerPrefs *prefs) } static void -trash_days_activate (GtkWidget *item, EMMailerPrefs *prefs) +trash_days_changed (GtkComboBox *combo_box, + EMMailerPrefs *prefs) { - gint days; + gint index; + + index = gtk_combo_box_get_active (combo_box); + g_return_if_fail (index >= 0); + g_return_if_fail (index < G_N_ELEMENTS (empty_trash_frequency)); - days = GPOINTER_TO_INT (g_object_get_data ((GObject *) item, "days")); - gconf_client_set_int (prefs->gconf, "/apps/evolution/mail/trash/empty_on_exit_days", days, NULL); + gconf_client_set_int ( + prefs->gconf, + "/apps/evolution/mail/trash/empty_on_exit_days", + empty_trash_frequency[index].days, NULL); } static void -emmp_empty_trash_init (EMMailerPrefs *prefs) +emmp_empty_trash_init (EMMailerPrefs *prefs, + GtkComboBox *combo_box) { - gint locked, days, hist = 0, i; - GtkWidget *menu, *item; + gint days, hist = 0, ii; + GtkTreeModel *model; - days = gconf_client_get_int(prefs->gconf, "/apps/evolution/mail/trash/empty_on_exit_days", NULL); - menu = gtk_menu_new(); - for (i = 0; i < G_N_ELEMENTS (empty_trash_frequency); i++) { - if (days >= empty_trash_frequency[i].days) - hist = i; + days = gconf_client_get_int ( + prefs->gconf, + "/apps/evolution/mail/trash/empty_on_exit_days", NULL); - item = gtk_menu_item_new_with_label (_(empty_trash_frequency[i].label)); - g_object_set_data ((GObject *) item, "days", GINT_TO_POINTER (empty_trash_frequency[i].days)); - g_signal_connect (item, "activate", G_CALLBACK (trash_days_activate), prefs); + model = gtk_combo_box_get_model (combo_box); + gtk_list_store_clear (GTK_LIST_STORE (model)); - gtk_widget_show (item); - gtk_menu_shell_append((GtkMenuShell *)menu, item); + for (ii = 0; ii < G_N_ELEMENTS (empty_trash_frequency); ii++) { + if (days >= empty_trash_frequency[ii].days) + hist = ii; + gtk_combo_box_append_text ( + combo_box, gettext (empty_trash_frequency[ii].label)); } - gtk_widget_show(menu); - gtk_option_menu_set_menu((GtkOptionMenu *)prefs->empty_trash_days, menu); - gtk_option_menu_set_history((GtkOptionMenu *)prefs->empty_trash_days, hist); + g_signal_connect ( + combo_box, "changed", + G_CALLBACK (trash_days_changed), prefs); - locked = !gconf_client_key_is_writable (prefs->gconf, "/apps/evolution/mail/trash/empty_on_exit_days", NULL); - gtk_widget_set_sensitive ((GtkWidget *) prefs->empty_trash_days, !locked); + gtk_combo_box_set_active (combo_box, hist); } static void -junk_days_activate (GtkWidget *item, EMMailerPrefs *prefs) +junk_days_changed (GtkComboBox *combo_box, + EMMailerPrefs *prefs) { - gint days; + gint index; + + index = gtk_combo_box_get_active (combo_box); + g_return_if_fail (index >= 0); + g_return_if_fail (index < G_N_ELEMENTS (empty_trash_frequency)); - days = GPOINTER_TO_INT (g_object_get_data ((GObject *) item, "days")); - gconf_client_set_int (prefs->gconf, "/apps/evolution/mail/junk/empty_on_exit_days", days, NULL); + gconf_client_set_int ( + prefs->gconf, + "/apps/evolution/mail/junk/empty_on_exit_days", + empty_trash_frequency[index].days, NULL); } static void -emmp_empty_junk_init (EMMailerPrefs *prefs) +emmp_empty_junk_init (EMMailerPrefs *prefs, + GtkComboBox *combo_box) { - gint locked, days, hist = 0, i; - GtkWidget *menu, *item; - - toggle_button_init (prefs, prefs->empty_junk, FALSE, - "/apps/evolution/mail/junk/empty_on_exit", - G_CALLBACK (toggle_button_toggled)); + gint days, hist = 0, ii; + GtkTreeModel *model; - days = gconf_client_get_int(prefs->gconf, "/apps/evolution/mail/junk/empty_on_exit_days", NULL); - menu = gtk_menu_new(); - for (i = 0; i < G_N_ELEMENTS (empty_trash_frequency); i++) { - if (days >= empty_trash_frequency[i].days) - hist = i; + days = gconf_client_get_int ( + prefs->gconf, + "/apps/evolution/mail/junk/empty_on_exit_days", NULL); - item = gtk_menu_item_new_with_label (_(empty_trash_frequency[i].label)); - g_object_set_data ((GObject *) item, "days", GINT_TO_POINTER (empty_trash_frequency[i].days)); - g_signal_connect (item, "activate", G_CALLBACK (junk_days_activate), prefs); + model = gtk_combo_box_get_model (combo_box); + gtk_list_store_clear (GTK_LIST_STORE (model)); - gtk_widget_show (item); - gtk_menu_shell_append((GtkMenuShell *)menu, item); + for (ii = 0; ii < G_N_ELEMENTS (empty_trash_frequency); ii++) { + if (days >= empty_trash_frequency[ii].days) + hist = ii; + gtk_combo_box_append_text ( + combo_box, gettext (empty_trash_frequency[ii].label)); } - gtk_widget_show(menu); - gtk_option_menu_set_menu((GtkOptionMenu *)prefs->empty_junk_days, menu); - gtk_option_menu_set_history((GtkOptionMenu *)prefs->empty_junk_days, hist); + g_signal_connect ( + combo_box, "changed", + G_CALLBACK (junk_days_changed), prefs); - locked = !gconf_client_key_is_writable (prefs->gconf, "/apps/evolution/mail/junk/empty_on_exit_days", NULL); - gtk_widget_set_sensitive ((GtkWidget *) prefs->empty_junk_days, !locked); + gtk_combo_box_set_active (combo_box, hist); } static void @@ -961,11 +971,11 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs, G_OBJECT (shell_settings), "mail-empty-trash-on-exit", G_OBJECT (widget), "active"); - prefs->empty_trash_days = GTK_OPTION_MENU (glade_xml_get_widget (gui, "omenuEmptyTrashDays")); + widget = glade_xml_get_widget (gui, "comboboxEmptyTrashDays"); e_mutual_binding_new ( G_OBJECT (shell_settings), "mail-empty-trash-on-exit", - G_OBJECT (prefs->empty_trash_days), "sensitive"); - emmp_empty_trash_init (prefs); + G_OBJECT (widget), "sensitive"); + emmp_empty_trash_init (prefs, GTK_COMBO_BOX (widget)); widget = glade_xml_get_widget (gui, "chkConfirmExpunge"); e_mutual_binding_new ( @@ -1164,9 +1174,16 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs, G_OBJECT (shell_settings), "mail-check-for-junk", G_OBJECT (widget), "active"); - prefs->empty_junk = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "junk_empty_check")); - prefs->empty_junk_days = GTK_OPTION_MENU (glade_xml_get_widget (gui, "junk_empty_combo")); - emmp_empty_junk_init (prefs); + widget = glade_xml_get_widget (gui, "junk_empty_check"); + e_mutual_binding_new ( + G_OBJECT (shell_settings), "mail-empty-junk-on-exit", + G_OBJECT (widget), "active"); + + widget = glade_xml_get_widget (gui, "junk_empty_combobox"); + e_mutual_binding_new ( + G_OBJECT (shell_settings), "mail-empty-junk-on-exit", + G_OBJECT (widget), "sensitive"); + emmp_empty_junk_init (prefs, GTK_COMBO_BOX (widget)); prefs->default_junk_plugin = GTK_COMBO_BOX (glade_xml_get_widget (gui, "default_junk_plugin")); prefs->plugin_status = GTK_LABEL (glade_xml_get_widget (gui, "plugin_status")); diff --git a/modules/mail/em-mailer-prefs.h b/modules/mail/em-mailer-prefs.h index b33e620392..e35c2085ab 100644 --- a/modules/mail/em-mailer-prefs.h +++ b/modules/mail/em-mailer-prefs.h @@ -71,11 +71,6 @@ struct _EMMailerPrefs { GtkSpinButton *timeout; GtkOptionMenu *charset; - /* Deleting Mail */ - GtkToggleButton *empty_trash; - GtkComboBox *empty_trash_days; - GtkToggleButton *confirm_expunge; - /* HTML Mail tab */ GtkFontButton *font_variable; GtkFontButton *font_fixed; @@ -103,10 +98,6 @@ struct _EMMailerPrefs { GtkTreeView *header_list; GtkListStore *header_list_store; - /* Junk prefs */ - GtkToggleButton *empty_junk; - GtkComboBox *empty_junk_days; - GtkToggleButton *sa_local_tests_only; GtkToggleButton *sa_use_daemon; GtkComboBox *default_junk_plugin; diff --git a/plugins/bbdb/bbdb.c b/plugins/bbdb/bbdb.c index bb11ab9c6d..964be67565 100644 --- a/plugins/bbdb/bbdb.c +++ b/plugins/bbdb/bbdb.c @@ -51,8 +51,8 @@ struct bbdb_stuff { EMConfigTargetPrefs *target; ESourceList *source_list; - GtkWidget *option_menu; - GtkWidget *gaim_option_menu; + GtkWidget *combo_box; + GtkWidget *gaim_combo_box; GtkWidget *check; GtkWidget *check_gaim; }; @@ -63,7 +63,7 @@ static void bbdb_do_it (EBook *book, const gchar *name, const gchar *email); static void add_email_to_contact (EContact *contact, const gchar *email); static void enable_toggled_cb (GtkWidget *widget, gpointer data); static void source_changed_cb (ESourceComboBox *source_combo_box, struct bbdb_stuff *stuff); -static GtkWidget *create_addressbook_option_menu (struct bbdb_stuff *stuff, gint type); +static GtkWidget *create_addressbook_combo_box (struct bbdb_stuff *stuff, gint type); static void cleanup_cb (GObject *o, gpointer data); static ESource * @@ -465,7 +465,7 @@ enable_toggled_cb (GtkWidget *widget, gpointer data) /* Save the new setting to gconf */ gconf_client_set_bool (stuff->target->gconf, GCONF_KEY_ENABLE, active, NULL); - gtk_widget_set_sensitive (stuff->option_menu, active); + gtk_widget_set_sensitive (stuff->combo_box, active); addressbook = gconf_client_get_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK, NULL); @@ -474,7 +474,7 @@ enable_toggled_cb (GtkWidget *widget, gpointer data) GError *error = NULL; selected_source = e_source_combo_box_get_active ( - E_SOURCE_COMBO_BOX (stuff->option_menu)); + E_SOURCE_COMBO_BOX (stuff->combo_box)); if (selected_source != NULL) uri = e_source_get_uri (selected_source); @@ -505,10 +505,10 @@ enable_gaim_toggled_cb (GtkWidget *widget, gpointer data) gconf_client_set_bool (stuff->target->gconf, GCONF_KEY_ENABLE_GAIM, active, NULL); addressbook_gaim = gconf_client_get_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK_GAIM, NULL); - gtk_widget_set_sensitive (stuff->gaim_option_menu, active); + gtk_widget_set_sensitive (stuff->gaim_combo_box, active); if (active && !addressbook_gaim) { selected_source = e_source_combo_box_get_active ( - E_SOURCE_COMBO_BOX (stuff->gaim_option_menu)); + E_SOURCE_COMBO_BOX (stuff->gaim_combo_box)); gconf_client_set_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK_GAIM, e_source_get_uri (selected_source), NULL); } @@ -562,7 +562,7 @@ gaim_source_changed_cb (ESourceComboBox *source_combo_box, } static GtkWidget * -create_addressbook_option_menu (struct bbdb_stuff *stuff, gint type) +create_addressbook_combo_box (struct bbdb_stuff *stuff, gint type) { GtkWidget *combo_box; ESourceList *source_list; @@ -606,8 +606,8 @@ bbdb_page_factory (EPlugin *ep, EConfigHookItemFactoryData *hook_data) GtkWidget *hbox; GtkWidget *inner_vbox; GtkWidget *check; - GtkWidget *option; - GtkWidget *gaim_option; + GtkWidget *combo_box; + GtkWidget *gaim_combo_box; GtkWidget *check_gaim; GtkWidget *label; GtkWidget *gaim_label; @@ -654,12 +654,12 @@ bbdb_page_factory (EPlugin *ep, EConfigHookItemFactoryData *hook_data) label = gtk_label_new (_("Select Address book for Automatic Contacts")); gtk_box_pack_start (GTK_BOX (inner_vbox), label, FALSE, FALSE, 0); - /* Source selection option menu */ - option = create_addressbook_option_menu (stuff, AUTOMATIC_CONTACTS_ADDRESSBOOK); - g_signal_connect (option, "changed", G_CALLBACK (source_changed_cb), stuff); - gtk_widget_set_sensitive (option, gconf_client_get_bool (target->gconf, GCONF_KEY_ENABLE, NULL)); - gtk_box_pack_start (GTK_BOX (inner_vbox), option, FALSE, FALSE, 0); - stuff->option_menu = option; + /* Source selection combo box */ + combo_box = create_addressbook_combo_box (stuff, AUTOMATIC_CONTACTS_ADDRESSBOOK); + g_signal_connect (combo_box, "changed", G_CALLBACK (source_changed_cb), stuff); + gtk_widget_set_sensitive (combo_box, gconf_client_get_bool (target->gconf, GCONF_KEY_ENABLE, NULL)); + gtk_box_pack_start (GTK_BOX (inner_vbox), combo_box, FALSE, FALSE, 0); + stuff->combo_box = combo_box; /* "Instant Messaging Contacts" */ frame = gtk_vbox_new (FALSE, 6); @@ -690,12 +690,12 @@ bbdb_page_factory (EPlugin *ep, EConfigHookItemFactoryData *hook_data) gaim_label = gtk_label_new (_("Select Address book for Pidgin buddy list")); gtk_box_pack_start (GTK_BOX (inner_vbox), gaim_label, FALSE, FALSE, 0); - /* Gaim Source Selection Option Menu */ - gaim_option = create_addressbook_option_menu (stuff, GAIM_ADDRESSBOOK); - g_signal_connect (gaim_option, "changed", G_CALLBACK (gaim_source_changed_cb), stuff); - gtk_widget_set_sensitive (gaim_option, gconf_client_get_bool (target->gconf, GCONF_KEY_ENABLE_GAIM, NULL)); - gtk_box_pack_start (GTK_BOX (inner_vbox), gaim_option, FALSE, FALSE, 0); - stuff->gaim_option_menu = gaim_option; + /* Gaim Source Selection Combo Box */ + gaim_combo_box = create_addressbook_combo_box (stuff, GAIM_ADDRESSBOOK); + g_signal_connect (gaim_combo_box, "changed", G_CALLBACK (gaim_source_changed_cb), stuff); + gtk_widget_set_sensitive (gaim_combo_box, gconf_client_get_bool (target->gconf, GCONF_KEY_ENABLE_GAIM, NULL)); + gtk_box_pack_start (GTK_BOX (inner_vbox), gaim_combo_box, FALSE, FALSE, 0); + stuff->gaim_combo_box = gaim_combo_box; /* Synchronize now button. */ button = gtk_button_new_with_mnemonic (_("Synchronize with _buddy list now")); diff --git a/widgets/misc/e-charset-picker.c b/widgets/misc/e-charset-picker.c index 593df6b651..dedeebd844 100644 --- a/widgets/misc/e-charset-picker.c +++ b/widgets/misc/e-charset-picker.c @@ -107,7 +107,6 @@ static ECharset charsets[] = { { "ISO-8859-1", E_CHARSET_WESTERN_EUROPEAN, NULL }, { "ISO-8859-15", E_CHARSET_WESTERN_EUROPEAN_NEW, NULL }, }; -static const gint num_charsets = sizeof (charsets) / sizeof (charsets[0]); static void select_item (GtkMenuShell *menu_shell, GtkWidget *item) @@ -301,13 +300,13 @@ e_charset_picker_new (const gchar *default_charset) if (!default_charset) default_charset = locale_charset; - for (def = 0; def < num_charsets; def++) { + for (def = 0; def < G_N_ELEMENTS (charsets); def++) { if (!g_ascii_strcasecmp (charsets[def].name, default_charset)) break; } menu = gtk_menu_new (); - for (i = 0; i < num_charsets; i++) { + for (i = 0; i < G_N_ELEMENTS (charsets); i++) { item = add_charset (menu, &charsets[i], FALSE); if (i == def) { activate (item, menu); @@ -318,7 +317,7 @@ e_charset_picker_new (const gchar *default_charset) /* do the Unknown/Other section */ gtk_menu_shell_append (GTK_MENU_SHELL (menu), gtk_menu_item_new ()); - if (def == num_charsets) { + if (def == G_N_ELEMENTS (charsets)) { ECharset other = { NULL, E_CHARSET_UNKNOWN, NULL }; /* Add an entry for @default_charset */ @@ -362,79 +361,6 @@ e_charset_picker_get_charset (GtkWidget *menu) } /** - * e_charset_picker_dialog: - * @title: title for the dialog box - * @prompt: prompt string for the dialog box - * @default_charset: as for e_charset_picker_new() - * @parent: a parent window for the dialog box, or %NULL - * - * This creates a new dialog box with the given @title and @prompt and - * a character set picker menu. It then runs the dialog and returns - * the selected character set, or %NULL if the user clicked "Cancel". - * - * Return value: the selected character set (which must be freed with - * g_free()), or %NULL. - **/ -gchar * -e_charset_picker_dialog (const gchar *title, const gchar *prompt, - const gchar *default_charset, GtkWindow *parent) -{ - GtkDialog *dialog; - GtkWidget *label, *omenu, *picker, *vbox, *hbox; - gchar *charset = NULL; - - dialog = GTK_DIALOG (gtk_dialog_new_with_buttons (title, - parent, - GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OK, GTK_RESPONSE_OK, - NULL)); - - gtk_dialog_set_has_separator (dialog, FALSE); - gtk_dialog_set_default_response (dialog, GTK_RESPONSE_OK); - - vbox = gtk_vbox_new (FALSE, 6); - gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); - gtk_box_pack_start (GTK_BOX (dialog->vbox), vbox, FALSE, FALSE, 0); - gtk_widget_show (vbox); - - label = gtk_label_new (prompt); - gtk_label_set_line_wrap (GTK_LABEL (label), TRUE); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); - gtk_widget_show (label); - - hbox = gtk_hbox_new (FALSE, 12); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - gtk_widget_show (hbox); - - label = gtk_label_new (""); - gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); - gtk_widget_show (label); - - picker = e_charset_picker_new (default_charset); - omenu = gtk_option_menu_new (); - gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), picker); - gtk_box_pack_start (GTK_BOX (hbox), omenu, TRUE, TRUE, 0); - gtk_widget_show (omenu); - - gtk_container_set_border_width (GTK_CONTAINER (dialog->vbox), 0); - gtk_container_set_border_width (GTK_CONTAINER (dialog->action_area), 12); - - gtk_widget_show_all (GTK_WIDGET (dialog)); - - g_object_ref (dialog); - - if (gtk_dialog_run (dialog) == GTK_RESPONSE_OK) - charset = e_charset_picker_get_charset (picker); - - gtk_widget_destroy (GTK_WIDGET (dialog)); - g_object_unref (dialog); - - return charset; -} - -/** * e_charset_add_radio_actions: * @action_group: a #GtkActionGroup * @action_prefix: a prefix for action names, or %NULL diff --git a/widgets/misc/e-charset-picker.h b/widgets/misc/e-charset-picker.h index e399cf788c..16f19e3509 100644 --- a/widgets/misc/e-charset-picker.h +++ b/widgets/misc/e-charset-picker.h @@ -18,8 +18,8 @@ * */ -#ifndef E_CHARSETPICKER_H -#define E_CHARSETPICKER_H +#ifndef E_CHARSET_PICKER_H +#define E_CHARSET_PICKER_H #include <gtk/gtk.h> @@ -27,11 +27,6 @@ G_BEGIN_DECLS GtkWidget * e_charset_picker_new (const gchar *default_charset); gchar * e_charset_picker_get_charset (GtkWidget *picker); -gchar * e_charset_picker_dialog (const gchar *title, - const gchar *prompt, - const gchar *default_charset, - GtkWindow *parent); - GSList * e_charset_add_radio_actions (GtkActionGroup *action_group, const gchar *action_prefix, const gchar *default_charset, @@ -40,4 +35,4 @@ GSList * e_charset_add_radio_actions (GtkActionGroup *action_group, G_END_DECLS -#endif /* E_CHARSETPICKER_H */ +#endif /* E_CHARSET_PICKER_H */ |