diff options
-rw-r--r-- | mail/ChangeLog | 72 | ||||
-rw-r--r-- | mail/mail-accounts.c | 70 | ||||
-rw-r--r-- | mail/mail-accounts.h | 10 | ||||
-rw-r--r-- | mail/mail-config.c | 42 | ||||
-rw-r--r-- | mail/mail-config.glade | 105 | ||||
-rw-r--r-- | mail/mail-config.h | 5 | ||||
-rw-r--r-- | mail/mail-ops.c | 134 | ||||
-rw-r--r-- | mail/mail-session.c | 13 | ||||
-rw-r--r-- | mail/subscribe-dialog.c | 8 | ||||
-rw-r--r-- | mail/subscribe-dialog.h | 2 |
10 files changed, 319 insertions, 142 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index 2ce5672e61..46a0ab8fd0 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,39 +1,67 @@ +2001-08-07 Jeffrey Stedfast <fejj@ximian.com> + + * subscribe-dialog.c (subscribe_dialog_new): This should return a + GtkWidget not a GtkObject. + + * mail-session.c (get_filter_driver): Update to use user's logging + preferences. + + * mail-accounts.c (filter_log_toggled): New. + (filter_log_path_changed): New. + (construct): Get and attach signals to the filter logging option + widgets. + + * mail-config.c (config_read): Read in filter logging options. + (mail_config_write_on_exit): Save filter logging options. + (mail_config_set_filter_log_path): Implemented. + (mail_config_get_filter_log_path): Implemented. + (mail_config_set_filter_log): Implemented. + (mail_config_get_filter_log): Implemented. + 2001-08-07 Peter Williams <peterw@ximian.com> - * mail-callbacks.c (folder_created): Use bonobo_object_unref on the storage - since it's a bonobo object. + * subscribe-dialog.c (folder_etree_construct): Move + fe_create_root_node farther down, so we can check for its children + without problems. + + * mail-callbacks.c (folder_created): Use bonobo_object_unref on + the storage since it's a bonobo object. (mail_storage_create_folder): Same. (folder_deleted): Same. - * subscribe-dialog.c (fe_destroy): Unref the e_storage since lookup_store - gives us a ref. + * subscribe-dialog.c (fe_destroy): Unref the e_storage since + lookup_store gives us a ref. 2001-08-07 Peter Williams <peterw@ximian.com> - * subscribe-dialog.c (folder_etree_construct): Move fe_create_root_node - farther down, so we can check for its children without problems. + * subscribe-dialog.c (folder_etree_construct): Move + fe_create_root_node farther down, so we can check for its children + without problems. (storage_tree_path): Removed, this was broken. - (subscribe_get_short_folderinfo): Use the queued thread instead of the - new thread. + (subscribe_get_short_folderinfo): Use the queued thread instead of + the new thread. (subscribe_do_subscribe_folder): Same. - (ftree_node_new_root): Don't create the path anymore; it was broken - and there's a better way to get it now. + (ftree_node_new_root): Don't create the path anymore; it was + broken and there's a better way to get it now. (fe_got_children): Remove some debugging output. (fe_check_for_children): Here too. - (fe_done_subscribing): Get the path from the URI instead of the ftree_node. - (_SubscribeDialogPrivate): Add all of our useful widgets as members. - (sc_refresh_pressed): Don't clear the search... that makes no sense now. - (sc_search_activated): Don't set the filter radio button as active now; - we use sensitivity instead. + (fe_done_subscribing): Get the path from the URI instead of the + ftree_node. + (_SubscribeDialogPrivate): Add all of our useful widgets as + members. + (sc_refresh_pressed): Don't clear the search... that makes no + sense now. + (sc_search_activated): Don't set the filter radio button as active + now; we use sensitivity instead. (sc_all_toggled): Make the search entry insensitive. (sc_filter_toggled): Make the search entry sensitive. - (kill_default_view): New function. Gets rid of the default view stuff and - makes all the widgetry sensitive. - (menu_item_selected): Check if we moved off of the default view and, if so, - call kill_default_view(). - (subscribe_dialog_construct): Initialize our new private widget members, and - by default insensitize most of the buttons because they make no sense in the - default view. + (kill_default_view): New function. Gets rid of the default view + stuff and makes all the widgetry sensitive. + (menu_item_selected): Check if we moved off of the default view + and, if so, call kill_default_view(). + (subscribe_dialog_construct): Initialize our new private widget + members, and by default insensitize most of the buttons because + they make no sense in the default view. 2001-08-06 Jeffrey Stedfast <fejj@ximian.com> diff --git a/mail/mail-accounts.c b/mail/mail-accounts.c index a35ec7586b..605b7e2eb9 100644 --- a/mail/mail-accounts.c +++ b/mail/mail-accounts.c @@ -636,6 +636,16 @@ pgp_path_changed (GtkEntry *entry, gpointer data) } static void +filter_log_path_changed (GtkEntry *entry, gpointer data) +{ + const char *path; + + path = gtk_entry_get_text (entry); + + mail_config_set_filter_log_path (path && *path ? path : NULL); +} + +static void set_color (GnomeColorPicker *cp) { guint32 rgb = mail_config_get_citation_color (); @@ -693,6 +703,12 @@ show_preview_toggled (GtkWidget *toggle, gpointer data) } static void +filter_log_toggled (GtkWidget *toggle, gpointer data) +{ + mail_config_set_filter_log (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (toggle))); +} + +static void forward_style_activated (GtkWidget *item, gpointer data) { int style = GPOINTER_TO_INT (data); @@ -796,12 +812,12 @@ construct (MailAccountsDialog *dialog) set_color (dialog->citation_color); gtk_signal_connect (GTK_OBJECT (dialog->citation_color), "color_set", GTK_SIGNAL_FUNC (citation_color_set), dialog); - + dialog->timeout_toggle = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "checkMarkTimeout")); gtk_toggle_button_set_active (dialog->timeout_toggle, mail_config_get_do_seen_timeout ()); gtk_signal_connect (GTK_OBJECT (dialog->timeout_toggle), "toggled", GTK_SIGNAL_FUNC (timeout_toggled), dialog); - + dialog->timeout = GTK_SPIN_BUTTON (glade_xml_get_widget (gui, "spinMarkTimeout")); gtk_spin_button_set_value (dialog->timeout, (1.0 * mail_config_get_mark_as_seen_timeout ()) / 1000.0); gtk_signal_connect (GTK_OBJECT (dialog->timeout), "changed", @@ -820,6 +836,16 @@ construct (MailAccountsDialog *dialog) gtk_signal_connect (GTK_OBJECT (dialog->images_always), "toggled", GTK_SIGNAL_FUNC (images_radio_toggled), dialog); + dialog->thread_list = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkThreadedList")); + gtk_toggle_button_set_active (dialog->thread_list, mail_config_get_thread_list (NULL)); + gtk_signal_connect (GTK_OBJECT (dialog->thread_list), "toggled", + GTK_SIGNAL_FUNC (thread_list_toggled), dialog); + + dialog->show_preview = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkShowPreview")); + gtk_toggle_button_set_active (dialog->show_preview, mail_config_get_show_preview (NULL)); + gtk_signal_connect (GTK_OBJECT (dialog->show_preview), "toggled", + GTK_SIGNAL_FUNC (show_preview_toggled), dialog); + /* Composer page */ dialog->send_html = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkSendHTML")); gtk_toggle_button_set_active (dialog->send_html, mail_config_get_send_html ()); @@ -833,6 +859,16 @@ construct (MailAccountsDialog *dialog) gtk_container_foreach (GTK_CONTAINER (gtk_option_menu_get_menu (dialog->forward_style)), attach_forward_style_signal, &num); + dialog->prompt_empty_subject = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkPromptEmptySubject")); + gtk_toggle_button_set_active (dialog->prompt_empty_subject, mail_config_get_prompt_empty_subject ()); + gtk_signal_connect (GTK_OBJECT (dialog->prompt_empty_subject), "toggled", + GTK_SIGNAL_FUNC (prompt_empty_subject_toggled), dialog); + + dialog->prompt_bcc_only = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkPromptBccOnly")); + gtk_toggle_button_set_active (dialog->prompt_bcc_only, mail_config_get_prompt_only_bcc ()); + gtk_signal_connect (GTK_OBJECT (dialog->prompt_bcc_only), "toggled", + GTK_SIGNAL_FUNC (prompt_bcc_only_toggled), dialog); + /* Other page */ dialog->pgp_path = GNOME_FILE_ENTRY (glade_xml_get_widget (gui, "filePgpPath")); gtk_entry_set_text (GTK_ENTRY (gnome_file_entry_gtk_entry (dialog->pgp_path)), @@ -857,25 +893,17 @@ construct (MailAccountsDialog *dialog) gtk_signal_connect (GTK_OBJECT (dialog->empty_trash), "toggled", GTK_SIGNAL_FUNC (empty_trash_toggled), dialog); - dialog->prompt_empty_subject = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkPromptEmptySubject")); - gtk_toggle_button_set_active (dialog->prompt_empty_subject, mail_config_get_prompt_empty_subject ()); - gtk_signal_connect (GTK_OBJECT (dialog->prompt_empty_subject), "toggled", - GTK_SIGNAL_FUNC (prompt_empty_subject_toggled), dialog); - - dialog->prompt_bcc_only = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkPromptBccOnly")); - gtk_toggle_button_set_active (dialog->prompt_bcc_only, mail_config_get_prompt_only_bcc ()); - gtk_signal_connect (GTK_OBJECT (dialog->prompt_bcc_only), "toggled", - GTK_SIGNAL_FUNC (prompt_bcc_only_toggled), dialog); - - dialog->thread_list = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkThreadedList")); - gtk_toggle_button_set_active (dialog->thread_list, mail_config_get_thread_list (NULL)); - gtk_signal_connect (GTK_OBJECT (dialog->thread_list), "toggled", - GTK_SIGNAL_FUNC (thread_list_toggled), dialog); - - dialog->show_preview = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkShowPreview")); - gtk_toggle_button_set_active (dialog->show_preview, mail_config_get_show_preview (NULL)); - gtk_signal_connect (GTK_OBJECT (dialog->show_preview), "toggled", - GTK_SIGNAL_FUNC (show_preview_toggled), dialog); + dialog->filter_log = GTK_TOGGLE_BUTTON (glade_xml_get_widget (gui, "chkFilterLog")); + gtk_toggle_button_set_active (dialog->filter_log, mail_config_get_filter_log ()); + gtk_signal_connect (GTK_OBJECT (dialog->filter_log), "toggled", + GTK_SIGNAL_FUNC (filter_log_toggled), dialog); + + dialog->filter_log_path = GNOME_FILE_ENTRY (glade_xml_get_widget (gui, "fileFilterLog")); + gtk_entry_set_text (GTK_ENTRY (gnome_file_entry_gtk_entry (dialog->filter_log_path)), + mail_config_get_filter_log_path ()); + gnome_file_entry_set_default_path (dialog->filter_log_path, mail_config_get_filter_log_path ()); + gtk_signal_connect (GTK_OBJECT (gnome_file_entry_gtk_entry (dialog->filter_log_path)), + "changed", GTK_SIGNAL_FUNC (filter_log_path_changed), dialog); /* now to fill in the clists */ dialog->accounts_row = -1; diff --git a/mail/mail-accounts.h b/mail/mail-accounts.h index 227a887010..0db2acb3b8 100644 --- a/mail/mail-accounts.h +++ b/mail/mail-accounts.h @@ -78,18 +78,20 @@ struct _MailAccountsDialog { GtkToggleButton *timeout_toggle; GtkSpinButton *timeout; GtkToggleButton *images_always, *images_sometimes, *images_never; + GtkToggleButton *thread_list; + GtkToggleButton *show_preview; /* Composer page */ GtkToggleButton *send_html; GtkOptionMenu *forward_style; GtkOptionMenu *charset; + GtkToggleButton *prompt_empty_subject; + GtkToggleButton *prompt_bcc_only; /* Other page */ GtkToggleButton *empty_trash; - GtkToggleButton *prompt_empty_subject; - GtkToggleButton *prompt_bcc_only; - GtkToggleButton *thread_list; - GtkToggleButton *show_preview; + GtkToggleButton *filter_log; + GnomeFileEntry *filter_log_path; /* PGP page */ GnomeFileEntry *pgp_path; diff --git a/mail/mail-config.c b/mail/mail-config.c index fae3a8a0d0..40d0fc8cbc 100644 --- a/mail/mail-config.c +++ b/mail/mail-config.c @@ -85,6 +85,9 @@ typedef struct { GHashTable *threaded_hash; GHashTable *preview_hash; + + gboolean filter_log; + char *filter_log_path; } MailConfig; static MailConfig *config = NULL; @@ -551,6 +554,13 @@ config_read (void) /* Trash folders */ config->empty_trash_on_exit = bonobo_config_get_boolean_with_default ( config->db, "/Mail/Trash/empty_on_exit", FALSE, NULL); + + /* Filter logging */ + config->filter_log = bonobo_config_get_boolean_with_default ( + config->db, "/Mail/Filters/log", FALSE, NULL); + + config->filter_log_path = bonobo_config_get_string ( + config->db, "/Mail/Filters/log_path", NULL); } #define bonobo_config_set_string_wrapper(db, path, val, ev) bonobo_config_set_string (db, path, val ? val : "", ev) @@ -811,6 +821,13 @@ mail_config_write_on_exit (void) bonobo_config_set_boolean (config->db, "/Mail/Trash/empty_on_exit", config->empty_trash_on_exit, NULL); + /* Filter logging */ + bonobo_config_set_boolean (config->db, "/Mail/Filters/log", + config->filter_log, NULL); + + bonobo_config_set_string_wrapper (config->db, "/Mail/Filters/log_path", + config->filter_log_path, NULL); + g_hash_table_foreach_remove (config->threaded_hash, hash_save_state, "Threads"); @@ -988,6 +1005,31 @@ mail_config_set_thread_list (const char *uri, gboolean value) } gboolean +mail_config_get_filter_log (void) +{ + return config->filter_log; +} + +void +mail_config_set_filter_log (gboolean value) +{ + config->filter_log = value; +} + +const char * +mail_config_get_filter_log_path (void) +{ + return config->filter_log_path; +} + +void +mail_config_set_filter_log_path (const char *path) +{ + g_free (config->filter_log_path); + config->filter_log_path = g_strdup (path); +} + +gboolean mail_config_get_hide_deleted (void) { return config->hide_deleted; diff --git a/mail/mail-config.glade b/mail/mail-config.glade index 48a78496ed..76fabd40c5 100644 --- a/mail/mail-config.glade +++ b/mail/mail-config.glade @@ -266,13 +266,14 @@ Click "Finish" to save your settings.</text> <widget> <class>GtkLabel</class> <name>management_name_label</name> - <label>Name:</label> + <label>_Name:</label> <justify>GTK_JUSTIFY_CENTER</justify> <wrap>False</wrap> <xalign>0.5</xalign> <yalign>0.5</yalign> <xpad>0</xpad> <ypad>0</ypad> + <default_focus_target>management_name</default_focus_target> <child> <padding>0</padding> <expand>False</expand> @@ -300,7 +301,7 @@ Click "Finish" to save your settings.</text> <class>GtkCheckButton</class> <name>management_default</name> <can_focus>True</can_focus> - <label>Make this my default account</label> + <label>Make this my _default account</label> <active>False</active> <draw_indicator>True</draw_indicator> <child> @@ -389,13 +390,14 @@ Click "Finish" to save your settings.</text> <widget> <class>GtkLabel</class> <name>identity_address_label</name> - <label>Email Address:</label> + <label>_Email Address:</label> <justify>GTK_JUSTIFY_RIGHT</justify> <wrap>False</wrap> <xalign>1</xalign> <yalign>0.5</yalign> <xpad>0</xpad> <ypad>0</ypad> + <default_focus_target>identity_address</default_focus_target> <child> <left_attach>0</left_attach> <right_attach>1</right_attach> @@ -415,13 +417,14 @@ Click "Finish" to save your settings.</text> <widget> <class>GtkLabel</class> <name>identity_full_name_label</name> - <label>Full Name:</label> + <label>_Full Name:</label> <justify>GTK_JUSTIFY_RIGHT</justify> <wrap>False</wrap> <xalign>1</xalign> <yalign>0.5</yalign> <xpad>0</xpad> <ypad>0</ypad> + <default_focus_target>identity_full_name</default_focus_target> <child> <left_attach>0</left_attach> <right_attach>1</right_attach> @@ -501,13 +504,14 @@ Click "Finish" to save your settings.</text> <widget> <class>GtkLabel</class> <name>identity_organization_label</name> - <label>Organization:</label> + <label>_Organization:</label> <justify>GTK_JUSTIFY_RIGHT</justify> <wrap>False</wrap> <xalign>1</xalign> <yalign>0.5</yalign> <xpad>7</xpad> <ypad>0</ypad> + <default_focus_target>identity_organization</default_focus_target> <child> <left_attach>0</left_attach> <right_attach>1</right_attach> @@ -528,7 +532,7 @@ Click "Finish" to save your settings.</text> <class>GtkCheckButton</class> <name>check_html_signature</name> <can_focus>True</can_focus> - <label>HTML Signature:</label> + <label>_HTML Signature:</label> <active>False</active> <draw_indicator>True</draw_indicator> <child> @@ -585,13 +589,14 @@ Click "Finish" to save your settings.</text> <widget> <class>GtkLabel</class> <name>identity_signature_label</name> - <label>Signature file:</label> + <label>_Signature file:</label> <justify>GTK_JUSTIFY_RIGHT</justify> <wrap>False</wrap> <xalign>1</xalign> <yalign>0.5</yalign> <xpad>7</xpad> <ypad>0</ypad> + <default_focus_target>entry_signature</default_focus_target> <child> <left_attach>0</left_attach> <right_attach>1</right_attach> @@ -793,13 +798,14 @@ None <widget> <class>GtkLabel</class> <name>source_host_label</name> - <label>Host:</label> + <label>_Host:</label> <justify>GTK_JUSTIFY_RIGHT</justify> <wrap>False</wrap> <xalign>1</xalign> <yalign>0.5</yalign> <xpad>0</xpad> <ypad>0</ypad> + <default_focus_target>source_host</default_focus_target> <child> <left_attach>0</left_attach> <right_attach>1</right_attach> @@ -819,13 +825,14 @@ None <widget> <class>GtkLabel</class> <name>source_user_label</name> - <label>Username:</label> + <label>_Username:</label> <justify>GTK_JUSTIFY_RIGHT</justify> <wrap>False</wrap> <xalign>1</xalign> <yalign>0.5</yalign> <xpad>0</xpad> <ypad>0</ypad> + <default_focus_target>source_user</default_focus_target> <child> <left_attach>0</left_attach> <right_attach>1</right_attach> @@ -893,13 +900,14 @@ None <widget> <class>GtkLabel</class> <name>source_path_label</name> - <label>Path:</label> + <label>_Path:</label> <justify>GTK_JUSTIFY_RIGHT</justify> <wrap>False</wrap> <xalign>1</xalign> <yalign>0.5</yalign> <xpad>0</xpad> <ypad>0</ypad> + <default_focus_target>source_path</default_focus_target> <child> <left_attach>0</left_attach> <right_attach>1</right_attach> @@ -920,7 +928,7 @@ None <class>GtkCheckButton</class> <name>source_use_ssl</name> <can_focus>True</can_focus> - <label>Use secure connection (SSL)</label> + <label>Use secure connection (_SSL)</label> <active>False</active> <draw_indicator>True</draw_indicator> <child> @@ -1083,7 +1091,7 @@ Kerberos <class>GtkButton</class> <name>source_check_supported</name> <can_focus>True</can_focus> - <label> Check for supported types </label> + <label>_Check for supported types</label> <relief>GTK_RELIEF_NORMAL</relief> </widget> </widget> @@ -1093,7 +1101,7 @@ Kerberos <class>GtkCheckButton</class> <name>source_remember_password</name> <can_focus>True</can_focus> - <label>Remember this password</label> + <label>_Remember this password</label> <active>False</active> <draw_indicator>True</draw_indicator> <child> @@ -1149,7 +1157,7 @@ Kerberos <class>GtkHBox</class> <name>hbox53</name> <homogeneous>False</homogeneous> - <spacing>0</spacing> + <spacing>4</spacing> <child> <padding>0</padding> <expand>False</expand> @@ -1160,7 +1168,7 @@ Kerberos <class>GtkCheckButton</class> <name>extra_auto_check</name> <can_focus>True</can_focus> - <label>Automatically check for new mail every</label> + <label>_Automatically check for new mail every</label> <active>False</active> <draw_indicator>True</draw_indicator> <child> @@ -1336,13 +1344,14 @@ Sendmail <widget> <class>GtkLabel</class> <name>transport_host_label</name> - <label>Host:</label> + <label>_Host:</label> <justify>GTK_JUSTIFY_RIGHT</justify> <wrap>False</wrap> <xalign>1</xalign> <yalign>0.5</yalign> <xpad>0</xpad> <ypad>0</ypad> + <default_focus_target>transport_host</default_focus_target> <child> <left_attach>0</left_attach> <right_attach>1</right_attach> @@ -1388,7 +1397,7 @@ Sendmail <class>GtkCheckButton</class> <name>transport_use_ssl</name> <can_focus>True</can_focus> - <label>Use secure connection (SSL)</label> + <label>Use secure connection (_SSL)</label> <active>False</active> <draw_indicator>True</draw_indicator> <child> @@ -1420,7 +1429,7 @@ Sendmail <class>GtkCheckButton</class> <name>transport_needs_auth</name> <can_focus>True</can_focus> - <label>Server requires authentication</label> + <label>Server requires _authentication</label> <active>False</active> <draw_indicator>True</draw_indicator> <child> @@ -1513,7 +1522,7 @@ Kerberos <class>GtkButton</class> <name>transport_check_supported</name> <can_focus>True</can_focus> - <label> Check for supported types </label> + <label>_Check for supported types</label> <relief>GTK_RELIEF_NORMAL</relief> </widget> </widget> @@ -1533,13 +1542,14 @@ Kerberos <widget> <class>GtkLabel</class> <name>transport_user_label</name> - <label>Username:</label> + <label>_Username:</label> <justify>GTK_JUSTIFY_RIGHT</justify> <wrap>False</wrap> <xalign>1</xalign> <yalign>0.5</yalign> <xpad>0</xpad> <ypad>0</ypad> + <default_focus_target>transport_user</default_focus_target> <child> <padding>0</padding> <expand>False</expand> @@ -1567,7 +1577,7 @@ Kerberos <class>GtkCheckButton</class> <name>transport_remember_password</name> <can_focus>True</can_focus> - <label>Remember this password</label> + <label>_Remember this password</label> <active>False</active> <draw_indicator>True</draw_indicator> <child> @@ -2783,7 +2793,7 @@ Quoted <widget> <class>GtkLabel</class> <name>lblPgpPath</name> - <label>PGP _binary path:</label> + <label>_PGP binary path:</label> <justify>GTK_JUSTIFY_CENTER</justify> <wrap>False</wrap> <xalign>0.5</xalign> @@ -2894,6 +2904,57 @@ Quoted <fill>False</fill> </child> </widget> + + <widget> + <class>GtkHBox</class> + <name>hbox57</name> + <homogeneous>False</homogeneous> + <spacing>0</spacing> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkCheckButton</class> + <name>chkFilterLog</name> + <can_focus>True</can_focus> + <label>_Log filter actions to:</label> + <active>False</active> + <draw_indicator>True</draw_indicator> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + </widget> + + <widget> + <class>GnomeFileEntry</class> + <name>fileFilterLog</name> + <max_saved>10</max_saved> + <title>Select Filter Log file...</title> + <directory>False</directory> + <modal>True</modal> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>True</fill> + </child> + + <widget> + <class>GtkEntry</class> + <child_name>GnomeEntry:entry</child_name> + <name>combo-entry2</name> + <can_focus>True</can_focus> + <editable>True</editable> + <text_visible>True</text_visible> + <text_max_length>0</text_max_length> + <text></text> + </widget> + </widget> + </widget> </widget> <widget> diff --git a/mail/mail-config.h b/mail/mail-config.h index a997802c6d..5f5fd78645 100644 --- a/mail/mail-config.h +++ b/mail/mail-config.h @@ -105,6 +105,11 @@ void mail_config_write_on_exit (void); /* General Accessor functions */ gboolean mail_config_is_configured (void); +gboolean mail_config_get_filter_log (void); +void mail_config_set_filter_log (gboolean value); +const char *mail_config_get_filter_log_path (void); +void mail_config_set_filter_log_path (const char *path); + gboolean mail_config_get_empty_trash_on_exit (void); void mail_config_set_empty_trash_on_exit (gboolean value); diff --git a/mail/mail-ops.c b/mail/mail-ops.c index 0a3ea46293..b3b47d81d7 100644 --- a/mail/mail-ops.c +++ b/mail/mail-ops.c @@ -55,7 +55,7 @@ /* used both for fetching mail, and for filtering mail */ struct _filter_mail_msg { struct _mail_msg msg; - + CamelFolder *source_folder; /* where they come from */ GPtrArray *source_uids; /* uids to copy, or NULL == copy all */ CamelUIDCache *cache; /* UID cache if we are to cache the uids, NULL otherwise */ @@ -134,12 +134,12 @@ filter_folder_filter (struct _mail_msg *mm) } static void -filter_folder_filtered(struct _mail_msg *mm) +filter_folder_filtered (struct _mail_msg *mm) { } static void -filter_folder_free(struct _mail_msg *mm) +filter_folder_free (struct _mail_msg *mm) { struct _filter_mail_msg *m = (struct _filter_mail_msg *)mm; int i; @@ -190,7 +190,7 @@ mail_filter_folder (CamelFolder *source_folder, GPtrArray *uids, m->driver = camel_session_get_filter_driver (session, type, NULL); - e_thread_put(mail_thread_new, (EMsg *)m); + e_thread_put (mail_thread_new, (EMsg *)m); } /* convenience function for it */ @@ -354,11 +354,11 @@ static struct _mail_msg_op fetch_mail_op = { }; /* ouch, a 'do everything' interface ... */ -void mail_fetch_mail(const char *source, int keep, - const char *type, CamelOperation *cancel, - CamelFilterGetFolderFunc get_folder, void *get_data, - CamelFilterStatusFunc *status, void *status_data, - void (*done)(char *source, void *data), void *data) +void +mail_fetch_mail (const char *source, int keep, const char *type, CamelOperation *cancel, + CamelFilterGetFolderFunc get_folder, void *get_data, + CamelFilterStatusFunc *status, void *status_data, + void (*done)(char *source, void *data), void *data) { struct _fetch_mail_msg *m; struct _filter_mail_msg *fm; @@ -380,7 +380,7 @@ void mail_fetch_mail(const char *source, int keep, if (status) camel_filter_driver_set_status_func (fm->driver, status, status_data); - e_thread_put(mail_thread_new, (EMsg *)m); + e_thread_put (mail_thread_new, (EMsg *)m); } @@ -402,15 +402,15 @@ do_update_subfolders_rec (CamelStore *store, CamelFolderInfo *info, EvolutionSto mail_folder_cache_set_update_estorage (info->url, storage); mail_folder_cache_note_folderinfo (info->url, info); } - - path = g_strdup_printf("%s/%s", prefix, info->name); - + + path = g_strdup_printf ("%s/%s", prefix, info->name); + if (info->child) - do_update_subfolders_rec(store, info->child, storage, path); + do_update_subfolders_rec (store, info->child, storage, path); if (info->sibling) - do_update_subfolders_rec(store, info->sibling, storage, prefix); - - g_free(path); + do_update_subfolders_rec (store, info->sibling, storage, prefix); + + g_free (path); } static void @@ -419,14 +419,14 @@ do_update_subfolders (CamelStore *store, CamelFolderInfo *info, void *data) struct _update_info *uinfo = data; if (uinfo && info) { - do_update_subfolders_rec(store, info, uinfo->storage, ""); + do_update_subfolders_rec (store, info, uinfo->storage, ""); } - + if (uinfo->done) - uinfo->done(store, uinfo->data); - - gtk_object_unref((GtkObject *)uinfo->storage); - g_free(uinfo); + uinfo->done (store, uinfo->data); + + gtk_object_unref ((GtkObject *)uinfo->storage); + g_free (uinfo); } /* this interface is a little icky */ @@ -1153,11 +1153,12 @@ do_scan_subfolders (CamelStore *store, CamelFolderInfo *info, void *data) } /* synchronous function to scan the & and add folders in a store */ -void mail_scan_subfolders(CamelStore *store, EvolutionStorage *storage) +void +mail_scan_subfolders (CamelStore *store, EvolutionStorage *storage) { int id; - - id = mail_get_folderinfo(store, do_scan_subfolders, storage); + + id = mail_get_folderinfo (store, do_scan_subfolders, storage); /*mail_msg_wait(id);*/ } @@ -1168,7 +1169,8 @@ struct _build_data { void *data; }; -static void do_build_attachment(CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, void *data) +static void +do_build_attachment (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, void *data) { struct _build_data *d = data; CamelMultipart *multipart; @@ -1235,37 +1237,41 @@ struct _get_folder_msg { void *data; }; -static char *get_folder_desc(struct _mail_msg *mm, int done) +static char * +get_folder_desc (struct _mail_msg *mm, int done) { struct _get_folder_msg *m = (struct _get_folder_msg *)mm; return g_strdup_printf(_("Opening folder %s"), m->uri); } -static void get_folder_get(struct _mail_msg *mm) +static void +get_folder_get (struct _mail_msg *mm) { struct _get_folder_msg *m = (struct _get_folder_msg *)mm; - - camel_operation_register(mm->cancel); - m->folder = mail_tool_uri_to_folder(m->uri, &mm->ex); - camel_operation_unregister(mm->cancel); + + camel_operation_register (mm->cancel); + m->folder = mail_tool_uri_to_folder (m->uri, &mm->ex); + camel_operation_unregister (mm->cancel); } -static void get_folder_got(struct _mail_msg *mm) +static void +get_folder_got (struct _mail_msg *mm) { struct _get_folder_msg *m = (struct _get_folder_msg *)mm; - + if (m->done) m->done (m->uri, m->folder, m->data); } -static void get_folder_free(struct _mail_msg *mm) +static void +get_folder_free (struct _mail_msg *mm) { struct _get_folder_msg *m = (struct _get_folder_msg *)mm; - - g_free(m->uri); + + g_free (m->uri); if (m->folder) - camel_object_unref((CamelObject *)m->folder); + camel_object_unref (CAMEL_OBJECT (m->folder)); } static struct _mail_msg_op get_folder_op = { @@ -1276,18 +1282,18 @@ static struct _mail_msg_op get_folder_op = { }; int -mail_get_folder(const char *uri, void (*done) (char *uri, CamelFolder *folder, void *data), void *data) +mail_get_folder (const char *uri, void (*done) (char *uri, CamelFolder *folder, void *data), void *data) { struct _get_folder_msg *m; int id; - - m = mail_msg_new(&get_folder_op, NULL, sizeof(*m)); - m->uri = g_strdup(uri); + + m = mail_msg_new (&get_folder_op, NULL, sizeof(*m)); + m->uri = g_strdup (uri); m->data = data; m->done = done; - + id = m->msg.seq; - e_thread_put(mail_thread_new, (EMsg *)m); + e_thread_put (mail_thread_new, (EMsg *)m); return id; } @@ -1302,37 +1308,41 @@ struct _get_store_msg { void *data; }; -static char *get_store_desc(struct _mail_msg *mm, int done) +static char * +get_store_desc (struct _mail_msg *mm, int done) { struct _get_store_msg *m = (struct _get_store_msg *)mm; return g_strdup_printf(_("Opening store %s"), m->uri); } -static void get_store_get(struct _mail_msg *mm) +static void +get_store_get (struct _mail_msg *mm) { struct _get_store_msg *m = (struct _get_store_msg *)mm; - - camel_operation_register(mm->cancel); - m->store = camel_session_get_store(session, m->uri, &mm->ex); - camel_operation_unregister(mm->cancel); + + camel_operation_register (mm->cancel); + m->store = camel_session_get_store (session, m->uri, &mm->ex); + camel_operation_unregister (mm->cancel); } -static void get_store_got(struct _mail_msg *mm) +static void +get_store_got (struct _mail_msg *mm) { struct _get_store_msg *m = (struct _get_store_msg *)mm; if (m->done) - m->done(m->uri, m->store, m->data); + m->done (m->uri, m->store, m->data); } -static void get_store_free(struct _mail_msg *mm) +static void +get_store_free (struct _mail_msg *mm) { struct _get_store_msg *m = (struct _get_store_msg *)mm; - - g_free(m->uri); + + g_free (m->uri); if (m->store) - camel_object_unref((CamelObject *)m->store); + camel_object_unref (CAMEL_OBJECT (m->store)); } static struct _mail_msg_op get_store_op = { @@ -1343,18 +1353,18 @@ static struct _mail_msg_op get_store_op = { }; int -mail_get_store(const char *uri, void (*done) (char *uri, CamelStore *store, void *data), void *data) +mail_get_store (const char *uri, void (*done) (char *uri, CamelStore *store, void *data), void *data) { struct _get_store_msg *m; int id; - m = mail_msg_new(&get_store_op, NULL, sizeof(*m)); - m->uri = g_strdup(uri); + m = mail_msg_new (&get_store_op, NULL, sizeof (*m)); + m->uri = g_strdup (uri); m->data = data; m->done = done; - + id = m->msg.seq; - e_thread_put(mail_thread_new, (EMsg *)m); + e_thread_put (mail_thread_new, (EMsg *)m); return id; } diff --git a/mail/mail-session.c b/mail/mail-session.c index 05b1e79d17..fe56537588 100644 --- a/mail/mail-session.c +++ b/mail/mail-session.c @@ -343,7 +343,7 @@ get_filter_driver (CamelSession *session, const char *type, CamelException *ex) RuleContext *fc; GString *fsearch, *faction; FilterRule *rule = NULL; - char *user, *system, *filename; + char *user, *system; user = g_strdup_printf ("%s/filters.xml", evolution_dir); system = EVOLUTION_DATADIR "/evolution/filtertypes.xml"; @@ -354,14 +354,15 @@ get_filter_driver (CamelSession *session, const char *type, CamelException *ex) driver = camel_filter_driver_new (); camel_filter_driver_set_folder_func (driver, get_folder, NULL); - if (TRUE /* perform_logging FIXME */) { + if (mail_config_get_filter_log ()) { MailSession *ms = (MailSession *)session; if (ms->filter_logfile == NULL) { - filename = g_strdup_printf ("%s/evolution-filter-log", - evolution_dir); - ms->filter_logfile = fopen (filename, "a+"); - g_free (filename); + const char *filename; + + filename = mail_config_get_filter_log_path (); + if (filename) + ms->filter_logfile = fopen (filename, "a+"); } if (ms->filter_logfile) camel_filter_driver_set_logfile (driver, ms->filter_logfile); diff --git a/mail/subscribe-dialog.c b/mail/subscribe-dialog.c index c075bbfa00..4e868e3c6e 100644 --- a/mail/subscribe-dialog.c +++ b/mail/subscribe-dialog.c @@ -1520,15 +1520,15 @@ subscribe_dialog_construct (GtkObject *object) populate_store_list (sc); } -GtkObject * +GtkWidget * subscribe_dialog_new (void) { SubscribeDialog *subscribe_dialog; - + subscribe_dialog = gtk_type_new (SUBSCRIBE_DIALOG_TYPE); subscribe_dialog_construct (GTK_OBJECT (subscribe_dialog)); - - return GTK_OBJECT (subscribe_dialog); + + return GTK_WIDGET (subscribe_dialog); } E_MAKE_TYPE (subscribe_dialog, "SubscribeDialog", SubscribeDialog, subscribe_dialog_class_init, subscribe_dialog_init, PARENT_TYPE); diff --git a/mail/subscribe-dialog.h b/mail/subscribe-dialog.h index 10fa5d9f44..b838f13cc4 100644 --- a/mail/subscribe-dialog.h +++ b/mail/subscribe-dialog.h @@ -54,7 +54,7 @@ typedef struct { } SubscribeDialogClass; GtkType subscribe_dialog_get_type (void); -GtkObject *subscribe_dialog_new (void); +GtkWidget *subscribe_dialog_new (void); void subscribe_dialog_run_and_close (SubscribeDialog *dialog); #endif /* _SUBSCRIBE_DIALOG_H_ */ |