for (; node != NULL; node = gtkut_ctree_node_next(ctree, node)) {
item = gtk_ctree_node_get_row_data(ctree, node);
- if (item && item->unread > 0 && item->stype != F_TRASH)
+ if (item && item->unread_msgs > 0 && item->stype != F_TRASH)
return node;
}
unread = atoi(unread_str);
total = atoi(total_str);
- /* CLAWS: don't know why but this always seems to be true
- * when deleting messages. Somewhere claws does a folder
- * scan which sets all new, unread & total to the correct
- * values. It then enters this function, but leaves it
- * because new, unread and total are the same... */
-#ifndef CLAWS
- if (prev_row == row &&
- item->new == new &&
- item->unread == unread &&
- item->total == total)
- return;
-#endif
-
prev_row = row;
folderview_update_node(folderview, row);
gpointer data)
{
GList *list;
- gchar *rootpath;
-
- if (FOLDER_IS_LOCAL(folder))
- rootpath = LOCAL_FOLDER(folder)->rootpath;
- else if (FOLDER_TYPE(folder) == F_IMAP && folder->account &&
- folder->account->recv_server)
- rootpath = folder->account->recv_server;
- else if (FOLDER_TYPE(folder) == F_NEWS && folder->account &&
- folder->account->nntp_server)
- rootpath = folder->account->nntp_server;
- else
- return;
for (list = folderview_list; list != NULL; list = list->next) {
FolderView *folderview = (FolderView *)list->data;
if (item->path)
str = g_strdup_printf(_("Scanning folder %s%c%s ..."),
- rootpath, G_DIR_SEPARATOR,
+ item->folder->name, G_DIR_SEPARATOR,
item->path);
else
str = g_strdup_printf(_("Scanning folder %s ..."),
- rootpath);
+ item->folder->name);
STATUSBAR_PUSH(mainwin, str);
STATUSBAR_POP(mainwin);
g_return_if_fail(folder != NULL);
- if (!folder->class->scan_tree) return;
+ if (!folder->klass->scan_tree) return;
inc_lock();
window = label_window_create(_("Rebuilding folder tree..."));
folderview_set_all();
- folderview_check_new(folder);
-
- gtk_widget_destroy(window);
- inc_unlock();
-}
-
-#if 0
-void folderview_rescan_all(void)
-{
- GList *list;
- GtkWidget *window;
-
- inc_lock();
- window = label_window_create(_("Rescanning all folder trees..."));
-
- list = folder_get_list();
- for (; list != NULL; list = list->next) {
- Folder *folder = list->data;
-
- if (!folder->scan_tree) continue;
- folder_set_ui_func(folder, folderview_scan_tree_func, NULL);
- folder_scan_tree(folder);
- folder_set_ui_func(folder, NULL, NULL);
- }
-
- folder_write_list();
- folderview_set_all();
-
- list = folder_get_list();
- for (; list != NULL; list = list->next) {
- Folder *folder = list->data;
-
- folderview_check_new(folder);
- }
-
gtk_widget_destroy(window);
inc_unlock();
}
-#endif
/** folderview_check_new()
* Scan and update the folder and return the
if (!folder && !FOLDER_IS_LOCAL(item->folder)) continue;
folderview_scan_tree_func(item->folder, item, NULL);
- former_new = item->new;
+ former_new = item->new_msgs;
if (folder_item_scan(item) < 0) {
if (folder && !FOLDER_IS_LOCAL(folder))
break;
}
folderview_update_node(folderview, node);
- new_msgs += item->new;
+ new_msgs += item->new_msgs;
former_new_msgs += former_new;
}
if (node) {
item = gtk_ctree_node_get_row_data(ctree, node);
if (item) {
- if (item->new > 0 ||
- (item->stype == F_QUEUE && item->total > 0))
+ if (item->new_msgs > 0 ||
+ (item->stype == F_QUEUE && item->total_msgs > 0))
return TRUE;
}
node = GTK_CTREE_ROW(node)->children;
if (node) {
item = gtk_ctree_node_get_row_data(ctree, node);
if (item) {
- if (item->unread > 0 ||
- (item->stype == F_QUEUE && item->total > 0))
+ if (item->unread_msgs > 0 ||
+ (item->stype == F_QUEUE && item->total_msgs > 0))
return TRUE;
}
node = GTK_CTREE_ROW(node)->children;
else
add_unread_mark = FALSE;
- if (item->stype == F_QUEUE && item->total > 0 &&
+ if (item->stype == F_QUEUE && item->total_msgs > 0 &&
prefs_common.display_folder_unread) {
- str = g_strdup_printf("%s (%d%s)", name, item->total,
+ str = g_strdup_printf("%s (%d%s)", name, item->total_msgs,
add_unread_mark ? "+" : "");
gtk_ctree_set_node_info(ctree, node, str, FOLDER_SPACING,
xpm, mask, openxpm, openmask,
FALSE, GTK_CTREE_ROW(node)->expanded);
g_free(str);
- } else if ((item->unread > 0 || add_unread_mark) &&
+ } else if ((item->unread_msgs > 0 || add_unread_mark) &&
prefs_common.display_folder_unread) {
- if (item->unread > 0)
- str = g_strdup_printf("%s (%d%s%s)", name, item->unread,
+ if (item->unread_msgs > 0)
+ str = g_strdup_printf("%s (%d%s%s)", name, item->unread_msgs,
add_unread_mark ? "+" : "",
- item->unreadmarked > 0 ? "!":"");
+ item->unreadmarked_msgs > 0 ? "!":"");
else
str = g_strdup_printf("%s (+)", name);
gtk_ctree_set_node_info(ctree, node, str, FOLDER_SPACING,
g_free(str);
} else {
str = g_strdup_printf("%s%s", name,
- item->unreadmarked > 0 ? " (!)":"");
+ item->unreadmarked_msgs > 0 ? " (!)":"");
gtk_ctree_set_node_info(ctree, node, str, FOLDER_SPACING,
xpm, mask, openxpm, openmask,
gtk_ctree_node_set_text(ctree, node, COL_UNREAD, "-");
gtk_ctree_node_set_text(ctree, node, COL_TOTAL, "-");
} else {
- gtk_ctree_node_set_text(ctree, node, COL_NEW, itos(item->new));
- gtk_ctree_node_set_text(ctree, node, COL_UNREAD, itos(item->unread));
- gtk_ctree_node_set_text(ctree, node, COL_TOTAL, itos(item->total));
+ gtk_ctree_node_set_text(ctree, node, COL_NEW, itos(item->new_msgs));
+ gtk_ctree_node_set_text(ctree, node, COL_UNREAD, itos(item->unread_msgs));
+ gtk_ctree_node_set_text(ctree, node, COL_TOTAL, itos(item->total_msgs));
}
if (item->stype == F_OUTBOX || item->stype == F_DRAFT ||
use_bold = use_color = FALSE;
} else if (item->stype == F_QUEUE) {
/* highlight queue folder if there are any messages */
- use_bold = use_color = (item->total > 0);
+ use_bold = use_color = (item->total_msgs > 0);
} else {
/* if unread messages exist, print with bold font */
- use_bold = (item->unread > 0) || add_unread_mark;
+ use_bold = (item->unread_msgs > 0) || add_unread_mark;
/* if new messages exist, print with colored letter */
use_color =
- (item->new > 0) ||
+ (item->new_msgs > 0) ||
(add_unread_mark &&
folderview_have_new_children(folderview, node));
}
if (item->parent != NULL)
delete_folder = folder_scoring = folder_processing = TRUE;
}
- if (item->unread < 1)
+ if (item->unread_msgs < 1)
mark_all_read = FALSE;
}
Xstrdup_a(old_path, item->path, {g_free(new_folder); return;});
old_id = folder_item_get_identifier(item);
- if (item->folder->class->rename_folder(item->folder, item, new_folder) < 0) {
+ if (item->folder->klass->rename_folder(item->folder, item, new_folder) < 0) {
g_free(old_id);
g_free(new_folder);
return;
return;
}
- if (item->folder->class->rename_folder(item->folder, item, new_folder) < 0) {
+ if (item->folder->klass->rename_folder(item->folder, item, new_folder) < 0) {
g_free(new_folder);
return;
}
Xstrdup_a(old_path, item->path, return);
old_id = folder_item_get_identifier(item);
- if (item->folder->class->remove_folder(item->folder, item) < 0) {
+ if (item->folder->klass->remove_folder(item->folder, item) < 0) {
alertpanel_error(_("Can't remove the folder `%s'."), name);
if (folderview->opened == folderview->selected)
summary_show(folderview->summaryview,
inc_lock();
main_window_cursor_wait(folderview->mainwin);
statusbar_verbosity_set(TRUE);
+ folder_item_update_freeze();
if ((status = folder_item_move_to(from_folder, to_folder, &new_folder)) == F_MOVE_OK) {
statusbar_verbosity_set(FALSE);
main_window_cursor_normal(folderview->mainwin);
STATUSBAR_POP(folderview->mainwin);
+ folder_item_update_thaw();
if (src_node)
gtk_ctree_remove_node(GTK_CTREE(folderview->ctree), src_node);
else
debug_print("can't remove src node: is null\n");
folderview_create_folder_node_recursive(folderview, new_folder);
+
+ folder_item_update_recursive(new_folder, F_ITEM_UPDATE_MSGCNT);
+
folderview_sort_folders(folderview,
gtk_ctree_find_by_row_data(GTK_CTREE(folderview->ctree),
NULL, new_folder->parent), new_folder->folder);
statusbar_verbosity_set(FALSE);
main_window_cursor_normal(folderview->mainwin);
STATUSBAR_POP(folderview->mainwin);
+ folder_item_update_thaw();
switch (status) {
case F_MOVE_FAILED_DEST_IS_PARENT:
alertpanel_error(_("Source and destination are the same."));
FolderView *folderview)
{
gint row, column;
- FolderItem *item, *src_item;
+ FolderItem *item, *src_item = 0;
GtkCTreeNode *node = NULL;
gboolean acceptable = FALSE;
gint height = folderview->ctree->allocation.height;