bigstar... I think your software work this way....
1. Retrieve raw list from server
2. Parse list, line by line (files are ordered by the server, so basically "random" order).
3. Put the files in the visual control, and sort by name or so.
4. Each entry in the visual control is added to the queue, one by one. If extension = ".sfv" then it goes to the top of the queue.
5. Start the transfer.
You could do a cycle, after number 4, on the queue to put things up/down, as said in the "priority list".
Probably, making it putting ".nfo" before ".txt" (for example) wouldn't be easy, but I think that it would just be enaugh that *.nfo and *.txt and *Sample* are upped before anything else, that's all, doesn't matter if *.txt is upped before *.nfo or the opposite.
Think you get it , this way... the interface how it should work it's another job, but I don't think it will be hard