Hello, I'm working on NNTP support in Evolution, particularly the subscription interface currently, but I've encountered some problems. First, I've written the code that contact the news server for a list of newsgroups by implementing nntp_store_get_folder_info using the code from camel-nntp-grouplist.c. For my test news server, which has
No this is completely wrong, you should be using the existing code already in camel-nntp-store.c, which already implemenets list (but not subscribe). Subscribe should just be implemented in-memory by using/subclassing camel-store-info class.
The old code doesn't use the camel-nntp-stream, but you need ot use that, and camel-nntp-store.c uses it.
camel-nntp-grouplist isn't useful for anything but reference.
How long is the list? GtkTreeView can bog down on big lists, i'm not sure what else would cause a real slowdown, perhaps the subscribe dialogue does some iterative things.something like 5 newsgroups, this works pretty well, and the groups show up nicely in the subscription dialog, but for the news server of my ISP, which has _much_ more groups, I find the subscription dialog to be way too slow. After the nntp_store_get_folder_info code has returned, and the complete newsgroup list is in, on my PC, a 2GHZ box, it still takes the dialog about five *minutes* to finally display the information, time during which Evolution totally locks up (apart from also consuming a huge amount of memory).
Also, you need to save the list, so you don't have to get it every time.
Split it as a tree. i.e. use .'s as dir separatorsMaybe the best approach would be not to show all groups at once, but to have a search dialog box or a tree structure or something, or the subscription dialog should be optimized to be able to handle large amounts of folders. Are there any easy solutions for this?
Another thing: quickly looking at em-subscribe-editor.c, I found there is no difference between the initial loading of the folder list and subsequent loadings with the "Reload" button from the subscription dialog. For news servers that don't support the NEWGROUPS and DATE command, this would mean every time the dialog pops up, the complete newsgroup list needs to be loaded, which might get a little irritating
You have to cache everything to disk (by storing it in camel-store-info and saving/resotring that from disk), and just use the NEWGROUPS command when you do a list, rather than doing a LIST every time.after a while, especially if it remains this slow. Do you think this is acceptable, or should I look whether I can do anything about it?
