So, meanwhile, there are some other things that need doing:
- Update functional spec to show new Progress dialog design. Instead of a list with buttons underneath, I'm making a list with a toolbar atop. Of course I haven't thought about toolbar button icons yet, so I'll have to come up with some good ones. Somehow.
- "Get" dialog should wait for the download to begin. It can pop a dialog giving a download error if there is one, or disappear as normal and current if the download actually begins. I don't currently know how to get the error out of the wget code, either.
- Stopping and continuing downloads. I'm not sure how safe it'd be just to halt the thread in the middle of downloading--I'd guess not very. So I'll have to find some way (system signal processing?) to abort the innermost loop.
- Download progress state. Currently a
struct Downloadonly knows its percentage of completion, so it can't display "Queued" or "Completed" in the Progress field yet. This is tied fairly intimately with the two preceding items.
- Per-download options. As I understand it this must be effected through changes in the wget code to not use a global
struct options optvariable but rather pass a
struct options*through each thread's function calls. The idea of threads is that they are multiple pipelines of execution that share a single process's memory space, so I don't think there's any way to say "use this particular thread's
opt." So it needs passed as a parameter.
- Progress bars in the Progress dialog. List view items can have images associated with them, so as long as they don't have to be square (that is, icon-like) images, this should be straightforward. Not easy, but at least straightforward.
Joshua wondered if I was going to get done this week. I might if I leave some bits out, but that only means I'm not really done: I won't feel I've succeeded unless I get at least all the features in the spec.