- Dec 06, 2016
-
-
Georges Basile Stavracas Neto authored
A final touch after all this rework.
-
Georges Basile Stavracas Neto authored
When creating a playlist, the current behavior gives no feedback that the operation is going on, neither blocks the user from repeatedly click the Add button. This may lead to confusion and errors. Fix that by making the entire dialog insensitive while a playlist is being created.
-
Georges Basile Stavracas Neto authored
When removing the last playlist of the view, there is no next playlist to select, leading us to an invalid state. Fix that by selecting the previous row when the next is not available.
-
Georges Basile Stavracas Neto authored
By sharing the sorting function from the Playlists view, we can also sort the playlists list inside the dialog.
-
Georges Basile Stavracas Neto authored
Exchange the treeview with a listbox. With that, we gain finer control over the elements, sorting and as a side effect, save a lot of lines and improve the code readability.
-
Georges Basile Stavracas Neto authored
So we can bind these properties.
-
Georges Basile Stavracas Neto authored
After so many back and forth of the code, lets cleanup the code a little bit.
-
Georges Basile Stavracas Neto authored
Instead of using the Grilo items directly, just use the Playlist instances and be done with the custom management.
-
Georges Basile Stavracas Neto authored
Instead of using a treeview, use the listbox and let us have a finer control of the sorting of the playlists. Now they're sorted as follows: * Static playlists always comes first * All playlists are sorted by the title * If the title is the same, sort by id The CSS was adapted to keep the current work in pair with the old style.
-
Georges Basile Stavracas Neto authored
Since we're wrapping the Grilo code in the Playlist code and making it transparent to the rest of the application, the entirety of the Playlists class should try as hard as it can to use that. This fixes some aborts and errors all around.
-
Georges Basile Stavracas Neto authored
This way, we have a real notification that's notifying a real state of loading, instead of a arbitrary timeout that doesn't really inform whether we're loading something.
-
Georges Basile Stavracas Neto authored
The Playlists:ready property informs us whether we're still fetching the playlists or not. This property will be consumed by the Playlists view to show a loading notification.
-
Georges Basile Stavracas Neto authored
Since the Grilo backend queries all the playlists, including the static ones, we end up with double entries in the playlists view. Fix that by querying only the user playlists with grilo, and letting the Playlists class query the static playlists manually.
-
Georges Basile Stavracas Neto authored
This commit finishes porting the signals' parameter to be of Playlist class, and adapt the code to work around that.
-
Georges Basile Stavracas Neto authored
Now that most of the burden of having to manually manipulate playlists is gone, we can simplify some code up and get rid of needless stuff.
-
Georges Basile Stavracas Neto authored
This way, we can quickly check which playlists are already added in a way that scales well.
-
Georges Basile Stavracas Neto authored
This signal was completely replaced by :playlist-added and we can now safely drop it.
-
Georges Basile Stavracas Neto authored
This is the last consumer of the old API and we can now get rid of this custom call to grilo.populate_playlists() and also from the :playlist-created signal.
-
Georges Basile Stavracas Neto authored
Make the Playlist view use the new API. This, however, introduces a series of inconsistencies, which will be addressed by future commits.
-
Georges Basile Stavracas Neto authored
Instead of relying on grilo to populate the dialog with playlists, use the new API from Playlists class.
-
Georges Basile Stavracas Neto authored
-
Georges Basile Stavracas Neto authored
This commit makes the Playlists class load and maintain an internal list of playlists available. Next commits will make the potential consumers of this API use it.
-
Georges Basile Stavracas Neto authored
The current code relies on specific data for emiting the ::playlist-created code, as the argument must be a Grl.Media, which makes this code to be impossible to be reused for static playlists. To start moving the current code to a self-contained Playlists class, add this new ::playlist-added signal which will be used in the future to notify about any new playlists (static or dynamic).
-
Georges Basile Stavracas Neto authored
The StaticPlaylist basically has the ::is_static property set to True. All static playlists now inherit from this class.
-
Georges Basile Stavracas Neto authored
So in the future we'll be able to know if the playlist is static or not without having to ask any other classes besides the playlist itself.
-
Georges Basile Stavracas Neto authored
This commit makes the static playlists be allocated when the StaticPlaylists class is instantiated. This forces the code to only instantiate it only once, which is achieved by reusing the private instance of the Playlists class for now - this will obviously be changed in future commits. This step was necessary for two reasons: * GObject properties are dynamic, and we cannot set them as class fields. * We really want to move away from singletons and python hacks to use the static playlists.
-
Georges Basile Stavracas Neto authored
Now that Playlist is a GObject, we can have the old Python-specific fields turned into properties, which will allow us to e.g. notify when something changes, bind them with other widgets, among others.
-
Georges Basile Stavracas Neto authored
In the future, we may want to be able to use GObject capabilities with the Playlist class, like signals and properties. This commit then makes the Playlist class a GObject subclass.
-
- Dec 05, 2016
-
-
Marinus Schraal authored
Unused, part of commit ae1c99eb, but missed with the commit.
-
Marinus Schraal authored
Move the async songs check that appears twice in Window to Grilo, this reduces code duplication and keeps functionality properly separated.
-
-
- Dec 03, 2016
-
-
Marinus Schraal authored
The widget was a stack to transition between the non-starred and starred icon state smoothly, this was not CSS themable. Instead, use a GtkImage and use the background-image property to set the actual image. This is a workaround since Gtk currently does not support CSS transitions between regular gtk images/icons, but using the background image instead is possible.
-
Marinus Schraal authored
Use the GRL_METADATA_KEY_LAST_PLAYED to set the last played date-time of the media. In tracker this is tracked in the nie:contentAccessed property.
-
Marinus Schraal authored
Use Grilo set_play_count to bump the play count and store the metadata through grilo.
-
Marinus Schraal authored
Music was using the lyrics key to track favorite status for songs. Use the favourite key instead, with proper tracker plugin support. https://bugzilla.gnome.org/show_bug.cgi?id=774754
-
- Nov 27, 2016
-
-
Georges Basile Stavracas Neto authored
-
Georges Basile Stavracas Neto authored
Instead of using the GtkListBox's specific ::insert(), use the add() function from GtkContainer. This will simplify the transition from GtkListBox to GtkBox in the future.
-
- Nov 26, 2016
-
-
Carlos Garnacho authored
This is not necessary as all relevant queries are done through tracker, should save some time on Query object initialization.
-
Marinus Schraal authored
GtkListBox shows black margins when inside a scrolled window. Setting the background to transparent works until the bug in gtk is fixed. https://bugzilla.gnome.org/show_bug.cgi?id=773459
-
- Nov 25, 2016
-
-