Amarok StatSyncing GSoC: weeks 10 and 11

Matěj Laitl · August 7, 2012 · 1 min read

Yes, I'm still working on my GSoC project about statistics synchronization in Amarok. It seems that bi-weekly reports became common here. That's because I enjoy coding much more that writing about it. Last 2 weeks I've worked on reworking existing Amarok scrobbling code and on back-end infrastructure for synchronization.

Configuration is moved to a standard place per feedback on usability review

What I've done last 2 weeks:
  • Improved USB Mass Storage Collection to be more friendly towards statistics synchronization.
  • Reworked existing scrobbling architecture in Amarok. Now there are ScrobblingServices and StatSyncing::Controller manages them and orders them to scrobble etc. This will make it easy for new services to be added in future (e.g. for Existing ScrobblerAdapter was turned to ScrobblingService implementation.
  • Changed memory-management of some internal classes to be less error-prone.
  • Moved some items of the existing "Local Collection" configuration page into newly created "Metadata" page. Local Collection page was overcrowded and some options didn't apply just to Local Collection.
  • Added statistics synchronization options to the "Metadata" page of the Amarok configuration dialog. This should be a solution to usability problems of the original "Synchronize Statistics" dialog.
  • Fixed various smaller bugs.
  • On a less related note, I did the Amarok 2.6 Release Candidate tarball, which took some of my time.
Problems I've faced:
  • Working on UI is time-consuming sometimes. Polishing UI behaviour (disabling not applicable buttons etc.) takes a lot of code.
What's next:
  • Last groundwork for synchronization (which is nearly done now).
  • Actual synchronization with!
You can test my work by pulling and building gsoc branch of my Amarok git repository clone, it already works quite well! I also publish weekly diffs with more technical details on KDE's review board which may be a more convenient way to review my code and to comment on it: week 1 week 2 week 3 week 4 (week 5 done in →) week 6 week 7 (master bugfix) week 8 (master bugfix) week 9 weeks 10 & 11