#include "folder.h"
#include "inc.h"
#include "statusbar.h"
-#include "toolbar.h"
typedef enum
{
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..."));
gtk_ctree_node_set_row_style(ctree, node, style);
+ item->need_update = FALSE;
+
if ((node = gtkut_ctree_find_collapsed_parent(ctree, node)) != NULL)
folderview_update_node(folderview, node);
}
}
}
+void folderview_update_items_when_required(gboolean update_summary)
+{
+ GList *list;
+ FolderView *folderview;
+ GtkCTree *ctree;
+ GtkCTreeNode *node;
+ FolderItem *item;
+
+ for (list = folderview_list; list != NULL; list = list->next) {
+ folderview = (FolderView *)list->data;
+ ctree = GTK_CTREE(folderview->ctree);
+
+ for (node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
+ node != NULL; node = gtkut_ctree_node_next(ctree, node)) {
+ item = gtk_ctree_node_get_row_data(ctree, node);
+
+ if (item->need_update) {
+ folderview_update_node(folderview, node);
+ if (update_summary && folderview->opened == node)
+ summary_show(folderview->summaryview, item);
+ }
+ }
+ }
+}
+
static void folderview_update_item_foreach_func(gpointer key, gpointer val,
gpointer data)
{
folderview_check_new(item->folder);
else
folderview_rescan_tree(item->folder);
+
+ if (folderview->opened) {
+ item = gtk_ctree_node_get_row_data(ctree, folderview->opened);
+ if (item)
+ folderview_update_item(item, TRUE);
+ }
}
static void folderview_new_folder_cb(FolderView *folderview, guint action,
return;
}
- new_item = item->folder->create_folder(item->folder, item, new_folder);
+ new_item = folder_create_folder(item, new_folder);
if (!new_item) {
alertpanel_error(_("Can't create the folder `%s'."), name);
g_free(new_folder);
FALSE, FALSE);
gtk_ctree_expand(ctree, folderview->selected);
gtk_ctree_node_set_row_data(ctree, node, new_item);
+ if (normal_style)
+ gtk_ctree_node_set_row_style(ctree, node, normal_style);
folderview_sort_folders(folderview, folderview->selected, item->folder);
gtk_clist_thaw(GTK_CLIST(ctree));
return;
}
- new_item = item->folder->create_folder(item->folder, item, new_folder);
+ new_item = folder_create_folder(item, new_folder);
g_free(new_folder);
if (!new_item) return;
FALSE, FALSE);
gtk_ctree_expand(ctree, folderview->selected);
gtk_ctree_node_set_row_data(ctree, node, new_item);
+ if (normal_style)
+ gtk_ctree_node_set_row_style(ctree, node, normal_style);
folderview_sort_folders(folderview, folderview->selected, item->folder);
gtk_clist_thaw(GTK_CLIST(ctree));
return;
}
- new_item = item->folder->create_folder(item->folder, item, new_folder);
+ new_item = folder_create_folder(item, new_folder);
if (!new_item) {
alertpanel_error(_("Can't create the folder `%s'."), name);
g_free(new_folder);
FALSE, FALSE);
gtk_ctree_expand(ctree, folderview->selected);
gtk_ctree_node_set_row_data(ctree, node, new_item);
+ if (normal_style)
+ gtk_ctree_node_set_row_style(ctree, node, normal_style);
folderview_sort_folders(folderview, folderview->selected, item->folder);
gtk_clist_thaw(GTK_CLIST(ctree));