Commit Graph

1305 Commits

Author SHA1 Message Date
Anna Schumaker a8a9dada49 curds: Add a DecadeNode and DecadePlaylist
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-20 12:49:59 -04:00
Anna Schumaker 0eca51eae1 curds: Change genre and artist node icons
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-19 17:00:39 -04:00
Anna Schumaker 68953c273d curds: Add the ArtistNode to the PlaylistManager
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-19 14:46:13 -04:00
Anna Schumaker 42a26832eb curds: Implement an artist playlist node
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-19 14:45:39 -04:00
Anna Schumaker 0cd702c908 rind: Remove do_iter_previous() from ManagerModel
I haven't seen this get run in the wild, so let's remove it

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-19 12:17:06 -04:00
Anna Schumaker b2dc1b8c5e curds: Remove GenrePlaylist
It is now unused

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-19 12:17:06 -04:00
Anna Schumaker bfe7e3550b rind: Set the row height of PlaylitNodes
If the node is a playlist, then we can use their natural height.
Otherwise, we set a height based on the first playlist in the model.
This way every row has the same height.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-19 11:08:24 -04:00
Anna Schumaker 14851e0c59 curds: Remove newline from PlaylistNode
I'm going to take a different approach with setting the row heights
directly, so start by removing the newline here.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-19 10:14:58 -04:00
Anna Schumaker a767cc08b8 curds: Rename PlaylistManager current_changed()
Simply drop the underscores to make the code a little easier to read.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-18 11:55:01 -04:00
Anna Schumaker dbc7683ccd curds: Move playlist peeking into the Playlist class
It makes more sense to do it here than in the PlaylistManager

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-18 11:48:23 -04:00
Anna Schumaker 277aabb7bd curds: Change the PlaylistManager into a PlaylistNode
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-18 11:00:12 -04:00
Anna Schumaker cd208134ec curds: Remove direct indexing from the PlaylistManager
The PlaylistNode class doesn't support this, so remove it now.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-18 10:45:07 -04:00
Anna Schumaker 8434446dcd curds: PlaylistManager shouldn't inherit from list
This is just the next step in changing this into a PlaylistNode

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-18 10:38:38 -04:00
Anna Schumaker 8ab2d97cf5 curds: Clean up how nodes are inserted and linked
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-17 16:57:22 -04:00
Anna Schumaker 91a606e054 curds: Add .parent variable to the PlaylistManager
And then clean up the ManagerModel with the node functions that we can
now use.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-17 16:14:33 -04:00
Anna Schumaker 8aff4d7f8a curds: Remove the PlaylistManager parent() function
I'm transitioning this class to be a PlaylistNode, and nodes can easily
access their parent through a .parent pointer

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-17 14:38:36 -04:00
Anna Schumaker af54734726 curds: Merge the PlaylistManager with the PlaylistManagerBase
Nothing else inherits from this class anymore, so let's merge it into
one to make it easier to deal with going forward.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-17 13:43:12 -04:00
Anna Schumaker 2c779b475d curds: Remove the PlaylistPlaceholder
It is no longer needed

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-17 11:08:15 -04:00
Anna Schumaker b37a36369f curds: Swap out the GenreManager for the GenreNode
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-17 11:05:38 -04:00
Anna Schumaker 8769423fe8 curds: Remove the placeholder before the Library node
We're putting a newline before the heading, so we don't need an empty
tree row for this.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-17 10:10:23 -04:00
Anna Schumaker eee4e134b0 curds: Swap out the LibraryManager for the LibraryNode
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-17 10:10:23 -04:00
Anna Schumaker c29313dde8 curds: Add a node.has_sibling() function
The UI can use this to determine if this is the first node added to the
parent.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-17 10:10:23 -04:00
Anna Schumaker 4fc44832ec curds: Send a notification when a node has been inserted
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-17 10:10:23 -04:00
Anna Schumaker f777a86da9 curds: Make the PlaylistNode easier to access by the UI
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-17 10:10:23 -04:00
Anna Schumaker 52f787e483 curds: Create a LibraryNode
For managing library playlists

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-17 10:10:23 -04:00
Anna Schumaker 751ad812f3 curds: Implement a GenreNode
This will eventually replace the GenreManager instance, and makes use of
the new playlist node code

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-17 10:10:23 -04:00
Anna Schumaker 0ea715a6d5 curds: Make it possible to cast nodes into a string
We'll use this do display the node in the UI. I add a newline so we
don't have to implement some kind of spacer class.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-17 10:10:20 -04:00
Anna Schumaker 261b08f3f4 curds: Convert the Playlist class into a PlaylistNode
We just make it inherit from the base class

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-16 13:51:37 -04:00
Anna Schumaker 3a89ff8885 curds: Rename node next and prev
This avoids a conflict with the Playlist class next() function

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-16 13:51:06 -04:00
Anna Schumaker 3f7a68a37a curds: Add a reset function to the playlist node
This is mostly just used for testing

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-16 13:37:26 -04:00
Anna Schumaker 3c699dddab curds: Add a lookup function to the playlist node
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-16 13:31:46 -04:00
Anna Schumaker d266218b7c curds: Normalize node names before setting
This makes them easier to look up

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-16 12:13:30 -04:00
Anna Schumaker 0994e8986e curds: Add a way to get a node from its path
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-16 11:33:11 -04:00
Anna Schumaker 79ab9d3a40 curds: Add a way to find a node's path
A path is a list of indices in the tree, which can easily be translated
into a GtkTreePath

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-16 11:33:05 -04:00
Anna Schumaker 7aa2244f97 curds: Add a way to get a nodes nth child
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-16 11:19:50 -04:00
Anna Schumaker 35e02b5732 curds: Add a way to get the node's index
This will be useful for finding the node's path

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-16 11:19:27 -04:00
Anna Schumaker 80e09d0378 curds: Store the node's parent in the node
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-16 10:41:40 -04:00
Anna Schumaker 1a01dd9047 curds: Implement a node.append_child() function
Sometimes we just want to append a node instead of inserting it in a
sorted position.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-16 09:52:50 -04:00
Anna Schumaker 6efc456f0d curds: Implement a node.insert_child() function
This inserts the node in sorted order

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-16 09:46:22 -04:00
Anna Schumaker ec6744755d curds: Begin implementing a PlaylistNode
My intention is to try to match the GtkTreeModel interface in terms of
functionality. This way, each node can act as its own iterator.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-16 07:39:49 -04:00
Anna Schumaker 2ae7ac1aa1 curds: Check if the current playlist has changed from a single spot
This helps reduce code duplication, since we can just call a single
function to handle sending the changed() signal.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-15 21:09:28 -04:00
Anna Schumaker b0d124a0e5 curds: Previous playlist should send playlist-changed
Otherwise we won't update the row in the sidebar with the number of
tracks played.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-14 20:34:04 -04:00
Anna Schumaker 8eb865217a rind: Change playlists on double click
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-14 20:26:37 -04:00
Anna Schumaker 390f7c4a28 curds: Forbid selecting the Previous playlist
I guess this could be lifted later if anybody asks for it, but I don't
think this really makes sense as a playlist source.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-14 19:35:19 -04:00
Anna Schumaker 3871cc5d9c rind: Make the current playlist bold
This helps the user know what the current source of tracks is.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-14 19:26:04 -04:00
Anna Schumaker 6255e22cf0 curds: Send the playlist-changed notification when changin current
This tells the UI that it needs to update how playlists are displayed.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-14 19:24:25 -04:00
Anna Schumaker 8a04d63c52 curds: Make it easier to send the playlist-changed notification
We're going to use this to notify that the current playlist has been
changed

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-14 17:36:37 -04:00
Anna Schumaker 6c0d269b2d curds: Clear the current list when selecting the Collection playlist
The collection playlist always has loop=True, so we'll never pop it from
the stack under normal conditions. Let's clear the list when selecting
this playlist so we don't keep a list of unreachable playlists.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-14 17:32:41 -04:00
Anna Schumaker b1521c3d35 curds: Push playlists to the front of the current list
And when we've played all the tracks, remove it.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-14 17:29:00 -04:00
Anna Schumaker b22ffbf5aa curds: Change PlaylistManager.current into a list
I'm going to keep a list of playlists that have been selected so we can
switch playlists automatically when one ends.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2019-04-14 16:37:27 -04:00