You are effectively doubling your structures.

http://blog.wysota.eu.org/index.php/...ta-redundancy/

The progress is part of your data structure thus the datastructure should be informing the environment through a model (or modifying a set of items, if you insist on using the convenience approach) about every change that happens to it so that the view can update itself properly. How come do you expect the delegate to update the progress if it doesn't know anything changed?