[RFC] Adding sort parameter



Hello, everybody.

It is well known that right now Grilo does not allow to specify a order
when browsing or searching content; it is up to sources to decide if
they want to sort results or not, and how to do it. If user need to get
elements in a specific order, she need to sort them herself.

Nevertheless, some services allow to sort results when querying them, up
to some degree. So it would be good if we can exploit this option and
offer it to user.

Actually, this issue comes from Calvaris, as he told me about it when
porting Grilo to Maemo5: when browsing through Jamendo source from
Mediaplayer, all results were a bit randomly shown (well, in fact this
is not true, as Jamendo is returning data sorted by rate; but from user
pov, seem they are unordered).


So thinking about it, I have implemented a first preliminary version
that, of course, need to be discussed.

Basically, a new parameter is added to browse(), search() and query()
functions: the sort parameter. It consists of a glist of metadata keys.
How sources process them? As usual, almost everything is optional in
sources. In this case, source will pick the first key in the list that
can be used to sort the results, discarding the other ones; if it needs
or can sort by several keys, it would pick the next one, and so on.
Obviously, if it doesn't support sorting at all, it will kindly discard
all keys.

In some way, user is telling "please, sort by this keys, if you can".

As example, I've added ordering support to Jamendo source.

Now, some questions/issues?

- Are this feature interesting?

- Right now, in this preliminary version there is no way of telling if
we want ascending or descending order. Jamendo plugin is implementing
ascending order, and seems a good idea to specify it.

  * Should be enough specifying a type order for all keys, or should
each key have its own type order?

  * How to implement it (in core part)? Adding a new parameter?


As always, comments are welcome.


	J.A.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]