diff options
Diffstat (limited to 'widgets/misc/e-send-options.c')
-rw-r--r-- | widgets/misc/e-send-options.c | 767 |
1 files changed, 0 insertions, 767 deletions
diff --git a/widgets/misc/e-send-options.c b/widgets/misc/e-send-options.c deleted file mode 100644 index d84b8659e4..0000000000 --- a/widgets/misc/e-send-options.c +++ /dev/null @@ -1,767 +0,0 @@ -/* - * Evolution calendar - Main page of the Groupwise send options Dialog - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with the program; if not, see <http://www.gnu.org/licenses/> - * - * - * Authors: - * Chenthill Palanisamy <pchenthill@novell.com> - * - * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) - * - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <string.h> -#include <glib/gi18n.h> -#include <time.h> - -#include "e-util/e-util.h" -#include "e-util/e-util-private.h" - -#include "e-dateedit.h" -#include "e-send-options.h" - -#define E_SEND_OPTIONS_DIALOG_GET_PRIVATE(obj) \ - (G_TYPE_INSTANCE_GET_PRIVATE \ - ((obj), E_TYPE_SEND_OPTIONS_DIALOG, ESendOptionsDialogPrivate)) - -struct _ESendOptionsDialogPrivate { - GtkBuilder *builder; - - gboolean gopts_needed; - gboolean global; - - /* Widgets */ - - GtkWidget *main; - - /* Noteboook to add options page and status tracking page*/ - GtkNotebook *notebook; - - GtkWidget *status; - - /* priority */ - GtkWidget *priority; - - /* Security */ - GtkWidget *security; - - /* Widgets for Reply Requestion options */ - GtkWidget *reply_request; - GtkWidget *reply_convenient; - GtkWidget *reply_within; - GtkWidget *within_days; - - /* Widgets for delay delivery Option */ - GtkWidget *delay_delivery; - GtkWidget *delay_until; - - /* Widgets for Choosing expiration date */ - GtkWidget *expiration; - GtkWidget *expire_after; - - /* Widgets to for tracking information through sent Item */ - GtkWidget *create_sent; - GtkWidget *delivered; - GtkWidget *delivered_opened; - GtkWidget *all_info; - GtkWidget *autodelete; - - /* Widgets for setting the Return Notification */ - GtkWidget *when_opened; - GtkWidget *when_declined; - GtkWidget *when_accepted; - GtkWidget *when_completed; - - /* label widgets */ - GtkWidget *security_label; - GtkWidget *priority_label; - GtkWidget *gopts_label; - GtkWidget *opened_label; - GtkWidget *declined_label; - GtkWidget *accepted_label; - GtkWidget *completed_label; - GtkWidget *until_label; - gchar *help_section; -}; - -static void e_send_options_dialog_finalize (GObject *object); -static void e_send_options_cb (GtkDialog *dialog, gint state, gpointer func_data); - -enum { - SOD_RESPONSE, - LAST_SIGNAL -}; - -static guint signals[LAST_SIGNAL] = {0}; - -G_DEFINE_TYPE ( - ESendOptionsDialog, - e_send_options_dialog, - G_TYPE_OBJECT) - -static void -e_send_options_get_widgets_data (ESendOptionsDialog *sod) -{ - ESendOptionsDialogPrivate *priv; - ESendOptionsGeneral *gopts; - ESendOptionsStatusTracking *sopts; - - priv = sod->priv; - gopts = sod->data->gopts; - sopts = sod->data->sopts; - - gopts->priority = gtk_combo_box_get_active ((GtkComboBox *) priv->priority); - gopts->security = gtk_combo_box_get_active ((GtkComboBox *) priv->security); - - gopts->reply_enabled = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->reply_request)); - gopts->reply_convenient = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->reply_convenient)); - gopts->reply_within = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (priv->within_days)); - - gopts->expiration_enabled = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->expiration)); - gopts->expire_after = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (priv->expire_after)); - gopts->delay_enabled = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->delay_delivery)); - - if (e_date_edit_date_is_valid (E_DATE_EDIT (priv->delay_until)) && - e_date_edit_time_is_valid (E_DATE_EDIT (priv->delay_until))) - gopts->delay_until = e_date_edit_get_time (E_DATE_EDIT (priv->delay_until)); - - sopts->tracking_enabled = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->create_sent)); - - sopts->autodelete = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->autodelete)); - - if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->delivered))) - sopts->track_when = E_DELIVERED; - else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->delivered_opened))) - sopts->track_when = E_DELIVERED_OPENED; - else - sopts->track_when = E_ALL; - - sopts->opened = gtk_combo_box_get_active ((GtkComboBox *) priv->when_opened); - sopts->accepted = gtk_combo_box_get_active ((GtkComboBox *) priv->when_accepted); - sopts->declined = gtk_combo_box_get_active ((GtkComboBox *) priv->when_declined); - sopts->completed = gtk_combo_box_get_active ((GtkComboBox *) priv->when_completed); -} - -static void -e_send_options_fill_widgets_with_data (ESendOptionsDialog *sod) -{ - ESendOptionsDialogPrivate *priv; - ESendOptionsGeneral *gopts; - ESendOptionsStatusTracking *sopts; - time_t tmp; - - priv = sod->priv; - gopts = sod->data->gopts; - sopts = sod->data->sopts; - tmp = time (NULL); - - gtk_combo_box_set_active ((GtkComboBox *) priv->priority, gopts->priority); - gtk_combo_box_set_active ((GtkComboBox *) priv->security, gopts->security); - - if (gopts->reply_enabled) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->reply_request), TRUE); - else - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->reply_request), FALSE); - - if (gopts->reply_convenient) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->reply_convenient), TRUE); - else - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->reply_within), TRUE); - - gtk_spin_button_set_value (GTK_SPIN_BUTTON (priv->within_days), (gdouble) gopts->reply_within); - - if (gopts->expiration_enabled) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->expiration), TRUE); - else - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->expiration), FALSE); - - gtk_spin_button_set_value (GTK_SPIN_BUTTON (priv->expire_after), (gdouble) gopts->expire_after); - - if (gopts->delay_enabled) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->delay_delivery), TRUE); - else - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->delay_delivery), FALSE); - - if (!gopts->delay_until || difftime (gopts->delay_until, tmp) < 0) - e_date_edit_set_time (E_DATE_EDIT (priv->delay_until), 0); - else - e_date_edit_set_time (E_DATE_EDIT (priv->delay_until), gopts->delay_until); - - if (sopts->tracking_enabled) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->create_sent), TRUE); - else - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->create_sent), FALSE); - - if (sopts->autodelete) - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->autodelete), TRUE); - else - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->autodelete), FALSE); - - switch (sopts->track_when) { - case E_DELIVERED: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->delivered), TRUE); - break; - case E_DELIVERED_OPENED: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->delivered_opened), TRUE); - break; - case E_ALL: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->all_info), TRUE); - } - - gtk_combo_box_set_active ((GtkComboBox *) priv->when_opened, sopts->opened); - gtk_combo_box_set_active ((GtkComboBox *) priv->when_declined, sopts->declined); - gtk_combo_box_set_active ((GtkComboBox *) priv->when_accepted, sopts->accepted); - gtk_combo_box_set_active ((GtkComboBox *) priv->when_completed, sopts->completed); -} - -static void -sensitize_widgets (ESendOptionsDialog *sod) -{ - ESendOptionsDialogPrivate *priv; - ESendOptionsGeneral *gopts; - ESendOptionsStatusTracking *sopts; - - priv = sod->priv; - gopts = sod->data->gopts; - sopts = sod->data->sopts; - - if (!gopts->reply_enabled) { - gtk_widget_set_sensitive (priv->reply_convenient, FALSE); - gtk_widget_set_sensitive (priv->reply_within, FALSE); - gtk_widget_set_sensitive (priv->within_days, FALSE); - } - - if (!gopts->expiration_enabled) - gtk_widget_set_sensitive (priv->expire_after, FALSE); - - if (!gopts->delay_enabled) { - gtk_widget_set_sensitive (priv->delay_until, FALSE); - } - - if (!sopts->tracking_enabled) { - gtk_widget_set_sensitive (priv->delivered, FALSE); - gtk_widget_set_sensitive (priv->delivered_opened, FALSE); - gtk_widget_set_sensitive (priv->all_info, FALSE); - gtk_widget_set_sensitive (priv->autodelete, FALSE); - } -} - -static void -expiration_toggled_cb (GtkToggleButton *toggle, - gpointer data) -{ - gboolean active; - ESendOptionsDialog *sod; - ESendOptionsDialogPrivate *priv; - - sod = data; - priv = sod->priv; - - active = gtk_toggle_button_get_active (toggle); - - gtk_widget_set_sensitive (priv->expire_after, active); -} - -static void -reply_request_toggled_cb (GtkToggleButton *toggle, - gpointer data) -{ - gboolean active; - ESendOptionsDialog *sod; - ESendOptionsDialogPrivate *priv; - - sod = data; - priv = sod->priv; - active = gtk_toggle_button_get_active (toggle); - - gtk_widget_set_sensitive (priv->reply_convenient, active); - gtk_widget_set_sensitive (priv->reply_within, active); - gtk_widget_set_sensitive (priv->within_days, active); - -} - -static void -delay_delivery_toggled_cb (GtkToggleButton *toggle, - gpointer data) -{ - gboolean active; - ESendOptionsDialog *sod; - ESendOptionsDialogPrivate *priv; - - sod = data; - priv = sod->priv; - active = gtk_toggle_button_get_active (toggle); - - gtk_widget_set_sensitive (priv->delay_until, active); -} - -static void -sent_item_toggled_cb (GtkToggleButton *toggle, - gpointer data) -{ - gboolean active; - ESendOptionsDialog *sod; - ESendOptionsDialogPrivate *priv; - - sod = data; - priv = sod->priv; - active = gtk_toggle_button_get_active (toggle); - - gtk_widget_set_sensitive (priv->delivered, active); - gtk_widget_set_sensitive (priv->delivered_opened, active); - gtk_widget_set_sensitive (priv->all_info, active); - gtk_widget_set_sensitive (priv->autodelete, active); -} - -static void -delay_until_date_changed_cb (GtkWidget *dedit, - gpointer data) -{ - ESendOptionsDialog *sod; - ESendOptionsDialogPrivate *priv; - time_t tmp, current; - - sod = data; - priv = sod->priv; - - current = time (NULL); - tmp = e_date_edit_get_time (E_DATE_EDIT (priv->delay_until)); - - if ((difftime (tmp, current) < 0) || !e_date_edit_time_is_valid (E_DATE_EDIT (priv->delay_until)) - || !e_date_edit_date_is_valid (E_DATE_EDIT (priv->delay_until))) - e_date_edit_set_time (E_DATE_EDIT (priv->delay_until), 0); - -} -static void -page_changed_cb (GtkNotebook *notebook, - GtkWidget *page, - gint num, - gpointer data) -{ - ESendOptionsDialog *sod = data; - ESendOptionsDialogPrivate *priv = sod->priv; - - e_send_options_get_widgets_data (sod); - if (num > 0) { - GtkWidget *child; - - if (num == 1) { - gtk_widget_hide (priv->accepted_label); - gtk_widget_hide (priv->when_accepted); - gtk_widget_hide (priv->completed_label); - gtk_widget_hide (priv->when_completed); - gtk_widget_set_sensitive (priv->autodelete, TRUE); - sod->data->sopts = sod->data->mopts; - - child = gtk_notebook_get_nth_page (notebook, 1); - if (child != priv->status && (!GTK_IS_BIN (child) || gtk_bin_get_child (GTK_BIN (child)) != priv->status)) - gtk_widget_reparent (priv->status, child); - } else if (num == 2) { - gtk_widget_hide (priv->completed_label); - gtk_widget_hide (priv->when_completed); - gtk_widget_set_sensitive (priv->autodelete, FALSE); - - gtk_widget_show (priv->accepted_label); - gtk_widget_show (priv->when_accepted); - sod->data->sopts = sod->data->copts; - - child = gtk_notebook_get_nth_page (notebook, 2); - if (gtk_bin_get_child (GTK_BIN (child)) != priv->status) - gtk_widget_reparent (priv->status, child); - } else { - gtk_widget_set_sensitive (priv->autodelete, FALSE); - - gtk_widget_show (priv->completed_label); - gtk_widget_show (priv->when_completed); - gtk_widget_show (priv->accepted_label); - gtk_widget_show (priv->when_accepted); - sod->data->sopts = sod->data->topts; - - child = gtk_notebook_get_nth_page (notebook, 3); - if (gtk_bin_get_child (GTK_BIN (child)) != priv->status) - gtk_widget_reparent (priv->status, child); - } - } - e_send_options_fill_widgets_with_data (sod); -} - -static void -init_widgets (ESendOptionsDialog *sod) -{ - ESendOptionsDialogPrivate *priv; - - priv = sod->priv; - - g_signal_connect ( - priv->expiration, "toggled", - G_CALLBACK (expiration_toggled_cb), sod); - g_signal_connect ( - priv->reply_request, "toggled", - G_CALLBACK (reply_request_toggled_cb), sod); - g_signal_connect ( - priv->delay_delivery, "toggled", - G_CALLBACK (delay_delivery_toggled_cb), sod); - g_signal_connect ( - priv->create_sent, "toggled", - G_CALLBACK (sent_item_toggled_cb), sod); - - g_signal_connect ( - priv->main, "response", - G_CALLBACK (e_send_options_cb), sod); - g_signal_connect ( - priv->delay_until, "changed", - G_CALLBACK (delay_until_date_changed_cb), sod); - - if (priv->global) - g_signal_connect ( - priv->notebook, "switch-page", - G_CALLBACK (page_changed_cb), sod); - -} - -static gboolean -get_widgets (ESendOptionsDialog *sod) -{ - ESendOptionsDialogPrivate *priv; - GtkBuilder *builder; - - priv = sod->priv; - builder = sod->priv->builder; - - priv->main = e_builder_get_widget (builder, "send-options-dialog"); - if (!priv->main) - return FALSE; - - priv->priority = e_builder_get_widget (builder, "combo-priority"); - priv->status = e_builder_get_widget (builder, "status-tracking"); - priv->security = e_builder_get_widget (builder, "security-combo"); - priv->notebook = (GtkNotebook *) e_builder_get_widget (builder, "notebook"); - priv->reply_request = e_builder_get_widget (builder, "reply-request-button"); - priv->reply_convenient = e_builder_get_widget (builder, "reply-convinient"); - priv->reply_within = e_builder_get_widget (builder, "reply-within"); - priv->within_days = e_builder_get_widget (builder, "within-days"); - priv->delay_delivery = e_builder_get_widget (builder, "delay-delivery-button"); - priv->delay_until = e_builder_get_widget (builder, "until-date"); - gtk_widget_show (priv->delay_until); - priv->expiration = e_builder_get_widget (builder, "expiration-button"); - priv->expire_after = e_builder_get_widget (builder, "expire-after"); - priv->create_sent = e_builder_get_widget (builder, "create-sent-button"); - priv->delivered = e_builder_get_widget (builder, "delivered"); - priv->delivered_opened = e_builder_get_widget (builder, "delivered-opened"); - priv->all_info = e_builder_get_widget (builder, "all-info"); - priv->autodelete = e_builder_get_widget (builder, "autodelete"); - priv->when_opened = e_builder_get_widget (builder, "open-combo"); - priv->when_declined = e_builder_get_widget (builder, "delete-combo"); - priv->when_accepted = e_builder_get_widget (builder, "accept-combo"); - priv->when_completed = e_builder_get_widget (builder, "complete-combo"); - priv->security_label = e_builder_get_widget (builder, "security-label"); - priv->gopts_label = e_builder_get_widget (builder, "gopts-label"); - priv->priority_label = e_builder_get_widget (builder, "priority-label"); - priv->until_label = e_builder_get_widget (builder, "until-label"); - priv->opened_label = e_builder_get_widget (builder, "opened-label"); - priv->declined_label = e_builder_get_widget (builder, "declined-label"); - priv->accepted_label = e_builder_get_widget (builder, "accepted-label"); - priv->completed_label = e_builder_get_widget (builder, "completed-label"); - - return (priv->priority - && priv->security - && priv->status - && priv->reply_request - && priv->reply_convenient - && priv->reply_within - && priv->within_days - && priv->delay_delivery - && priv->delay_until - && priv->expiration - && priv->expire_after - && priv->create_sent - && priv->delivered - && priv->delivered_opened - && priv->autodelete - && priv->all_info - && priv->when_opened - && priv->when_declined - && priv->when_accepted - && priv->when_completed - && priv->security_label - && priv->priority_label - && priv->opened_label - && priv->gopts_label - && priv->declined_label - && priv->accepted_label - && priv->completed_label); - -} - -static void -setup_widgets (ESendOptionsDialog *sod, - Item_type type) -{ - ESendOptionsDialogPrivate *priv; - - priv = sod->priv; - - if (!priv->gopts_needed) { - gtk_notebook_set_show_tabs (priv->notebook, FALSE); - gtk_notebook_set_current_page (priv->notebook, 1); - gtk_widget_hide (priv->delay_until); - } else - gtk_notebook_set_show_tabs (priv->notebook, TRUE); - - gtk_label_set_mnemonic_widget (GTK_LABEL (priv->priority_label), priv->priority); - gtk_label_set_mnemonic_widget (GTK_LABEL (priv->security_label), priv->security); - gtk_label_set_mnemonic_widget (GTK_LABEL (priv->accepted_label), priv->when_accepted); - gtk_label_set_mnemonic_widget (GTK_LABEL (priv->declined_label), priv->when_declined); - gtk_label_set_mnemonic_widget (GTK_LABEL (priv->opened_label), priv->when_opened); - gtk_label_set_mnemonic_widget (GTK_LABEL (priv->completed_label), priv->when_completed); - gtk_label_set_mnemonic_widget (GTK_LABEL (priv->until_label), priv->delay_until); - - if (priv->global) { - GtkWidget *widget, *page; - - widget = gtk_label_new (_("Mail")); - page = gtk_alignment_new (0.0, 0.0, 0.0, 0.0); - gtk_widget_reparent (priv->status, page); - gtk_notebook_append_page (priv->notebook, page, widget); - gtk_container_child_set (GTK_CONTAINER (priv->notebook), page, "tab-fill", FALSE, "tab-expand", FALSE, NULL); - gtk_widget_show (page); - gtk_widget_show (widget); - - widget = gtk_label_new (_("Calendar")); - page = gtk_alignment_new (0.0, 0.0, 0.0, 0.0); - gtk_notebook_append_page (priv->notebook, page, widget); - gtk_container_child_set (GTK_CONTAINER (priv->notebook), page, "tab-fill", FALSE, "tab-expand", FALSE, NULL); - gtk_widget_show (page); - gtk_widget_show (widget); - - widget = gtk_label_new (_("Task")); - page = gtk_alignment_new (0.0, 0.0, 0.0, 0.0); - gtk_notebook_append_page (priv->notebook, page, widget); - gtk_container_child_set (GTK_CONTAINER (priv->notebook), page, "tab-fill", FALSE, "tab-expand", FALSE, NULL); - gtk_widget_show (page); - gtk_widget_show (widget); - - gtk_notebook_set_show_tabs (priv->notebook, TRUE); - } - - switch (type) { - case E_ITEM_MAIL: - priv->help_section = g_strdup ("groupwise-placeholder"); - gtk_widget_hide (priv->accepted_label); - gtk_widget_hide (priv->when_accepted); - gtk_widget_hide (priv->completed_label); - gtk_widget_hide (priv->when_completed); - gtk_label_set_text_with_mnemonic (GTK_LABEL (priv->declined_label), (_("When de_leted:"))); - break; - case E_ITEM_CALENDAR: - priv->help_section = g_strdup ("groupwise-placeholder"); - gtk_widget_hide (priv->completed_label); - gtk_widget_hide (priv->when_completed); - case E_ITEM_TASK: - priv->help_section = g_strdup ("groupwise-placeholder"); - gtk_widget_hide (priv->security_label); - gtk_widget_hide (priv->security); - gtk_widget_set_sensitive (priv->autodelete, FALSE); - break; - default: - break; - } -} - -ESendOptionsDialog * -e_send_options_dialog_new (void) -{ - ESendOptionsDialog *sod; - - sod = g_object_new (E_TYPE_SEND_OPTIONS_DIALOG, NULL); - - return sod; -} - -void -e_send_options_set_need_general_options (ESendOptionsDialog *sod, - gboolean needed) -{ - g_return_if_fail (E_IS_SEND_OPTIONS_DIALOG (sod)); - - sod->priv->gopts_needed = needed; -} - -gboolean -e_send_options_get_need_general_options (ESendOptionsDialog *sod) -{ - g_return_val_if_fail (E_IS_SEND_OPTIONS_DIALOG (sod), FALSE); - - return sod->priv->gopts_needed; -} - -gboolean -e_send_options_set_global (ESendOptionsDialog *sod, - gboolean set) -{ - g_return_val_if_fail (E_IS_SEND_OPTIONS_DIALOG (sod), FALSE); - - sod->priv->global = set; - - return TRUE; -} - -static void -e_send_options_cb (GtkDialog *dialog, - gint state, - gpointer func_data) -{ - ESendOptionsDialogPrivate *priv; - ESendOptionsDialog *sod; - - sod = func_data; - priv = sod->priv; - - switch (state) { - case GTK_RESPONSE_OK: - e_send_options_get_widgets_data (sod); - case GTK_RESPONSE_CANCEL: - gtk_widget_hide (priv->main); - gtk_widget_destroy (priv->main); - g_object_unref (priv->builder); - break; - case GTK_RESPONSE_HELP: - e_display_help ( - GTK_WINDOW (priv->main), - priv->help_section); - break; - } - - g_signal_emit (func_data, signals[SOD_RESPONSE], 0, state); -} - -gboolean -e_send_options_dialog_run (ESendOptionsDialog *sod, - GtkWidget *parent, - Item_type type) -{ - ESendOptionsDialogPrivate *priv; - GtkWidget *toplevel; - - g_return_val_if_fail (sod != NULL || E_IS_SEND_OPTIONS_DIALOG (sod), FALSE); - - priv = sod->priv; - - /* Make sure our custom widget classes are registered with - * GType before we load the GtkBuilder definition file. */ - E_TYPE_DATE_EDIT; - - priv->builder = gtk_builder_new (); - e_load_ui_builder_definition (priv->builder, "e-send-options.ui"); - - if (!get_widgets (sod)) { - g_object_unref (priv->builder); - g_message (G_STRLOC ": Could not get the Widgets \n"); - return FALSE; - } - - if (priv->global) { - g_free (sod->data->sopts); - sod->data->sopts = sod->data->mopts; - } - - setup_widgets (sod, type); - - toplevel = gtk_widget_get_toplevel (priv->main); - if (parent) - gtk_window_set_transient_for (GTK_WINDOW (toplevel), - GTK_WINDOW (parent)); - - e_send_options_fill_widgets_with_data (sod); - sensitize_widgets (sod); - init_widgets (sod); - gtk_window_set_modal ((GtkWindow *) priv->main, TRUE); - - gtk_widget_show (priv->main); - - return TRUE; -} - -static void -e_send_options_dialog_finalize (GObject *object) -{ - ESendOptionsDialog *sod; - - sod = E_SEND_OPTIONS_DIALOG (object); - - g_free (sod->priv->help_section); - - g_free (sod->data->gopts); - - if (!sod->priv->global) - g_free (sod->data->sopts); - - g_free (sod->data->mopts); - g_free (sod->data->copts); - g_free (sod->data->topts); - g_free (sod->data); - - /* Chain up to parent's finalize() method. */ - G_OBJECT_CLASS (e_send_options_dialog_parent_class)->finalize (object); -} - -/* Object initialization function for the task page */ -static void -e_send_options_dialog_init (ESendOptionsDialog *sod) -{ - ESendOptionsData *new; - - new = g_new0 (ESendOptionsData, 1); - new->gopts = g_new0 (ESendOptionsGeneral, 1); - new->sopts = g_new0 (ESendOptionsStatusTracking, 1); - new->mopts = g_new0 (ESendOptionsStatusTracking, 1); - new->copts = g_new0 (ESendOptionsStatusTracking, 1); - new->topts = g_new0 (ESendOptionsStatusTracking, 1); - - sod->priv = E_SEND_OPTIONS_DIALOG_GET_PRIVATE (sod); - - sod->data = new; - sod->data->initialized = FALSE; - sod->data->gopts->security = 0; - - sod->priv->gopts_needed = TRUE; -} - -/* Class initialization function for the Send Options */ -static void -e_send_options_dialog_class_init (ESendOptionsDialogClass *class) -{ - GObjectClass *object_class; - - g_type_class_add_private (class, sizeof (ESendOptionsDialogPrivate)); - - object_class = G_OBJECT_CLASS (class); - object_class->finalize = e_send_options_dialog_finalize; - - signals[SOD_RESPONSE] = g_signal_new ( - "sod_response", - G_TYPE_FROM_CLASS (class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (ESendOptionsDialogClass, sod_response), - NULL, NULL, - g_cclosure_marshal_VOID__INT, - G_TYPE_NONE, 1, - G_TYPE_INT); - -} |