else if (folder->type == F_IMAP && folder->account &&
folder->account->recv_server)
rootpath = folder->account->recv_server;
+ else if (folder->type == F_NEWS && folder->account &&
+ folder->account->nntp_server)
+ rootpath = folder->account->nntp_server;
else
return;
}
#endif
-void folderview_check_new(Folder *folder)
+/** folderview_check_new()
+ * Scan and update the folder and return the
+ * count the number of new messages since last check.
+ * \param folder the folder to check for new messages
+ * \return the number of new messages since last check
+ */
+gint folderview_check_new(Folder *folder)
{
GList *list;
FolderItem *item;
FolderView *folderview;
GtkCTree *ctree;
GtkCTreeNode *node;
+ gint new_msgs = 0;
+ gint former_new_msgs = 0;
+ gint former_new = 0;
for (list = folderview_list; list != NULL; list = list->next) {
folderview = (FolderView *)list->data;
if (!folder && !FOLDER_IS_LOCAL(item->folder)) continue;
folderview_scan_tree_func(item->folder, item, NULL);
+ former_new = item->new;
if (folder_item_scan(item) < 0) {
if (folder && !FOLDER_IS_LOCAL(folder))
break;
}
folderview_update_node(folderview, node);
+ new_msgs += item->new;
+ former_new_msgs += former_new;
}
gtk_widget_set_sensitive(folderview->ctree, TRUE);
}
folder_write_list();
+ /* Number of new messages since last check is the just the difference
+ * between former_new_msgs and new_msgs. If new_msgs is less than
+ * former_new_msgs, that would mean another session accessed the folder
+ * and the result is not well defined.
+ */
+ new_msgs = (former_new_msgs < new_msgs ? new_msgs - former_new_msgs : 0);
+ return new_msgs;
}
void folderview_check_new_all(void)
} else {
if (item->folder->type == F_NEWS &&
item->path &&
- !strcmp2(item->name, item->path) &&
- prefs_common.ng_abbrev_len < strlen(item->path))
- name = get_abbrev_newsgroup_name(item->path, prefs_common.ng_abbrev_len);
+ !strcmp2(item->name, item->path))
+ name = get_abbrev_newsgroup_name
+ (item->path,
+ prefs_common.ng_abbrev_len);
else
name = g_strdup(item->name);
}
g_return_if_fail(item != NULL);
g_return_if_fail(item->folder != NULL);
-#if CLAWS
- prefs_folder_item_create(folderview, item);
-#else
- /*
- * CLAWS: wait till Hiro has completed his stuff
- */
if (item->parent == NULL && item->folder->account)
account_open(item->folder->account);
else
- prefs_folder_item_open(item);
-#endif
+ prefs_folder_item_create(folderview, item);
}
static void folderview_recollapse_nodes(FolderView *folderview, GtkCTreeNode *node)