2005-11-27 [paul] 1.9.100cvs37
[claws.git] / src / prefs_summaries.c
index f6c628ceea9724dbadc9f7f43a43f4b82744dec2..2989b2b72c0eb8ef07d9ad508442e4769654bf24 100644 (file)
@@ -14,7 +14,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  */
 
 #ifdef HAVE_CONFIG_H
@@ -34,6 +34,7 @@
 #include "prefs_common.h"
 #include "prefs_gtk.h"
 #include "prefs_summary_column.h"
+#include "prefs_folder_column.h"
 
 #include "gtk/menu.h"
 #include "gtk/gtkutils.h"
@@ -50,17 +51,16 @@ typedef struct _SummariesPage
        GtkWidget *chkbtn_transhdr;
        GtkWidget *chkbtn_folder_unread;
        GtkWidget *spinbtn_ng_abbrev_len;
-       GtkWidget *chkbtn_swapfrom;
        GtkWidget *chkbtn_useaddrbook;
        GtkWidget *chkbtn_threadsubj;
        GtkWidget *button_datefmt;
        GtkWidget *entry_datefmt;
 
        GtkWidget *checkbtn_always_show_msg;
-       GtkWidget *checkbtn_openunread;
        GtkWidget *checkbtn_mark_as_read_on_newwin;
-       GtkWidget *checkbtn_openinbox;
        GtkWidget *checkbtn_immedexec;
+       GtkWidget *checkbtn_ask_mark_all_read;
+       GtkWidget *optmenu_select_on_entry;
        GtkWidget *optmenu_nextunreadmsgdialog;
 
 } SummariesPage;
@@ -695,27 +695,30 @@ void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
        GtkWidget *label_ng_abbrev;
        GtkWidget *spinbtn_ng_abbrev_len;
        GtkObject *spinbtn_ng_abbrev_len_adj;
-       GtkWidget *frame_summary;
        GtkWidget *vbox2;
-       GtkWidget *chkbtn_swapfrom;
        GtkWidget *chkbtn_useaddrbook;
        GtkWidget *chkbtn_threadsubj;
        GtkWidget *vbox3;
        GtkWidget *label_datefmt;
        GtkWidget *button_datefmt;
        GtkWidget *entry_datefmt;
+       GtkWidget *hbox_dispitem;
+       GtkWidget *frame_dispitem;
        GtkWidget *button_dispitem;
 
+       GtkWidget *vbox4;
+       GtkWidget *hbox2;
        GtkWidget *checkbtn_always_show_msg;
-       GtkWidget *checkbtn_openunread;
        GtkWidget *checkbtn_mark_as_read_on_newwin;
-       GtkWidget *checkbtn_openinbox;
        GtkWidget *checkbtn_immedexec;
+       GtkWidget *checkbtn_ask_mark_all_read;
        GtkTooltips *immedexec_tooltip;
        GtkWidget *label;
        GtkWidget *menu;
        GtkWidget *menuitem;
        GtkWidget *button_keybind;
+       GtkWidget *hbox_select_on_entry;
+       GtkWidget *optmenu_select_on_entry;
        GtkWidget *hbox_nextunreadmsgdialog;
        GtkWidget *optmenu_nextunreadmsgdialog;
 
@@ -734,7 +737,7 @@ void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
        PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
                           _("Display unread number next to folder name"));
 
-       PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
+       PACK_VSPACER(vbox1, vbox2, VSPACING_NARROW_2);
 
        hbox1 = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (hbox1);
@@ -755,35 +758,29 @@ void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
        gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbtn_ng_abbrev_len),
                                     TRUE);
 
-       label_ng_abbrev = gtk_label_new
-               (_("letters"));
+       label_ng_abbrev = gtk_label_new (_("letters"));
        gtk_widget_show (label_ng_abbrev);
        gtk_box_pack_start (GTK_BOX (hbox1), label_ng_abbrev, FALSE, FALSE, 0);
 
        /* ---- Summary ---- */
 
-       PACK_FRAME(vbox1, frame_summary, _("Summary View"));
-
-       vbox2 = gtk_vbox_new (FALSE, 0);
-       gtk_widget_show (vbox2);
-       gtk_container_add (GTK_CONTAINER (frame_summary), vbox2);
-       gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
+       vbox3 = gtk_vbox_new (FALSE, 0);
+       gtk_widget_show (vbox3);
+       gtk_container_add (GTK_CONTAINER (vbox2), vbox3);
+       gtk_container_set_border_width (GTK_CONTAINER (vbox3), 0);
 
        PACK_CHECK_BUTTON
-               (vbox2, chkbtn_swapfrom,
-                _("Display recipient in 'From' column if sender is yourself"));
-       PACK_CHECK_BUTTON
-               (vbox2, chkbtn_useaddrbook,
+               (vbox3, chkbtn_useaddrbook,
                 _("Display sender using address book"));
        PACK_CHECK_BUTTON
-               (vbox2, chkbtn_threadsubj,
+               (vbox3, chkbtn_threadsubj,
                 _("Thread using subject in addition to standard headers"));
 
        PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
 
        hbox1 = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (hbox1);
-       gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, TRUE, 0);
+       gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, TRUE, 0);
 
        label_datefmt = gtk_label_new (_("Date format"));
        gtk_widget_show (label_datefmt);
@@ -802,21 +799,32 @@ void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
 
        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, TRUE, 0);
+       PACK_FRAME(vbox3, frame_dispitem, _("Set displayed columns"));
 
+       hbox_dispitem = gtk_hbox_new (FALSE, 8);
+       gtk_widget_show (hbox_dispitem);
+       gtk_container_add (GTK_CONTAINER (frame_dispitem), hbox_dispitem);
+       gtk_container_set_border_width (GTK_CONTAINER (hbox_dispitem), 8);
+
+       button_dispitem = gtk_button_new_with_label
+               (_(" Folder list... "));
+       gtk_widget_show (button_dispitem);
+       gtk_box_pack_start (GTK_BOX (hbox_dispitem), button_dispitem, FALSE, FALSE, 0);
+       g_signal_connect (G_OBJECT (button_dispitem), "clicked",
+                         G_CALLBACK (prefs_folder_column_open),
+                         NULL);
+       
        button_dispitem = gtk_button_new_with_label
-               (_(" Set displayed items in summary... "));
+               (_(" Message list... "));
        gtk_widget_show (button_dispitem);
-       gtk_box_pack_start (GTK_BOX (hbox1), button_dispitem, FALSE, TRUE, 0);
+       gtk_box_pack_start (GTK_BOX (hbox_dispitem), button_dispitem, FALSE, FALSE, 0);
        g_signal_connect (G_OBJECT (button_dispitem), "clicked",
                          G_CALLBACK (prefs_summary_column_open),
                          NULL);
 
-       vbox2 = gtk_vbox_new (FALSE, 0);
-       gtk_widget_show (vbox2);
-       gtk_box_pack_start (GTK_BOX (vbox1), vbox2, FALSE, FALSE, 0);
+       vbox4 = gtk_vbox_new (FALSE, 0);
+       gtk_widget_show (vbox4);
+       gtk_box_pack_start (GTK_BOX (vbox1), vbox4, FALSE, FALSE, 0);
 
        /* PACK_CHECK_BUTTON (vbox2, checkbtn_emacs,
                           _("Emulate the behavior of mouse operation of\n"
@@ -824,46 +832,60 @@ void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
        gtk_label_set_justify (GTK_LABEL (GTK_BIN (checkbtn_emacs)->child),
                               GTK_JUSTIFY_LEFT);   */
 
-       PACK_CHECK_BUTTON
-               (vbox2, checkbtn_always_show_msg,
-                _("Always open messages in summary when selected"));
-
-       PACK_CHECK_BUTTON
-               (vbox2, checkbtn_openunread,
-                _("Open first unread message when entering a folder"));
-
-       PACK_CHECK_BUTTON
-               (vbox2, checkbtn_mark_as_read_on_newwin,
-                _("Only mark message as read when opened in new window"));
-
-       PACK_CHECK_BUTTON
-               (vbox2, checkbtn_openinbox,
-                _("Go to inbox after receiving new mail"));
-
-       vbox3 = gtk_vbox_new (FALSE, 0);
-       gtk_widget_show (vbox3);
-       gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0);
-
        immedexec_tooltip = gtk_tooltips_new();
 
        PACK_CHECK_BUTTON
-               (vbox3, checkbtn_immedexec,
+               (vbox4, checkbtn_immedexec,
                 _("Execute immediately when moving or deleting messages"));
        gtk_tooltips_set_tip(GTK_TOOLTIPS(immedexec_tooltip), checkbtn_immedexec,
                             _("Messages will be marked until execution"
                               " if this is turned off"),
                             NULL);
 
+       PACK_CHECK_BUTTON
+               (vbox4, checkbtn_ask_mark_all_read,
+                _("Confirm before marking all mails in a folder as read"));
+
+       PACK_CHECK_BUTTON
+               (vbox4, checkbtn_always_show_msg,
+                _("Always open message when selected"));
+
+       PACK_CHECK_BUTTON
+               (vbox4, checkbtn_mark_as_read_on_newwin,
+                _("Only mark message as read when opened in a new window"));
+
        hbox1 = gtk_hbox_new (FALSE, 0);
        gtk_widget_show (hbox1);
-       gtk_box_pack_start (GTK_BOX (vbox3), hbox1, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (vbox4), hbox1, FALSE, FALSE, 0);
+
+       hbox_select_on_entry = gtk_hbox_new (FALSE, 8);
+       gtk_widget_show (hbox_select_on_entry);
+       gtk_box_pack_start (GTK_BOX (vbox1), hbox_select_on_entry, FALSE, FALSE, 0);
+
+       label = gtk_label_new (_("When entering a folder"));
+       gtk_widget_show (label);
+       gtk_box_pack_start (GTK_BOX (hbox_select_on_entry), label, FALSE, FALSE, 8);
 
-       /* Next Unread Message Dialog */
+       optmenu_select_on_entry = gtk_option_menu_new ();
+       gtk_widget_show (optmenu_select_on_entry);
+       gtk_box_pack_start (GTK_BOX (hbox_select_on_entry),
+                           optmenu_select_on_entry, FALSE, FALSE, 8);
+       
+       menu = gtk_menu_new ();
+       MENUITEM_ADD (menu, menuitem, _("Do nothing"), 0);
+       MENUITEM_ADD (menu, menuitem, _("Select first unread (or new) message"),
+                     SELECTONENTRY_UNREAD);
+       MENUITEM_ADD (menu, menuitem, _("Select first new (or unread) message"),
+                     SELECTONENTRY_NEW);
+
+       gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_select_on_entry), menu);
+       
+       /* Next Unread Message Dialog */
        hbox_nextunreadmsgdialog = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (hbox_nextunreadmsgdialog);
        gtk_box_pack_start (GTK_BOX (vbox1), hbox_nextunreadmsgdialog, FALSE, FALSE, 0);
 
-       label = gtk_label_new (_("Show no-unread-message dialog"));
+       label = gtk_label_new (_("Show \"no unread (or new) message\" dialog"));
        gtk_widget_show (label);
        gtk_box_pack_start (GTK_BOX (hbox_nextunreadmsgdialog), label, FALSE, FALSE, 8);
 
@@ -880,13 +902,13 @@ void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
 
        gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_nextunreadmsgdialog), menu);
 
-       hbox1 = gtk_hbox_new (FALSE, 8);
-       gtk_widget_show (hbox1);
-       gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
+       hbox2 = gtk_hbox_new (FALSE, 8);
+       gtk_widget_show (hbox2);
+       gtk_box_pack_start (GTK_BOX (vbox1), hbox2, FALSE, FALSE, 0);
 
        button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
        gtk_widget_show (button_keybind);
-       gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (hbox2), button_keybind, FALSE, FALSE, 0);
        g_signal_connect (G_OBJECT (button_keybind), "clicked",
                          G_CALLBACK (prefs_keybind_select), NULL);
 
@@ -897,8 +919,6 @@ void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
                        prefs_common.trans_hdr);
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(chkbtn_folder_unread),
                        prefs_common.display_folder_unread);
-       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(chkbtn_swapfrom),
-                       prefs_common.swap_from);
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(chkbtn_useaddrbook),
                        prefs_common.use_addr_book);
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(chkbtn_threadsubj),
@@ -910,31 +930,30 @@ void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
 
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_always_show_msg),
                        prefs_common.always_show_msg);
-       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_openunread),
-                       prefs_common.open_unread_on_enter);
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_mark_as_read_on_newwin),
                        prefs_common.mark_as_read_on_new_window);
-       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_openinbox),
-                       prefs_common.open_inbox_on_inc);
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_immedexec),
                        prefs_common.immediate_exec);
+       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_ask_mark_all_read),
+                       prefs_common.ask_mark_all_read);
 
+       gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu_select_on_entry),
+                       prefs_common.select_on_entry);
        gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu_nextunreadmsgdialog),
                        prefs_common.next_unread_msg_dialog);
 
        prefs_summaries->chkbtn_transhdr = chkbtn_transhdr;
        prefs_summaries->chkbtn_folder_unread = chkbtn_folder_unread;
        prefs_summaries->spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
-       prefs_summaries->chkbtn_swapfrom = chkbtn_swapfrom;
        prefs_summaries->chkbtn_useaddrbook = chkbtn_useaddrbook;
        prefs_summaries->chkbtn_threadsubj = chkbtn_threadsubj;
        prefs_summaries->entry_datefmt = entry_datefmt;
 
        prefs_summaries->checkbtn_always_show_msg = checkbtn_always_show_msg;
-       prefs_summaries->checkbtn_openunread = checkbtn_openunread;
        prefs_summaries->checkbtn_mark_as_read_on_newwin = checkbtn_mark_as_read_on_newwin;
-       prefs_summaries->checkbtn_openinbox = checkbtn_openinbox;
        prefs_summaries->checkbtn_immedexec = checkbtn_immedexec;
+       prefs_summaries->checkbtn_ask_mark_all_read = checkbtn_ask_mark_all_read;
+       prefs_summaries->optmenu_select_on_entry = optmenu_select_on_entry;
        prefs_summaries->optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
 
        prefs_summaries->page.widget = vbox1;
@@ -950,8 +969,6 @@ void prefs_summaries_save(PrefsPage *_page)
                        GTK_TOGGLE_BUTTON(page->chkbtn_transhdr));
        prefs_common.display_folder_unread = gtk_toggle_button_get_active(
                        GTK_TOGGLE_BUTTON(page->chkbtn_folder_unread));
-       prefs_common.swap_from = gtk_toggle_button_get_active(
-                       GTK_TOGGLE_BUTTON(page->chkbtn_swapfrom));
        prefs_common.use_addr_book = gtk_toggle_button_get_active(
                        GTK_TOGGLE_BUTTON(page->chkbtn_useaddrbook));
        prefs_common.thread_by_subject = gtk_toggle_button_get_active(
@@ -965,19 +982,23 @@ void prefs_summaries_save(PrefsPage *_page)
 
        prefs_common.always_show_msg = gtk_toggle_button_get_active(
                GTK_TOGGLE_BUTTON(page->checkbtn_always_show_msg));
-       prefs_common.open_unread_on_enter = gtk_toggle_button_get_active(
-               GTK_TOGGLE_BUTTON(page->checkbtn_openunread));
        prefs_common.mark_as_read_on_new_window = gtk_toggle_button_get_active(
                GTK_TOGGLE_BUTTON(page->checkbtn_mark_as_read_on_newwin));
-       prefs_common.open_inbox_on_inc = gtk_toggle_button_get_active(
-               GTK_TOGGLE_BUTTON(page->checkbtn_openinbox));
        prefs_common.immediate_exec = gtk_toggle_button_get_active(
                GTK_TOGGLE_BUTTON(page->checkbtn_immedexec));
+       prefs_common.ask_mark_all_read = gtk_toggle_button_get_active(
+               GTK_TOGGLE_BUTTON(page->checkbtn_ask_mark_all_read));
 
+       menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(page->optmenu_select_on_entry));
+       menuitem = gtk_menu_get_active(GTK_MENU(menu));
+       prefs_common.select_on_entry = GPOINTER_TO_INT
+               (g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
+       
        menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(page->optmenu_nextunreadmsgdialog));
        menuitem = gtk_menu_get_active(GTK_MENU(menu));
        prefs_common.next_unread_msg_dialog = GPOINTER_TO_INT
                (g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
+       main_window_reflect_prefs_all();
 }
 
 static void prefs_summaries_destroy_widget(PrefsPage *_page)