* src/prefs_common.[ch]
authorColin Leroy <colin@colino.net>
Tue, 24 Sep 2002 12:11:27 +0000 (12:11 +0000)
committerColin Leroy <colin@colino.net>
Tue, 24 Sep 2002 12:11:27 +0000 (12:11 +0000)
Add a preference to display send dialog or not
* src/send.c
Display send dialog according to preference

ChangeLog.claws
configure.in
src/prefs_common.c
src/prefs_common.h
src/send.c

index 672a7a0..8fa8e19 100644 (file)
@@ -1,3 +1,10 @@
+2002-09-25 [colin]     0.8.3claws19
+
+       * src/prefs_common.[ch]
+               Add a preference to display send dialog or not
+       * src/send.c
+               Display send dialog according to preference
+
 2002-09-24 [colin]     0.8.3claws18
 
        * src/compose.[ch]
index ae91370..1624894 100644 (file)
@@ -10,7 +10,7 @@ MINOR_VERSION=8
 MICRO_VERSION=3
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=claws18
+EXTRA_VERSION=claws19
 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
 
 dnl set $target
index 493a1a5..f4e39cd 100644 (file)
@@ -216,6 +216,7 @@ static struct Interface {
        GtkWidget *checkbtn_immedexec;
        GtkWidget *checkbtn_addaddrbyclick;
        GtkWidget *optmenu_recvdialog;
+       GtkWidget *optmenu_senddialog;
        GtkWidget *checkbtn_no_recv_err_panel;
        GtkWidget *checkbtn_close_recv_dialog;
        GtkWidget *optmenu_nextunreadmsgdialog;
@@ -263,6 +264,8 @@ static void prefs_common_recv_dialog_newmail_notify_toggle_cb       (GtkWidget *w,
                                                                 gpointer data);
 static void prefs_common_recv_dialog_set_data_from_optmenu(PrefParam *pparam);
 static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam);
+static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam);
+static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam);
 static void prefs_nextunreadmsgdialog_set_data_from_optmenu(PrefParam *pparam);
 static void prefs_nextunreadmsgdialog_set_optmenu(PrefParam *pparam);
 
@@ -745,6 +748,10 @@ static PrefParam param[] = {
         &interface.optmenu_recvdialog,
         prefs_common_recv_dialog_set_data_from_optmenu,
         prefs_common_recv_dialog_set_optmenu},
+       {"send_dialog_mode", "0", &prefs_common.send_dialog_mode, P_ENUM,
+        &interface.optmenu_senddialog,
+        prefs_common_send_dialog_set_data_from_optmenu,
+        prefs_common_send_dialog_set_optmenu},
        {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel,
         P_BOOL, &interface.checkbtn_no_recv_err_panel,
         prefs_set_data_from_toggle, prefs_set_toggle},
@@ -2585,7 +2592,9 @@ static void prefs_interface_create(void)
        GtkWidget *checkbtn_immedexec;
        GtkWidget *hbox1;
        GtkWidget *label;
+       GtkWidget *dialogs_table;
        GtkWidget *optmenu_recvdialog;
+       GtkWidget *optmenu_senddialog;
        GtkWidget *menu;
        GtkWidget *menuitem;
        GtkWidget *checkbtn_no_recv_err_panel;
@@ -2660,18 +2669,41 @@ static void prefs_interface_create(void)
 
        PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW);
 
-       hbox1 = gtk_hbox_new (FALSE, 8);
-       gtk_widget_show (hbox1);
-       gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 0);
+       dialogs_table = gtk_table_new (2, 2, FALSE);
+       gtk_widget_show (dialogs_table);
+       gtk_container_add (GTK_CONTAINER (vbox2), dialogs_table);
+       gtk_container_set_border_width (GTK_CONTAINER (dialogs_table), 8);
+       gtk_table_set_row_spacings (GTK_TABLE (dialogs_table), VSPACING_NARROW);
+       gtk_table_set_col_spacings (GTK_TABLE (dialogs_table), 8);
+
+       label = gtk_label_new (_("Show send dialog"));
+       gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+       gtk_widget_show (label);
+       gtk_table_attach (GTK_TABLE (dialogs_table), label, 0, 1, 0, 1,
+                         GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+
+
+       optmenu_senddialog = gtk_option_menu_new ();
+       gtk_widget_show (optmenu_senddialog);
+       gtk_table_attach (GTK_TABLE (dialogs_table), optmenu_senddialog, 1, 2, 0, 1,
+                         GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+       
+       menu = gtk_menu_new ();
+       MENUITEM_ADD (menu, menuitem, _("Always"), SEND_DIALOG_ALWAYS);
+       MENUITEM_ADD (menu, menuitem, _("Never"), SEND_DIALOG_NEVER);
+
+       gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_senddialog), menu);
 
        label = gtk_label_new (_("Show receive dialog"));
+       gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
        gtk_widget_show (label);
-       gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
+       gtk_table_attach (GTK_TABLE (dialogs_table), label, 0, 1, 1, 2,
+                         GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
        optmenu_recvdialog = gtk_option_menu_new ();
        gtk_widget_show (optmenu_recvdialog);
-       gtk_box_pack_start (GTK_BOX (hbox1), optmenu_recvdialog,
-                           FALSE, FALSE, 0);
+       gtk_table_attach (GTK_TABLE (dialogs_table), optmenu_recvdialog, 1, 2, 1, 2,
+                         GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
        menu = gtk_menu_new ();
        MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
@@ -2781,6 +2813,7 @@ static void prefs_interface_create(void)
        interface.checkbtn_openinbox          = checkbtn_openinbox;
        interface.checkbtn_immedexec          = checkbtn_immedexec;
        interface.optmenu_recvdialog          = optmenu_recvdialog;
+       interface.optmenu_senddialog          = optmenu_senddialog;
        interface.checkbtn_no_recv_err_panel  = checkbtn_no_recv_err_panel;
        interface.checkbtn_close_recv_dialog  = checkbtn_close_recv_dialog;
        interface.checkbtn_addaddrbyclick     = checkbtn_addaddrbyclick;
@@ -4108,6 +4141,40 @@ static void prefs_common_recv_dialog_set_optmenu(PrefParam *pparam)
        gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
 }
 
+static void prefs_common_send_dialog_set_data_from_optmenu(PrefParam *pparam)
+{
+       GtkWidget *menu;
+       GtkWidget *menuitem;
+
+       menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(*pparam->widget));
+       menuitem = gtk_menu_get_active(GTK_MENU(menu));
+       *((SendDialogMode *)pparam->data) = GPOINTER_TO_INT
+               (gtk_object_get_user_data(GTK_OBJECT(menuitem)));
+}
+
+static void prefs_common_send_dialog_set_optmenu(PrefParam *pparam)
+{
+       SendDialogMode mode = *((SendDialogMode *)pparam->data);
+       GtkOptionMenu *optmenu = GTK_OPTION_MENU(*pparam->widget);
+       GtkWidget *menu;
+       GtkWidget *menuitem;
+
+       switch (mode) {
+       case SEND_DIALOG_ALWAYS:
+               gtk_option_menu_set_history(optmenu, 0);
+               break;
+       case SEND_DIALOG_NEVER:
+               gtk_option_menu_set_history(optmenu, 1);
+               break;
+       default:
+               break;
+       }
+
+       menu = gtk_option_menu_get_menu(optmenu);
+       menuitem = gtk_menu_get_active(GTK_MENU(menu));
+       gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
+}
+
 static gint prefs_common_deleted(GtkWidget *widget, GdkEventAny *event,
                                 gpointer data)
 {
index e354ee2..55c270a 100644 (file)
@@ -39,6 +39,12 @@ typedef enum {
        RECV_DIALOG_NEVER
 } RecvDialogMode;
 
+typedef enum {
+       SEND_DIALOG_ALWAYS,
+       /* SEND_DIALOG_ACTIVE would be irrelevant */
+       SEND_DIALOG_NEVER
+} SendDialogMode;
+
 typedef enum
 {
        NEXTUNREADMSGDIALOG_ALWAYS,
@@ -223,6 +229,7 @@ struct _PrefsCommon
        gboolean open_inbox_on_inc;
        gboolean immediate_exec;
        RecvDialogMode recv_dialog_mode;
+       SendDialogMode send_dialog_mode;
        gboolean close_recv_dialog;
        gboolean no_recv_err_panel;
        NextUnreadMsgDialogShow next_unread_msg_dialog;
index 657a0cc..485fc26 100644 (file)
@@ -50,6 +50,7 @@
 #include "procheader.h"
 #include "utils.h"
 #include "gtkutils.h"
+#include "statusbar.h"
 
 typedef struct _SendProgressDialog     SendProgressDialog;
 
@@ -363,7 +364,7 @@ gint send_message_smtp(PrefsAccount *ac_prefs, GSList *to_list,
            && (ac_prefs->protocol == A_APOP || ac_prefs->protocol == A_POP3)
            && (time(NULL) - ac_prefs->last_pop_login_time) > (60 * ac_prefs->pop_before_smtp_timeout)) {
                g_snprintf(buf, sizeof(buf), _("Doing POP before SMTP..."));
-               log_message("%s\n", buf);
+               statusbar_puts_all(buf);
                progress_dialog_set_label(dialog->dialog, buf);
                gtk_clist_set_text(clist, 0, 2, _("POP before SMTP"));
                GTK_EVENTS_FLUSH();
@@ -390,6 +391,7 @@ gint send_message_smtp(PrefsAccount *ac_prefs, GSList *to_list,
 #endif
 
        progress_dialog_set_label(dialog->dialog, _("Sending MAIL FROM..."));
+       statusbar_puts_all(_("Sending MAIL FROM..."));
        gtk_clist_set_text(clist, 0, 2, _("Sending"));
        GTK_EVENTS_FLUSH();
 
@@ -399,6 +401,7 @@ gint send_message_smtp(PrefsAccount *ac_prefs, GSList *to_list,
                 "sending MAIL FROM");
 
        progress_dialog_set_label(dialog->dialog, _("Sending RCPT TO..."));
+       statusbar_puts_all(_("Sending RCPT TO..."));
        GTK_EVENTS_FLUSH();
 
        for (cur = to_list; cur != NULL; cur = cur->next)
@@ -406,6 +409,7 @@ gint send_message_smtp(PrefsAccount *ac_prefs, GSList *to_list,
                                   "sending RCPT TO");
 
        progress_dialog_set_label(dialog->dialog, _("Sending DATA..."));
+       statusbar_puts_all(_("Sending DATA..."));
        GTK_EVENTS_FLUSH();
 
        SEND_EXIT_IF_NOTOK(smtp_data(session->sock), "sending DATA");
@@ -416,11 +420,14 @@ gint send_message_smtp(PrefsAccount *ac_prefs, GSList *to_list,
                 "sending data");
 
        progress_dialog_set_label(dialog->dialog, _("Quitting..."));
+       statusbar_puts_all(_("Quitting..."));
        GTK_EVENTS_FLUSH();
 
        SEND_EXIT_IF_NOTOK(smtp_eom(session->sock), "terminating data");
        SEND_EXIT_IF_NOTOK(smtp_quit(session->sock), "sending QUIT");
 
+       statusbar_pop_all();
+
        session_destroy(session);
        send_progress_dialog_destroy(dialog);
 
@@ -451,6 +458,7 @@ gint send_message_smtp(PrefsAccount *ac_prefs, GSList *to_list,
                           _("Sending message (%d / %d bytes)"), \
                           bytes, size); \
                progress_dialog_set_label(dialog->dialog, str); \
+               statusbar_puts_all(str); \
                progress_dialog_set_percentage \
                        (dialog->dialog, (gfloat)bytes / (gfloat)size); \
                GTK_EVENTS_FLUSH(); \
@@ -545,8 +553,10 @@ static SendProgressDialog *send_progress_dialog_create(void)
 
        progress_dialog_set_value(progress, 0.0);
 
-       gtk_widget_show_now(progress->window);
-
+       if (prefs_common.send_dialog_mode == SEND_DIALOG_ALWAYS) {
+               gtk_widget_show_now(progress->window);
+       }
+       
        dialog->dialog = progress;
        dialog->queue_list = NULL;
        dialog->cancelled = FALSE;
@@ -557,8 +567,9 @@ static SendProgressDialog *send_progress_dialog_create(void)
 static void send_progress_dialog_destroy(SendProgressDialog *dialog)
 {
        g_return_if_fail(dialog != NULL);
-
-       progress_dialog_destroy(dialog->dialog);
+       if (prefs_common.send_dialog_mode == SEND_DIALOG_ALWAYS) {
+               progress_dialog_destroy(dialog->dialog);
+       }
        g_free(dialog);
 }