2007-04-23 [colin] 2.9.1cvs17
[claws.git] / src / summaryview.c
index 42ed4051ebe66feb9332e0f704b73c62e4b2f686..f5bd6e8517fc129e8840fbff81ea5fb5fe7559cb 100644 (file)
@@ -256,6 +256,9 @@ static GtkWidget *summary_ctree_create      (SummaryView    *summaryview);
 static gint summary_toggle_pressed     (GtkWidget              *eventbox,
                                         GdkEventButton         *event,
                                         SummaryView            *summaryview);
+static void summary_toggle_multiple_pressed
+                                       (GtkWidget              *widget,
+                                        SummaryView            *summaryview);
 static gint summary_folder_eventbox_pressed    
                                        (GtkWidget              *eventbox,
                                         GdkEventButton         *event,
@@ -269,8 +272,6 @@ static gboolean summary_button_released     (GtkWidget              *ctree,
 static gboolean summary_key_pressed    (GtkWidget              *ctree,
                                         GdkEventKey            *event,
                                         SummaryView            *summaryview);
-static void summary_open_row           (GtkSCTree              *sctree,
-                                        SummaryView            *summaryview);
 static void summary_tree_expanded      (GtkCTree               *ctree,
                                         GtkCTreeNode           *node,
                                         SummaryView            *summaryview);
@@ -566,6 +567,9 @@ SummaryView *summary_create(void)
        GtkWidget *statlabel_msgs;
        GtkWidget *hbox_spc;
        GtkWidget *toggle_eventbox;
+#ifdef MAEMO
+       GtkWidget *multiple_sel_togbtn;
+#endif
        GtkWidget *toggle_arrow;
        GtkWidget *popupmenu;
        GtkWidget *toggle_search;
@@ -622,14 +626,27 @@ SummaryView *summary_create(void)
        /* toggle view button */
        toggle_eventbox = gtk_event_box_new();
        gtk_widget_show(toggle_eventbox);
+       
        gtk_box_pack_end(GTK_BOX(hbox), toggle_eventbox, FALSE, FALSE, 4);
+
        toggle_arrow = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_OUT);
        gtk_widget_show(toggle_arrow);
        gtk_container_add(GTK_CONTAINER(toggle_eventbox), toggle_arrow);
        g_signal_connect(G_OBJECT(toggle_eventbox), "button_press_event",
                         G_CALLBACK(summary_toggle_pressed),
                         summaryview);
-       
+
+#ifdef MAEMO
+       multiple_sel_togbtn = gtk_toggle_button_new();
+       gtk_widget_show(multiple_sel_togbtn);
+       gtk_box_pack_end(GTK_BOX(hbox), multiple_sel_togbtn, FALSE, FALSE, 4);
+       gtk_tooltips_set_tip(GTK_TOOLTIPS(summaryview->tips),
+                            multiple_sel_togbtn,
+                            _("Toggle multiple selection"), NULL);
+       g_signal_connect(G_OBJECT(multiple_sel_togbtn), "toggled",
+                        G_CALLBACK(summary_toggle_multiple_pressed),
+                        summaryview);
+#endif
        
        statlabel_msgs = gtk_label_new("");
        gtk_widget_show(statlabel_msgs);
@@ -644,7 +661,9 @@ SummaryView *summary_create(void)
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin),
                                       GTK_POLICY_AUTOMATIC,
                                       GTK_POLICY_AUTOMATIC);
+#ifndef MAEMO
        gtk_box_pack_start(GTK_BOX(vbox), scrolledwin, TRUE, TRUE, 0);
+#endif
        gtk_widget_set_size_request(vbox,
                             prefs_common.summaryview_width,
                             prefs_common.summaryview_height);
@@ -666,6 +685,9 @@ SummaryView *summary_create(void)
        quicksearch = quicksearch_new();
        gtk_box_pack_start(GTK_BOX(vbox), quicksearch_get_widget(quicksearch), FALSE, FALSE, 0);
 
+#ifdef MAEMO
+       gtk_box_pack_start(GTK_BOX(vbox), scrolledwin, TRUE, TRUE, 0);
+#endif
        quicksearch_set_execute_callback(quicksearch, quicksearch_execute_cb, summaryview);
 
        g_signal_connect (G_OBJECT(toggle_search), "toggled",
@@ -691,6 +713,9 @@ SummaryView *summary_create(void)
        summaryview->statlabel_msgs = statlabel_msgs;
        summaryview->toggle_eventbox = toggle_eventbox;
        summaryview->toggle_arrow = toggle_arrow;
+#ifdef MAEMO
+       summaryview->multiple_sel_togbtn = multiple_sel_togbtn;
+#endif
        summaryview->toggle_search = toggle_search;
        summaryview->popupmenu = popupmenu;
        summaryview->popupfactory = popupfactory;
@@ -807,6 +832,7 @@ static void summary_set_fonts(SummaryView *summaryview)
        gtk_widget_modify_font(summaryview->statlabel_folder, font_desc);
        gtk_widget_modify_font(summaryview->statlabel_select, font_desc);
        gtk_widget_modify_font(summaryview->statlabel_msgs, font_desc);
+       /* ici */
        pango_font_description_free(font_desc);
 }
 
@@ -877,6 +903,13 @@ void summary_init(SummaryView *summaryview)
        gtk_container_add (GTK_CONTAINER(summaryview->toggle_search), pixmap);
        gtk_widget_show(pixmap);
        summaryview->quick_search_pixmap = pixmap;
+       
+#ifdef MAEMO
+       pixmap = stock_pixmap_widget(summaryview->hbox, STOCK_PIXMAP_SELECTION);
+       gtk_container_add(GTK_CONTAINER(summaryview->multiple_sel_togbtn), pixmap);
+       gtk_widget_show(pixmap);
+       summaryview->multiple_sel_image = pixmap;
+#endif
 
        /* Init summaryview prefs */
        summaryview->sort_key = SORT_BY_NONE;
@@ -2423,10 +2456,10 @@ static void summary_set_column_titles(SummaryView *summaryview)
                                        FOLDER_SHOWS_TO_HDR(item) &&
                                        !summaryview->col_state[summaryview->col_pos[S_COL_TO]].visible)
                                type = S_COL_TO;
-                       if (prefs_common.trans_hdr)
+                       if(type == S_COL_NUMBER)
                                title = gettext(col_label[type]);
                        else
-                               title = col_label[type];
+                               title = prefs_common_translated_header_name(col_label[type]);
                        break;
                default:
                        title = gettext(col_label[type]);
@@ -4171,8 +4204,7 @@ void summary_save_as(SummaryView *summaryview)
                Xstrdup_a(filename, msginfo->subject, return);
                subst_for_filename(filename);
        }
-       if (g_getenv ("G_BROKEN_FILENAMES") &&
-           filename && !g_utf8_validate(filename, -1, NULL)) {
+       if (filename && !g_utf8_validate(filename, -1, NULL)) {
                gchar *oldstr = filename;
                filename = conv_codeset_strdup(filename,
                                               conv_get_locale_charset_str(),
@@ -4804,8 +4836,9 @@ static gboolean summary_filter_get_mode(void)
                        _("Filtering"),
                        _("There are some filtering rules that belong to an account.\n"
                          "Please choose what to do with these rules:"),
-                       GTK_STOCK_CANCEL, _("+_Filter"), NULL, TRUE, vbox);
-       if ((val & ~G_ALERTDISABLE) == G_ALERTDEFAULT) {
+                       GTK_STOCK_CANCEL, _("_Filter"), NULL, TRUE, G_ALERTALTERNATE, vbox);
+
+       if ((val & ~G_ALERTDISABLE) != G_ALERTALTERNATE) {
                return FALSE;
        } else if (val & G_ALERTDISABLE)
                prefs_common.ask_apply_per_account_filtering_rules = FALSE;
@@ -5265,8 +5298,15 @@ static GtkWidget *summary_ctree_create(SummaryView *summaryview)
        g_signal_connect(G_OBJECT(ctree), "button_press_event",
                         G_CALLBACK(summary_button_pressed),
                         summaryview);
+#ifndef MAEMO
        g_signal_connect(G_OBJECT(ctree), "popup-menu",
                         G_CALLBACK(summary_popup_menu), summaryview);
+#else
+       gtk_widget_tap_and_hold_setup(GTK_WIDGET(ctree), NULL, NULL,
+                       GTK_TAP_AND_HOLD_NONE | GTK_TAP_AND_HOLD_NO_INTERNALS);
+       g_signal_connect(G_OBJECT(ctree), "tap-and-hold",
+                        G_CALLBACK(summary_popup_menu), summaryview);
+#endif
        g_signal_connect(G_OBJECT(ctree), "button_release_event",
                         G_CALLBACK(summary_button_released),
                         summaryview);
@@ -5365,6 +5405,13 @@ static gint summary_toggle_pressed(GtkWidget *eventbox, GdkEventButton *event,
        return TRUE;
 }
 
+static void summary_toggle_multiple_pressed(GtkWidget *widget,
+                                  SummaryView *summaryview)
+{
+       GTK_SCTREE(summaryview->ctree)->force_additive_sel = 
+               gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+}
+
 static gboolean summary_button_pressed(GtkWidget *ctree, GdkEventButton *event,
                                       SummaryView *summaryview)
 {
@@ -5518,6 +5565,7 @@ static gboolean summary_key_pressed(GtkWidget *widget, GdkEventKey *event,
        case GDK_t:
        case GDK_l:
        case GDK_c:
+       case GDK_a:
                if ((event->state & (GDK_MOD1_MASK|GDK_CONTROL_MASK)) == 0) {
                        g_signal_stop_emission_by_name(G_OBJECT(widget), 
                                        "key_press_event");
@@ -5565,7 +5613,7 @@ void summaryview_activate_quicksearch(SummaryView *summaryview, gboolean show)
        }
 }
 
-static void summary_open_row(GtkSCTree *sctree, SummaryView *summaryview)
+void summary_open_row(GtkSCTree *sctree, SummaryView *summaryview)
 {
        if (FOLDER_SHOWS_TO_HDR(summaryview->folder_item))
                summary_reedit(summaryview);
@@ -5900,7 +5948,6 @@ static void summary_start_drag(GtkWidget *widget, gint button, GdkEvent *event,
                                 GDK_ACTION_MOVE|GDK_ACTION_COPY|GDK_ACTION_DEFAULT, button, event);
        gtk_drag_set_icon_default(context);
        if (prefs_common.layout_mode == SMALL_LAYOUT) {
-               gint min, max, mid;
                GtkWidget *paned = GTK_WIDGET_PTR(summaryview)->parent;
                if (paned && GTK_IS_PANED(paned)) {
                        mainwindow_reset_paned(GTK_PANED(paned));
@@ -6332,6 +6379,15 @@ void summary_reflect_prefs_pixmap_theme(SummaryView *summaryview)
        gtk_widget_show(pixmap);
        summaryview->quick_search_pixmap = pixmap;
 
+#ifdef MAEMO
+       pixmap = stock_pixmap_widget(summaryview->hbox, STOCK_PIXMAP_SELECTION);
+       gtk_container_remove (GTK_CONTAINER(summaryview->multiple_sel_togbtn), 
+                             summaryview->multiple_sel_image);
+       gtk_container_add(GTK_CONTAINER(summaryview->multiple_sel_togbtn), pixmap);
+       gtk_widget_show(pixmap);
+       summaryview->multiple_sel_togbtn = pixmap;
+#endif
+
        folderview_unselect(summaryview->folderview);
        folderview_select(summaryview->folderview, summaryview->folder_item);
        summary_set_column_titles(summaryview);
@@ -6462,7 +6518,7 @@ static gboolean summary_update_msg(gpointer source, gpointer data)
        return FALSE;
 }
 
-static void summary_update_unread(SummaryView *summaryview, FolderItem *removed_item)
+void summary_update_unread(SummaryView *summaryview, FolderItem *removed_item)
 {
        guint new, unread, unreadmarked, marked, total;
        static gboolean tips_initialized = FALSE;