diff options
Diffstat (limited to 'mail')
-rw-r--r-- | mail/ChangeLog | 9 | ||||
-rw-r--r-- | mail/mail-accounts.c | 57 |
2 files changed, 62 insertions, 4 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index 9f31614d2d..5b0d09697f 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,12 @@ +2003-03-10 Jeffrey Stedfast <fejj@ximian.com> + + * mail-accounts.c (account_able_toggled): New callback function to + handle the checkbox getting toggled. + (mail_accounts_treeview_new): Save the toggle renderer so we can + later connect to it's toggled signal. + (mail_accounts_tab_construct): Connect to the toggle-cell's + toggled signal. Fixes bug #39325. + 2003-03-11 Not Zed <NotZed@Ximian.com> * mail-vfolder.c (vfolder_editor_response): Fix the response code, diff --git a/mail/mail-accounts.c b/mail/mail-accounts.c index 950ff62e9d..f47b6b4da9 100644 --- a/mail/mail-accounts.c +++ b/mail/mail-accounts.c @@ -320,6 +320,47 @@ account_able_clicked (GtkButton *button, gpointer user_data) } static void +account_able_toggled (GtkCellRendererToggle *renderer, char *arg1, gpointer user_data) +{ + MailAccountsTab *prefs = user_data; + GtkTreeSelection *selection; + EAccount *account = NULL; + GtkTreeModel *model; + GtkTreePath *path; + GtkTreeIter iter; + + path = gtk_tree_path_new_from_string (arg1); + model = gtk_tree_view_get_model (prefs->table); + selection = gtk_tree_view_get_selection (prefs->table); + + if (gtk_tree_model_get_iter (model, &iter, path)) { + gtk_tree_model_get (model, &iter, 3, &account, -1); + account->enabled = !account->enabled; + gtk_list_store_set ((GtkListStore *) model, &iter, 0, account->enabled, -1); + + if (gtk_tree_selection_iter_is_selected (selection, &iter)) + gtk_button_set_label (prefs->mail_able, account->enabled ? _("Disable") : _("Enable")); + } + + gtk_tree_path_free (path); + + if (account) { + /* if the account got disabled, remove it from the + folder-tree, otherwise add it to the folder-tree */ + if (account->source->url) { + if (account->enabled) + mail_load_storage_by_uri (prefs->shell, account->source->url, account->name); + else + mail_remove_storage_by_uri (account->source->url); + } + + mail_autoreceive_setup (); + + mail_config_write (); + } +} + +static void account_double_click (GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *column, MailAccountsTab *prefs) { @@ -423,12 +464,16 @@ mail_accounts_treeview_new (char *widget_name, char *string1, char *string2, int GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled), GTK_SHADOW_IN); + renderer = gtk_cell_renderer_toggle_new (); + g_object_set ((GObject *) renderer, "activatable", TRUE, NULL); + model = gtk_list_store_new (4, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); table = gtk_tree_view_new_with_model ((GtkTreeModel *) model); gtk_tree_view_insert_column_with_attributes ((GtkTreeView *) table, -1, _("Enabled"), - gtk_cell_renderer_toggle_new (), - "active", 0, - NULL); + renderer, "active", 0, NULL); + + g_object_set_data ((GObject *) scrolled, "renderer", renderer); + renderer = gtk_cell_renderer_text_new (); gtk_tree_view_insert_column_with_attributes ((GtkTreeView *) table, -1, _("Account name"), renderer, "text", 1, NULL); @@ -440,7 +485,7 @@ mail_accounts_treeview_new (char *widget_name, char *string1, char *string2, int /* FIXME: column auto-resize? */ /* Is this needed? - gtk_tree_view_column_set_alignment(gtk_tree_view_get_column(prefs->table, 0), 1.0);*/ + gtk_tree_view_column_set_alignment (gtk_tree_view_get_column (prefs->table, 0), 1.0);*/ gtk_container_add (GTK_CONTAINER (scrolled), table); @@ -456,6 +501,7 @@ static void mail_accounts_tab_construct (MailAccountsTab *prefs) { GtkWidget *toplevel, *widget; + GtkCellRenderer *renderer; GladeXML *gui; gui = glade_xml_new (EVOLUTION_GLADEDIR "/mail-config.glade", "accounts_tab", NULL); @@ -477,6 +523,9 @@ mail_accounts_tab_construct (MailAccountsTab *prefs) "changed", G_CALLBACK (account_cursor_change), prefs); g_signal_connect (prefs->table, "row-activated", G_CALLBACK (account_double_click), prefs); + renderer = g_object_get_data ((GObject *) widget, "renderer"); + g_signal_connect (renderer, "toggled", G_CALLBACK (account_able_toggled), prefs); + mail_accounts_load (prefs); prefs->mail_add = GTK_BUTTON (glade_xml_get_widget (gui, "cmdAccountAdd")); |