The projects was started by me because I didn't like the fact that most crossplatform media player solutions didn't have a way to import other peoples librairies. DAAP shares are not widely supported and often a real pain to setup. So I set out to build a media player focussed on a shared library between connected clients and shared playlists.
As a couple of my sub-goals I was going to learn gui programming and master some techniques and libraries. For example; I use Boost.Asio for network communication and timers. This library takes some getting used to when you use the asynchronous calls. Another library I use and learned during this project is Boost.Fusion which can adapt c++ structs to become iterable and allows for some primitive reflection. I use this to generate the views for my model.
Ofcourse GUI programming is one of the challanges aswell, I'm using the crossplatform Qt GUI library for this. Gui programming has some really interesting problems to solve that take a different approach that I normally would take. Gui programming always tend to become inheritence heavy instead of template heavy, and notifiying the gui of changes in a generic way is still something I haven't fully figured out yet.
That being said the project is coming along nicely and I have a crude working program as we speak. It still needs lots of work before it is finished though. And being a single person project does not help either.
Here is a (at the time of writing already) outdated demo of the software.