diff options
-rwxr-xr-x | plugins/groupwise-send-options/ChangeLog | 13 | ||||
-rw-r--r-- | plugins/groupwise-send-options/send-options.c | 63 |
2 files changed, 57 insertions, 19 deletions
diff --git a/plugins/groupwise-send-options/ChangeLog b/plugins/groupwise-send-options/ChangeLog new file mode 100755 index 0000000000..f005c16cd6 --- /dev/null +++ b/plugins/groupwise-send-options/ChangeLog @@ -0,0 +1,13 @@ +2005-02-03 Chenthill Palanisamy <pchenthill@novell.com> + + * send-options.c: (add_day_to_time), (send_options_commit), + (org_gnome_compose_send_options):Added functions to destroy + the dialog when the composer is destroyed to solve the crash. + Removed the return statement so that the send options gets + added to the composer headers. Made modification in setting + the values for some headers. + Changing the file name from Changelog to ChangeLog. + +2005-01-10 Parthasarathi@novell.com <sparthasarathi@novell.com> + + * initial check in for groupwise send options diff --git a/plugins/groupwise-send-options/send-options.c b/plugins/groupwise-send-options/send-options.c index 4311efd817..7e8d71d610 100644 --- a/plugins/groupwise-send-options/send-options.c +++ b/plugins/groupwise-send-options/send-options.c @@ -39,24 +39,49 @@ #include "widgets/misc/e-send-options.h" -static ESendOptionsDialog * dialog ; +static ESendOptionsDialog * dialog = NULL ; void org_gnome_compose_send_options (EPlugin *ep, EMMenuTargetWidget *t); +static time_t +add_day_to_time (time_t time, int days) +{ + struct tm *tm; + + tm = localtime (&time); + tm->tm_mday += days; + tm->tm_isdst = -1; + + return mktime (tm); +} + +static void +send_options_commit (EMsgComposer *comp, gpointer user_data) +{ + if (!user_data && !E_IS_SENDOPTIONS_DIALOG (user_data)) + return; + + if (dialog) { + g_object_unref (dialog); + dialog = NULL; + } +} + void org_gnome_compose_send_options (EPlugin *ep, EMMenuTargetWidget *t) { struct _EMenuTarget menu = t->target ; EMsgComposer *comp = (struct _EMsgComposer *)menu.widget ; - EAccount *account = NULL ; - char *url, *temp = NULL ; - + EAccount *account = NULL; + char *temp = NULL; + char *url; + char value [100]; + account = e_msg_composer_get_preferred_account (comp) ; url = g_strdup (account->transport->url) ; temp = strstr (url, "groupwise") ; if (!temp) { g_print ("Sorry send options only available for a groupwise account\n") ; - goto done ; } g_free (temp) ; /*disply the send options dialog*/ @@ -67,30 +92,28 @@ org_gnome_compose_send_options (EPlugin *ep, EMMenuTargetWidget *t) e_sendoptions_dialog_run (dialog, menu.widget, E_ITEM_MAIL) ; - return ; - /*General Options*/ - if (dialog->data->gopts->reply_enabled) { if (dialog->data->gopts->reply_convenient) e_msg_composer_add_header (comp, X_REPLY_CONVENIENT ,"1" ) ; else if (dialog->data->gopts->reply_within) { - temp = g_strdup_printf ("%d", dialog->data->gopts->reply_within) ; - e_msg_composer_add_header (comp, X_REPLY_WITHIN , temp) ; - g_free (temp) ; + time_t t; + t = add_day_to_time (time (NULL), dialog->data->gopts->reply_convenient); + strftime (value, 17, "%Y%m%dT%H%M%SZ", gmtime (&t)); + e_msg_composer_add_header (comp, X_REPLY_WITHIN , value) ; } } if (dialog->data->gopts->expiration_enabled) { if (dialog->data->gopts->expire_after != 0) { - temp = g_strdup_printf ("%d", dialog->data->gopts->expire_after) ; - e_msg_composer_add_header (comp, X_EXPIRE_AFTER, temp) ; - g_free (temp) ; + time_t t; + t = add_day_to_time (time (NULL), dialog->data->gopts->expire_after); + strftime (value, 17, "%Y%m%dT%H%M%SZ", gmtime (&t)); + e_msg_composer_add_header (comp, X_EXPIRE_AFTER, value) ; } } if (dialog->data->gopts->delay_enabled) { - - e_msg_composer_add_header (comp, X_DELAY_UNTIL, temp) ; - g_free (temp) ; + strftime (value, 17, "%Y%m%dT%H%M%SZ", gmtime (&dialog->data->gopts->delay_until)); + e_msg_composer_add_header (comp, X_DELAY_UNTIL, value) ; } /*Status Tracking Options*/ @@ -113,7 +136,9 @@ org_gnome_compose_send_options (EPlugin *ep, EMMenuTargetWidget *t) e_msg_composer_add_header (comp, X_RETURN_NOTIFY_DECLINE, temp) ; g_free (temp) ; } -done: - g_free (url) ; + + g_signal_connect (GTK_WIDGET (comp), "destroy", + G_CALLBACK (send_options_commit), dialog); } + |