FolderItem *item = (FolderItem *)node->data;
folder_item_restore_persist_prefs(item, pptable);
+ folder_item_scan(item);
return FALSE;
}
return;
pptable = folder_persist_prefs_new(folder);
- folder_tree_destroy(folder);
+ /*
+ * should be changed and tree update should be done without
+ * destroying the tree first
+ */
+ folder_tree_destroy(folder);
folder->klass->scan_tree(folder);
g_node_traverse(folder->node, G_POST_ORDER, G_TRAVERSE_ALL, -1, folder_scan_tree_func, pptable);
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
static gboolean imap_is_msg_changed(Folder * folder,
FolderItem * item, MsgInfo * msginfo);
-static gint imap_scan_folder(Folder * folder, FolderItem * item);
static void imap_scan_tree(Folder * folder);
static gint imap_create_tree(Folder * folder);
return FALSE;
}
-gint imap_scan_folder(Folder *folder, FolderItem *item)
-{
- IMAPSession *session;
- gint messages, recent, unseen;
- guint32 uid_next, uid_validity;
- gint ok;
-
- g_return_val_if_fail(folder != NULL, -1);
- g_return_val_if_fail(item != NULL, -1);
-
- session = imap_session_get(folder);
- if (!session) return -1;
-
- ok = imap_status(session, IMAP_FOLDER(folder), item->path,
- &messages, &recent, &uid_next, &uid_validity, &unseen);
- if (ok != IMAP_SUCCESS) return -1;
-
- item->new_msgs = unseen > 0 ? recent : 0;
- item->unread_msgs = unseen;
- item->total_msgs = messages;
- item->last_num = (messages > 0 && uid_next > 0) ? uid_next - 1 : 0;
- /* item->mtime = uid_validity; */
-
- return 0;
-}
-
void imap_scan_tree(Folder *folder)
{
FolderItem *item;
}
}
folder_item_append(item, new_item);
- if (new_item->no_select == FALSE)
- imap_scan_folder(folder, new_item);
if (new_item->no_sub == FALSE)
imap_scan_tree_recursive(session, new_item);
}
if(item->item.mtime == uid_validity)
return TRUE;
- debug_print("Freeing imap uid cache");
+ debug_print("Freeing imap uid cache\n");
item->lastuid = 0;
g_slist_free(item->uid_list);
item->uid_list = NULL;