Anna Schumaker
4998b0867b
core/tags/track: Find the average play count of tracks
...
This function returns the average count of tracks that have been played,
and not the average count of all tracks.
Implements #29 : Efficiently calculate average play count of tracks
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-14 17:11:06 -04:00
Anna Schumaker
1973d15605
core/tags/track: Count the total number of tracks played
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-14 17:10:52 -04:00
Anna Schumaker
a97ec66e7f
core/tags/track: Count the number of unplayed tracks
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-14 17:10:47 -04:00
Anna Schumaker
d825e2d481
core: Remove random functions
...
I no longer need these now that the queue is using the glib
g_random_int_range() function.
Implements #32 : Remove custom RNG code
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-14 17:10:30 -04:00
Anna Schumaker
bc513532c1
gui/idle: Add a function to disable processing idle tasks
...
This is needed during ocarina shutdown to prevent a segfault.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-14 17:09:39 -04:00
Anna Schumaker
0bcfa06bfb
core/containers/database: Add a function for loading databases when idle
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-14 17:06:57 -04:00
Anna Schumaker
f01cce3b47
gui/idle: Split out idle queue functions
...
I want to use this outside of the collection, so let's move these
functions into a new file.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-13 09:47:46 -04:00
Anna Schumaker
dfb023a0fc
gui/model: Set text to bold for the currently playing track
...
This patch adds support for changing a rows font face to bold for the
currently playing track. This should make it easier to find what track
is playing while quickly skimming through the list.
Fixes #22 : Highlight the currently-playing song in the collection
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-07 09:14:52 -04:00
Anna Schumaker
a89aa5a201
core/audio: Trigger queue updates when changing tracks
...
I need to do this for temporary queues in addition to the collection for
bolding to work properly.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-07 09:01:13 -04:00
Anna Schumaker
1ad112e217
gui/sidebar: Select first enabled queue during startup
...
Otherwise the list of tracks is left blank, which the user might not be
expecting.
Fixes #55 : Collection should be selected by default
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-04 13:52:09 -04:00
Anna Schumaker
108dbacf41
gui/ocarina: Replace share_file() with find_file_path()
...
And don't keep the result around any longer than we need to.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
e97939a9cd
gui: Remove old Tab and QueueTab code
...
Now that nothing uses it
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
c0a6c663d1
gui: Move tempq operations into tempq.c
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
bd22c8da6d
gui/collection: Move collection_ops into collection.c
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
27a4cc23ed
gui: Remove C++ collection tab code
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
e290552812
gui/history: Convert file to C
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
5a9c6a1dd1
gui/history: Remove obsolete HistoryTab code
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
d769140e35
gui: Remove C++ playlist code
...
And notebook switching code in playlist.c
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
7995e381c0
gui/playlist: Move playlist_ops into playlist.c
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
a1c6502226
gui/audio: Handle favorite and hide buttons
...
This lets me remove gui/playlist_tab.cpp
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
f328b1686d
gui/view: Scroll to the current queue's iterator position
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
cacd344741
gui/view: Sort queue when columns are clicked
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
8e6b963eb8
gui/view: Add a right-click menu
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
c9eb9d724b
gui/view: Add keypress events
...
- Press "f" to add tracks to the Favorites playlist
- Press "q" to create a new temporary queue
- Press "r" to create a new temporary queue with Q_RANDOM set
- Press 0 .. 9 to add tracks to a temporary queue
- Delete to remove tracks from a queue
I also removed the corresponding keypress events from the C++ code to
make progress easier to track.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
aee4764a2c
core/queue: Add queue_erase() and qop_erase()
...
This function is similar to queue_remove(), except the remove can be
prevented if qop_erase() returns false.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
8d2b0caf6c
core/tempq: Store queue operations passed to tempq_init()
...
We don't need different operations for each queue. If we store this
then a higher layer doesn't need to keep passing the same structure over
and over again.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
2d1ddd5a35
gui/view: Load a track when treeview is double clicked
...
And remove this feature from the C++ code.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
bbf111ecb0
gui/view: Add gui_view_set_model()
...
To set the currently displayed treemodel
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
76a6eba537
gui/queue: Add functions to filter the currently displayed queue
...
And remove the ability to filter from the C++ code.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
4c784366d7
gui/view: Save and restore column widths
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
b59b2a2daf
gui/audio: Remove old pause after configuration code
...
And rearrange UI widgets a bit
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 12:03:53 -04:00
Anna Schumaker
bf73685098
gui/audio: Add new GtkComboBox for controlling automatic pausing
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 11:55:46 -04:00
Anna Schumaker
ada392550a
gui: Switch over to using a GuiQueueModel
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:37:24 -04:00
Anna Schumaker
ea149d57df
gui/model: Convert iters and paths into tracks
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:37:17 -04:00
Anna Schumaker
e8681e4c92
gui/queue: Add functions to update the model
...
These are simple passthrough functions to convert a struct queue into a
GuiQueueModel.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:37:03 -04:00
Anna Schumaker
70803cc199
gui/queue: Create a GuiQueueModel as part of the gui_queue
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:36:56 -04:00
Anna Schumaker
4fd370ceb6
gui/model: Send tree model signals
...
"row-inserted", "row-deleted", and "row-changed"
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:36:50 -04:00
Anna Schumaker
eb481b8d09
gui/model: Add support for gtk_tree_model_get_iter()
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:35:50 -04:00
Anna Schumaker
ff81af24fc
gui/model: Add support for gtk_tree_model_get_column_type()
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:35:40 -04:00
Anna Schumaker
ddcb973d8e
gui/model: Begin new custom tree model for queues
...
I'm not even going to try converting my C++ code. Let's just start
fresh, and write unit tests as we build this up.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:35:20 -04:00
Anna Schumaker
21eb09ced3
gui: Remove old TabToolbar code
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:35:08 -04:00
Anna Schumaker
bc9efade75
gui/queue: Add a switch to enable and disable tempqueues
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:35:01 -04:00
Anna Schumaker
d19e0b2cc0
gui/queue: Add a search entry widget
...
This gets cleared every time the queue is changed and disabled when we
show pages that cannot be filtered.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:34:55 -04:00
Anna Schumaker
ddbc040a3b
gui/queue: Set state of random and repeat buttons
...
I need to change the state of these toggle buttons whenever the
sidebar's current selection changes. Some gtk themes have trouble
showing the state of toggle buttons, so I change the sensitivity of both
the button and associated image so users know the current state.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:34:40 -04:00
Anna Schumaker
410a784ede
gui/queue: Add flags to the gui queue
...
This will be used to determine if the random and random buttons should
be enabled.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-13 16:36:44 -04:00
Anna Schumaker
ce8ec63886
gui/sidebar: Switch over to using the new gui queues
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-13 16:36:44 -04:00
Anna Schumaker
f098811a28
gui: Wire up gui_queue_{alloc|free}() in the queue operations
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-13 16:36:44 -04:00
Anna Schumaker
2d6e42832b
gui/queue: Add a text field to the gui queue
...
The sidebar is going to look at this when setting queue sizes.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-13 16:36:44 -04:00
Anna Schumaker
f85ad3a9c3
gui/queue: Add a new gui_queue struct
...
This will be used to store queue state once I no longer support notebook
tabs.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-13 16:36:44 -04:00
Anna Schumaker
5bc9f65cd9
core/tempq: Add tempq_index() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-13 16:36:44 -04:00