First a little backgrounder… A good while ago when Apple released Xcode 2.0, they introduced (to my knowledge) an entirely new interface element – the dock progress badge.

From the get-go I had it out for this badge. Not only was it ugly*, but it was uninformative too. The segmentation of the bar makes it difficult to comprehend what the progress is (the area’s way too busy) and the low contrast of the bars is a killer.

Initially I’d just hoped that Apple would sober-up and take it out after a version or two (good luck with that). But then I came up this idea, what if instead of the fugly progress bar there was one of those groovy pie chart/timer dealies that could go right over where the error badge lived – Brilliant!

Side-to-side comparison of badgets

Pretty nifty, eh?

Well, that was about a year and a half ago, since then I had made only meager attempts to do something about it (like pestering the Xcode group’s intern all of last summer).

Finally last week I got around to implementing something to that effect. And so I give you it, CTProgressBadge. Now, as it stands, I really have had no need for it in any of my projects, but I’ve given it some thought and here a few points that I figured it would be good to keep in mind when/if I do decide to use it sometime in the future:

  • The process it is gauging should be something that interrupts the user’s workflow. Compiling code interrupts a developers work (they cannot do anything while that is happening), checking email is not an interruption (that happens in the background).

  • There should be a good case to say that the process in question will take an appreciable amount of time to finish. In other words, there should case for the user choosing to leave your application to go do something else (and in the meantime wanting to check up on the progress at the dock).

    (And Most Importantly)

  • Using a progress badge makes *real* sense in your situation.

So yea, check it out, lotsa fun to be had. And, yes, the [licensing](http://blog.oofn.net/2006/03/20/a-note-on-licencing/) is the same as my other [Miscellaneous Projects](/projects/misc).

And on a related note, hopefully by the end of the week I should have finished a subclass of NSProgressIndicator (called CTProgressIndicator- suprise!), that would add a determinate version of the “spinner” style.

Download CTProgressBadge
< 100 KB

*It’s still a step above the Photoshop badge.

[rdar://4676670](rdar://4676670)