2009-10-17 [paul] 3.7.3cvs1
[claws.git] / src / prefs_receive.c
index 104e8cc9cfb27f1ef0118cc95d824e3dc30eaee8..b7c534fc4bd89d158523e1752130d7dc18ef755b 100644 (file)
@@ -1,10 +1,10 @@
 /*
  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 2005-2007 Colin Leroy <colin@colino.net> & The Claws Mail Team
+ * Copyright (C) 2005-2009 Colin Leroy <colin@colino.net> & The Claws Mail Team
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
  * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
@@ -13,8 +13,8 @@
  * GNU General Public License for more details.
  *
  * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * 
  */
 
 #ifdef HAVE_CONFIG_H
@@ -40,6 +40,7 @@
 #include "gtk/menu.h"
 
 #include "manage_window.h"
+#include "combobox.h"
 
 typedef struct _ReceivePage
 {
@@ -54,17 +55,24 @@ typedef struct _ReceivePage
        GtkWidget *checkbtn_chkonstartup;
        GtkWidget *checkbtn_openinbox;
        GtkWidget *checkbtn_scan_after_inc;
+#ifndef MAEMO
        GtkWidget *checkbtn_newmail_auto;
        GtkWidget *checkbtn_newmail_manu;
        GtkWidget *entry_newmail_notify_cmd;
+       GtkWidget *hbox_newmail_notify;
+#else
+       GtkWidget *checkbtn_maemo_show_led;
+       GtkWidget *checkbtn_maemo_play_sound;
+       GtkWidget *checkbtn_maemo_show_banner;
+#endif
        GtkWidget *optmenu_recvdialog;
        GtkWidget *checkbtn_no_recv_err_panel;
        GtkWidget *checkbtn_close_recv_dialog;
-       GtkWidget *hbox_newmail_notify;
 } ReceivePage;
 
 ReceivePage *prefs_receive;
 
+#ifndef MAEMO
 static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpointer data)
 {
        gboolean toggled;
@@ -75,16 +83,16 @@ static void prefs_common_recv_dialog_newmail_notify_toggle_cb(GtkWidget *w, gpoi
                        (GTK_TOGGLE_BUTTON(prefs_receive->checkbtn_newmail_auto));
        gtk_widget_set_sensitive(prefs_receive->hbox_newmail_notify, toggled);
 }
+#endif
 
 
-void prefs_receive_create_widget(PrefsPage *_page, GtkWindow *window, 
+static void prefs_receive_create_widget(PrefsPage *_page, GtkWindow *window, 
                                  gpointer data)
 {
        ReceivePage *prefs_receive = (ReceivePage *) _page;
        
        GtkWidget *vbox1;
        GtkWidget *vbox2;
-       GtkWidget *vbox3;
        GtkWidget *checkbtn_incext;
        GtkWidget *hbox;
        GtkWidget *label_incext;
@@ -100,15 +108,22 @@ void prefs_receive_create_widget(PrefsPage *_page, GtkWindow *window,
        GtkWidget *checkbtn_scan_after_inc;
 
        GtkWidget *frame;
+#ifndef MAEMO
+       GtkWidget *vbox3;
        GtkWidget *hbox_newmail_notify;
        GtkWidget *checkbtn_newmail_auto;
        GtkWidget *checkbtn_newmail_manu;
        GtkWidget *entry_newmail_notify_cmd;
        GtkWidget *label_newmail_notify_cmd;
+#else
+       GtkWidget *checkbtn_maemo_show_led;
+       GtkWidget *checkbtn_maemo_play_sound;
+       GtkWidget *checkbtn_maemo_show_banner;
+#endif
        
        GtkWidget *label_recvdialog;
-       GtkWidget *menu;
-       GtkWidget *menuitem;
+       GtkListStore *menu;
+       GtkTreeIter iter;
        GtkWidget *optmenu_recvdialog;
        GtkWidget *checkbtn_no_recv_err_panel;
        GtkWidget *checkbtn_close_recv_dialog;
@@ -144,9 +159,9 @@ void prefs_receive_create_widget(PrefsPage *_page, GtkWindow *window,
        gtk_box_pack_start (GTK_BOX (vbox2), hbox_autochk, FALSE, FALSE, 0);
 
        PACK_CHECK_BUTTON (hbox_autochk, checkbtn_autochk,
-                          _("Automatically check for new mail every"));
+                          _("Check for new mail every"));
 
-       spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 10);
+       spinbtn_autochk_adj = gtk_adjustment_new (5, 1, 100, 1, 10, 0);
        spinbtn_autochk = gtk_spin_button_new
                (GTK_ADJUSTMENT (spinbtn_autochk_adj), 1, 0);
        gtk_widget_show (spinbtn_autochk);
@@ -162,7 +177,7 @@ void prefs_receive_create_widget(PrefsPage *_page, GtkWindow *window,
        SET_TOGGLE_SENSITIVITY(checkbtn_autochk, label_autochk2);
 
        PACK_CHECK_BUTTON (vbox2, checkbtn_chkonstartup,
-                          _("Check for new mail on startup"));
+                          _("Check for new mail on start-up"));
 
        /* receive dialog */
        vbox2 = gtkut_get_options_frame(vbox1, &frame, _("Dialogs"));
@@ -171,16 +186,14 @@ void prefs_receive_create_widget(PrefsPage *_page, GtkWindow *window,
        gtk_misc_set_alignment(GTK_MISC(label_recvdialog), 0, 0.5);
        gtk_widget_show (label_recvdialog);
 
-       optmenu_recvdialog = gtk_option_menu_new ();
+       optmenu_recvdialog = gtkut_sc_combobox_create(NULL, FALSE);
        gtk_widget_show (optmenu_recvdialog);
 
-       menu = gtk_menu_new ();
-       MENUITEM_ADD (menu, menuitem, _("Always"), RECV_DIALOG_ALWAYS);
-       MENUITEM_ADD (menu, menuitem, _("Only on manual receiving"),
-                     RECV_DIALOG_MANUAL);
-       MENUITEM_ADD (menu, menuitem, _("Never"), RECV_DIALOG_NEVER);
-
-       gtk_option_menu_set_menu (GTK_OPTION_MENU (optmenu_recvdialog), menu);
+       menu = GTK_LIST_STORE(gtk_combo_box_get_model(
+                               GTK_COMBO_BOX(optmenu_recvdialog)));
+       COMBOBOX_ADD (menu, _("Always"), RECV_DIALOG_ALWAYS);
+       COMBOBOX_ADD (menu, _("Only on manual receiving"), RECV_DIALOG_MANUAL);
+       COMBOBOX_ADD (menu, _("Never"), RECV_DIALOG_NEVER);
 
        hbox = gtk_hbox_new(FALSE, 20);
        gtk_widget_show(hbox);
@@ -195,12 +208,14 @@ void prefs_receive_create_widget(PrefsPage *_page, GtkWindow *window,
        PACK_CHECK_BUTTON (vbox2, checkbtn_no_recv_err_panel,
                           _("Don't popup error dialog on receive error"));
 
-       vbox2 = gtkut_get_options_frame(vbox1, &frame, _("After receiving new mail"));
+       vbox2 = gtkut_get_options_frame(vbox1, &frame, 
+                                       _("After checking for new mail"));
 
-       PACK_CHECK_BUTTON (vbox2, checkbtn_openinbox, _("Go to inbox"));
+       PACK_CHECK_BUTTON (vbox2, checkbtn_openinbox, _("Go to Inbox"));
        PACK_CHECK_BUTTON (vbox2, checkbtn_scan_after_inc,
                           _("Update all local folders"));
+
+#ifndef MAEMO 
        vbox3 = gtkut_get_options_frame(vbox2, &frame, _("Run command"));
        
        hbox = gtk_hbox_new (TRUE, 8);
@@ -234,6 +249,28 @@ void prefs_receive_create_widget(PrefsPage *_page, GtkWindow *window,
                                 prefs_common.newmail_notify_auto || 
                                 prefs_common.newmail_notify_manu);
 
+       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_newmail_auto),
+               prefs_common.newmail_notify_auto);
+       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_newmail_manu),
+               prefs_common.newmail_notify_manu);
+       gtk_entry_set_text(GTK_ENTRY(entry_newmail_notify_cmd), 
+               prefs_common.newmail_notify_cmd);
+#else
+       PACK_CHECK_BUTTON (vbox2, checkbtn_maemo_show_led, _("Blink LED"));
+       PACK_CHECK_BUTTON (vbox2, checkbtn_maemo_play_sound, _("Play sound"));
+       PACK_CHECK_BUTTON (vbox2, checkbtn_maemo_show_banner,
+                          _("Show info banner"));
+       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_maemo_show_led),
+               prefs_common.maemo_show_led);
+       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_maemo_play_sound),
+               prefs_common.maemo_play_sound);
+       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_maemo_show_banner),
+               prefs_common.maemo_show_banner);
+
+#endif
+
+       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_autochk),
+               prefs_common.autochk_newmail);
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_incext),
                prefs_common.use_extinc);
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_no_recv_err_panel),
@@ -246,20 +283,12 @@ void prefs_receive_create_widget(PrefsPage *_page, GtkWindow *window,
                prefs_common.open_inbox_on_inc);
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_scan_after_inc),
                prefs_common.scan_all_after_inc);
-       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_newmail_auto),
-               prefs_common.newmail_notify_auto);
-       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_newmail_manu),
-               prefs_common.newmail_notify_manu);
-       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_autochk),
-               prefs_common.autochk_newmail);
 
        gtk_entry_set_text(GTK_ENTRY(entry_incext), 
                prefs_common.extinc_cmd);
-       gtk_entry_set_text(GTK_ENTRY(entry_newmail_notify_cmd), 
-               prefs_common.newmail_notify_cmd);
        gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbtn_autochk), 
                prefs_common.autochk_itv);
-       gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu_recvdialog),
+       combobox_select_by_data(GTK_COMBO_BOX(optmenu_recvdialog),
                prefs_common.recv_dialog_mode);
 
        prefs_receive->window = GTK_WIDGET(window);
@@ -270,30 +299,37 @@ void prefs_receive_create_widget(PrefsPage *_page, GtkWindow *window,
        prefs_receive->checkbtn_chkonstartup = checkbtn_chkonstartup;
        prefs_receive->checkbtn_openinbox = checkbtn_openinbox;
        prefs_receive->checkbtn_scan_after_inc = checkbtn_scan_after_inc;
+
+#ifndef MAEMO 
        prefs_receive->checkbtn_newmail_auto = checkbtn_newmail_auto;
        prefs_receive->checkbtn_newmail_manu = checkbtn_newmail_manu;
        prefs_receive->entry_newmail_notify_cmd = entry_newmail_notify_cmd;
+       prefs_receive->hbox_newmail_notify = hbox_newmail_notify;
+#else
+       prefs_receive->checkbtn_maemo_show_led = checkbtn_maemo_show_led;
+       prefs_receive->checkbtn_maemo_play_sound = checkbtn_maemo_play_sound;
+       prefs_receive->checkbtn_maemo_show_banner = checkbtn_maemo_show_banner;
+#endif
+
        prefs_receive->optmenu_recvdialog = optmenu_recvdialog;
        prefs_receive->checkbtn_no_recv_err_panel = checkbtn_no_recv_err_panel;
        prefs_receive->checkbtn_close_recv_dialog = checkbtn_close_recv_dialog;
-       prefs_receive->hbox_newmail_notify = hbox_newmail_notify;
        prefs_receive->page.widget = vbox1;
 
+#ifndef MAEMO 
        g_signal_connect(G_OBJECT(checkbtn_newmail_auto), "toggled",
                         G_CALLBACK(prefs_common_recv_dialog_newmail_notify_toggle_cb),
                         NULL);
        g_signal_connect(G_OBJECT(checkbtn_newmail_manu), "toggled",
                         G_CALLBACK(prefs_common_recv_dialog_newmail_notify_toggle_cb),
                         NULL);
-
+#endif
 }
 
-void prefs_receive_save(PrefsPage *_page)
+static void prefs_receive_save(PrefsPage *_page)
 {
        ReceivePage *page = (ReceivePage *) _page;
        gchar *tmp;
-       GtkWidget *menu;
-       GtkWidget *menuitem;
 
        prefs_common.use_extinc = gtk_toggle_button_get_active(
                GTK_TOGGLE_BUTTON(page->checkbtn_incext));
@@ -307,10 +343,24 @@ void prefs_receive_save(PrefsPage *_page)
                GTK_TOGGLE_BUTTON(page->checkbtn_openinbox));
        prefs_common.scan_all_after_inc = gtk_toggle_button_get_active(
                GTK_TOGGLE_BUTTON(page->checkbtn_scan_after_inc));
+
+#ifndef MAEMO
        prefs_common.newmail_notify_auto = gtk_toggle_button_get_active(
                GTK_TOGGLE_BUTTON(page->checkbtn_newmail_auto));
        prefs_common.newmail_notify_manu = gtk_toggle_button_get_active(
                GTK_TOGGLE_BUTTON(page->checkbtn_newmail_manu));
+#else
+       prefs_common.maemo_show_led = TRUE;
+       if (!gtk_toggle_button_get_active(
+               GTK_TOGGLE_BUTTON(page->checkbtn_maemo_show_led))) {
+               mainwindow_maemo_led_set(FALSE);
+               prefs_common.maemo_show_led = FALSE;
+       }
+       prefs_common.maemo_play_sound = gtk_toggle_button_get_active(
+               GTK_TOGGLE_BUTTON(page->checkbtn_maemo_play_sound));
+       prefs_common.maemo_show_banner = gtk_toggle_button_get_active(
+               GTK_TOGGLE_BUTTON(page->checkbtn_maemo_show_banner));
+#endif
        prefs_common.autochk_newmail = gtk_toggle_button_get_active(
                GTK_TOGGLE_BUTTON(page->checkbtn_autochk));
        prefs_common.autochk_itv = gtk_spin_button_get_value_as_int(
@@ -320,14 +370,15 @@ void prefs_receive_save(PrefsPage *_page)
        g_free(prefs_common.extinc_cmd);
        prefs_common.extinc_cmd = tmp;
        
+#ifndef MAEMO
        tmp = gtk_editable_get_chars(GTK_EDITABLE(page->entry_newmail_notify_cmd), 0, -1);
        g_free(prefs_common.newmail_notify_cmd);
        prefs_common.newmail_notify_cmd = tmp;
+#endif
        
-       menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(page->optmenu_recvdialog));
-       menuitem = gtk_menu_get_active(GTK_MENU(menu));
-       prefs_common.recv_dialog_mode = GPOINTER_TO_INT
-               (g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
+       prefs_common.recv_dialog_mode =
+               combobox_get_active_data(GTK_COMBO_BOX(page->optmenu_recvdialog));
+
        inc_autocheck_timer_remove();
        inc_autocheck_timer_set();