* src/folderview.c
[claws.git] / src / folderview.c
index 490b9281c3134180972c593e12baf96a644e6114..ee135500df5391dcd096cfa83b50256d58b76a44 100644 (file)
@@ -62,6 +62,7 @@
 #include "folder.h"
 #include "inc.h"
 #include "statusbar.h"
+#include "toolbar.h"
 
 typedef enum
 {
@@ -340,7 +341,7 @@ FolderView *folderview_create(void)
        gint n_entries;
        gint i;
 
-       debug_print(_("Creating folder view...\n"));
+       debug_print("Creating folder view...\n");
        folderview = g_new0(FolderView, 1);
 
        titles[COL_FOLDER] = _("Folder");
@@ -564,7 +565,7 @@ void folderview_set(FolderView *folderview)
        GtkCTree *ctree = GTK_CTREE(folderview->ctree);
        MainWindow *mainwin = folderview->mainwin;
 
-       debug_print(_("Setting folder info...\n"));
+       debug_print("Setting folder info...\n");
        STATUSBAR_PUSH(mainwin, _("Setting folder info..."));
 
        main_window_cursor_wait(mainwin);
@@ -785,11 +786,19 @@ static GtkWidget *label_window_create(const gchar *str)
 void folderview_rescan_tree(Folder *folder)
 {
        GtkWidget *window;
+       AlertValue avalue;
 
        g_return_if_fail(folder != NULL);
 
        if (!folder->scan_tree) return;
 
+       avalue = alertpanel
+               (_("Rescan folder tree"),
+                _("All previous settings for each folders will be lost.\n"
+                  "Continue?"),
+                _("Yes"), _("No"), NULL);
+       if (avalue != G_ALERTDEFAULT) return;
+
        inc_lock();
        window = label_window_create(_("Rescanning folder tree..."));
 
@@ -806,6 +815,7 @@ void folderview_rescan_tree(Folder *folder)
        inc_unlock();
 }
 
+#if 0
 void folderview_rescan_all(void)
 {
        GList *list;
@@ -837,6 +847,7 @@ void folderview_rescan_all(void)
        gtk_widget_destroy(window);
        inc_unlock();
 }
+#endif
 
 void folderview_check_new(Folder *folder)
 {
@@ -878,6 +889,34 @@ void folderview_check_new(Folder *folder)
        folder_write_list();
 }
 
+void folderview_check_new_all(void)
+{
+       GList *list;
+       GtkWidget *window;
+       FolderView *folderview;
+
+       folderview = (FolderView *)folderview_list->data;
+
+       inc_lock();
+       main_window_lock(folderview->mainwin);
+       window = label_window_create
+               (_("Checking for new messages in all folders..."));
+
+       list = folder_get_list();
+       for (; list != NULL; list = list->next) {
+               Folder *folder = list->data;
+
+               folderview_check_new(folder);
+       }
+
+       folder_write_list();
+       folderview_set_all();
+
+       gtk_widget_destroy(window);
+       main_window_unlock(folderview->mainwin);
+       inc_unlock();
+}
+
 static gboolean folderview_search_new_recursive(GtkCTree *ctree,
                                                GtkCTreeNode *node)
 {
@@ -1211,12 +1250,13 @@ void folderview_update_item(FolderItem *item, gboolean update_summary)
 static void folderview_update_item_foreach_func(gpointer key, gpointer val,
                                                gpointer data)
 {
-       folderview_update_item((FolderItem *)key, FALSE);
+       folderview_update_item((FolderItem *)key, (gboolean)data);
 }
 
-void folderview_update_item_foreach(GHashTable *table)
+void folderview_update_item_foreach(GHashTable *table, gboolean update_summary)
 {
-       g_hash_table_foreach(table, folderview_update_item_foreach_func, NULL);
+       g_hash_table_foreach(table, folderview_update_item_foreach_func,
+                            (gpointer)update_summary);
 }
 
 static gboolean folderview_gnode_func(GtkCTree *ctree, guint depth,
@@ -1618,13 +1658,13 @@ static void folderview_selected(GtkCTree *ctree, GtkCTreeNode *row,
        /* CLAWS: set compose button type: news folder items 
         * always have a news folder as parent */
        if (item->folder) 
-               main_window_toolbar_set_compose_button
-                       (folderview->mainwin,
+               toolbar_set_compose_button
+                       (folderview->mainwin->toolbar,
                         item->folder->type == F_NEWS ? 
                         COMPOSEBUTTON_NEWS : COMPOSEBUTTON_MAIL);
 
        if (item->path)
-               debug_print(_("Folder %s is selected\n"), item->path);
+               debug_print("Folder %s is selected\n", item->path);
 
        if (!GTK_CTREE_ROW(row)->children)
                gtk_ctree_expand(ctree, row);
@@ -1639,7 +1679,7 @@ static void folderview_selected(GtkCTree *ctree, GtkCTreeNode *row,
                        gdk_pointer_ungrab(GDK_CURRENT_TIME);
        }
 
-       if((item->folder->type == F_IMAP) || (item->folder->type == F_NEWS)) {
+       if(((item->folder->type == F_IMAP) && !item->no_select) || (item->folder->type == F_NEWS)) {
                folder_item_scan(item);
        }
 
@@ -1656,12 +1696,13 @@ static void folderview_selected(GtkCTree *ctree, GtkCTreeNode *row,
        
                folder_item_apply_processing(item);
 
-               debug_print(_("done.\n"));
+               debug_print("done.\n");
                STATUSBAR_POP(folderview->mainwin);
                main_window_cursor_normal(folderview->mainwin);
        }
                
        /* Show messages */
+       summary_set_prefs_from_folderitem(folderview->summaryview, item);
        opened = summary_show(folderview->summaryview, item);
 
        folder_clean_cache_memory();