Tuesday, 20 August 2013

GSoC Week 9 + Amarok 2.8 "Return to The Origin" out NOW!

First off, version 2.8 "Return To The Origin" of your favorite music player has just been released! There's tons of new features and bugfixes, so go and update if you haven't already :)

Now on to my scripting revamp: It's nearly done. I know, I said something along the same lines last week, but this week was polishing the existing stuff [and fixing some nasty bugs]. There's also new scripting access to Amarok's bookmarking.

As for what remains, it's mostly UI interaction- like adding context menus, perhaps scriptable docks and stuff. Providers still need some work too. Personally though, I can't wait to get got working on those new scripts I'm going to write with the new API.

Thanks for reading :)

Tuesday, 13 August 2013

GSoC - Week 8

Here's a short summary of this week.

You now have scriptable biases, you can set callbacks similar to scriptable services and have a your very own dynamic playlist biases.
Also added is the new Amarok.Engine.Equalizer object for script access to Amarok's equalizer.
By next week, I should be able to finish the scripting interface as detailed in my proposal, which means I get to work on other stuff, like writing new scripts leveraging the API, and maybe some tests for the scripting interface.

The C++ script console is also undergoing a revamp to use components from the QtScriptDebugger, which means much leaner code with much more functionality.

Thanks for reading, things should get more interesting from next week!

Monday, 5 August 2013

GSoC - Week 7

This week, I've been working on exposing Amarok's playlist management and dynamic playlists.
The playlist interface pretty much mirrors the internal Amarok hierarchy, exposing three components- the playlist manager, playlist-providers and the playlist objects themselves.
No synced playlists for now though.

The dynamic playlist is, however, a whole different beast. What I want for the dynamic playlists is to have a scriptable bias, besides exposing the existing biases. As far as the existing biases are concerned, I was able to expose them via a single class using some Qt meta-magic:

  const QString command = QString(
                                "function %1( a, b, c, d  )"
                                "    return new Bias( %2, a, b, c, d );"
                                .arg( biasEnum.valueToKey( type ) )
                                .arg( type );
  engine->evaluate( command );

The dynamic playlists bits are still underway, but feel free to try the other stuff on my personal branch on quickgit.kde.org.

Yeah, no pretty pictures this week- very little of my current work directly affects the UI, though I could probably throw in some class diagrams or lolcats the next time round depending on popular demand [read weekly view-stats].

On a related note, I'm embarrassed to admit I didn't know about the QtScript debugger. It's pretty modular too, so the script console is about to go an overhaul ( which would probably render quite a bit of the existing code redundant ).