Anna Schumaker
5a54fb69b6
core/collection: Remove unused queue
...
And remove collection_ops from the core initdata
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-29 17:09:33 -04:00
Anna Schumaker
dc07d637f6
gui/history: Remove unused gui queue code
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-29 17:06:06 -04:00
Anna Schumaker
64fc5a9a0d
gui/collection: Remove unused gui queue code
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-29 17:06:06 -04:00
Anna Schumaker
696173b03e
gui/playlist: Add Collection and History playlists to the sidebar
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-29 17:06:06 -04:00
Anna Schumaker
8eaf6506e8
core/playlist: Add playlist_{next, prev}() functions
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-29 17:06:06 -04:00
Anna Schumaker
efae58c356
core/playlists/system: Add history playlist
...
Implements #8 : Convert history queue into a playlist
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-29 17:06:04 -04:00
Anna Schumaker
6265b937c7
core/playlists/system: Add collection playlist
...
Implements #7 : Convert collection queue into a playlist
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-29 17:06:03 -04:00
Anna Schumaker
c7bc2062d2
core/playlist: Add playlist_{get,set}_random()
...
I'll need this to toggle the random flag for the Collection playlist to
avoid cycling through the GUI in order to save.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-29 17:06:03 -04:00
Anna Schumaker
44a57ed863
core/queue: Add extra paramater to queue_init()
...
This is used to pass through a value to the GUI during queue
initialization.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-29 17:06:03 -04:00
Anna Schumaker
92a53d90b4
core/database: Move database out of containers/ subdirectory
...
It doesn't make sense to have a subdirectory with a single file. Let's
move it back to core/
Implements #45 : Move database into core/
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-29 17:06:01 -04:00
Anna Schumaker
fa0dee5921
core/containers: Remove unused set class
...
Implements #48 : Remove set code
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-29 17:06:00 -04:00
Anna Schumaker
98fe6d3bbb
core/containers: Remove unused index class
...
Implements #44 : Remove Index code
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-29 17:05:59 -04:00
Anna Schumaker
93fb40360d
core/filter: filter_search() returns a new GHashTable
...
I think this is cleaner than having an upper layer allocate the results
set manually. This also lets me return NULL in the case that there were
no results.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-29 17:05:59 -04:00
Anna Schumaker
fda3f761a0
core/filter: Call GHashTable functions directly
...
Implements #43 : Filter code can use a GHashTable directly
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-29 17:05:54 -04:00
Anna Schumaker
29b2b6f6f4
core/filter: Store track pointers directly
...
I was storing database indexes, but this assumes that database indexes
are constant. I intend to change this with database defragmentation.
Implements #46 : Filter stores a track pointer
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-29 17:05:47 -04:00
Anna Schumaker
415bd9731a
core/filter: Add filter_remove()
...
This is used to remove tracks from the filtering index. We'll need this
once we switch over to storing pointers to keep the same track from
getting added multiple times.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-29 15:46:11 -04:00
Anna Schumaker
ee4bbacf81
core/containers/set: Add set_alloc() and set_free() functions
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-29 15:46:11 -04:00
Anna Schumaker
779969f28b
core/idle: Let tests run without the thread pool
...
The thread pool is used to fetch album art in the background, but this
can slow down most tests that aren't interested in album art. Adding a
(testing-only) function for running without the thread pool speeds
things up a bit.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2016-07-28 16:17:43 -04:00
Anna Schumaker
83724c5f6f
gui/artwork: Split out album art functions into a new file
...
I think this is cleaner, and it should make it easier to maintain this
code.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2016-07-22 09:40:03 -04:00
Anna Schumaker
8893cdb58b
tests: Unit test fixes
...
These should have been included as part of 6.4.15.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2016-07-22 09:40:02 -04:00
Anna Schumaker
2c18f9e715
core/playlist: Add playlist_size() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-19 16:03:11 -04:00
Anna Schumaker
5e9b6bc975
core/playlist: Access playlists through a string
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-19 16:03:11 -04:00
Anna Schumaker
90e0b3ed78
core/playlist: Remove remaining dynamic playlist code
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-19 16:03:11 -04:00
Anna Schumaker
2ff7113668
core/playlists/system: Move the least played playlist into system.c
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-19 16:03:10 -04:00
Anna Schumaker
9d3cc2e5ab
core/playlists/system: Move the most played playlist into system.c
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-19 16:03:09 -04:00
Anna Schumaker
5ab2e63734
core/playlists/system: Move the unplayed tracks playlist into system.c
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-19 16:03:06 -04:00
Anna Schumaker
1527ee0e6d
core/playlist: Add playlist_update() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-19 16:03:06 -04:00
Anna Schumaker
a465577c86
core/playlists/system: Move system playlists into a new file
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-19 16:03:06 -04:00
Anna Schumaker
151c446635
core/playlist: Use separate queues for favorite and hidden playlists
...
Implements issue #6 : Store playlists as queues
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-19 16:03:04 -04:00
Anna Schumaker
9a98a009e9
core/queue: Add queue_{save|load}_tracks() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-19 08:13:10 -04:00
Anna Schumaker
9ec2497ac5
core/queue: Add a queue_has() function
...
Used to check if a track is on a queue.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-19 08:13:10 -04:00
Anna Schumaker
afb2653f65
core/queue: queue_remove_all() returns count of tracks removed
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-19 08:13:10 -04:00
Anna Schumaker
378ff72307
Remove core/containers/queue
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-19 08:13:10 -04:00
Anna Schumaker
2b426cff48
core/queue: Switch over to using struct queue_iter
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-19 08:13:10 -04:00
Anna Schumaker
9835235acd
core/queue: Implement a new queue_iter
...
I plan to remove the containers/queue implementation, so we need a new
iterator for queue access.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-19 08:13:10 -04:00
Anna Schumaker
e8d7576704
core/containers/set: Return status of set_insert() and set_remove()
...
I use this status indicator in the playlist code fairly often, so let's
return it directly rather than needing to code around it.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-19 08:13:10 -04:00
Anna Schumaker
5a30a63904
core/string: Add string_match() function
...
This function is used to determine if both strings exist and have the
same contents.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-19 08:13:10 -04:00
Anna Schumaker
e30f7f8115
core/tags/album: Add support for importing album artwork
...
This is needed so the user can manually set album artwork in the cases
where either we don't fetch the right image or no image is found.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-12 14:36:40 -04:00
Anna Schumaker
80d921343d
core/file: Add support for importing a file into the cache
...
This will be needed to allow the user to manually set album art from a
downloaded file.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-07-12 14:16:46 -04:00
Anna Schumaker
cbb9631877
gui: Add a function for determining the height of widgets
...
It's eaiser to do it in the builder code, rather than repeating this
code in several places.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-30 08:18:11 -04:00
Anna Schumaker
d0dddeacdb
core/tags/album: Add album_artwork_path() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
940d2d1dc2
core/tags/album: Query the Cover Art Archive for album art
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
570efda299
core/tags/album: Query MusicBrainz for album release information
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
d79eb2c9b8
core/tags/album: Add album_artwork_exists() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
0d9b7baff6
core/tags/album: Add a pointer to the struct artist
...
This is needed for album art fetching to get more accurate results for
our MusicBrainz query.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
97c8f80393
core/idle: Add a way to reschedule idle tasks
...
This will be needed to reschedule MusicBrainz requests if the server is
busy.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
6b52775e58
core/idle: Add support for running idle tasks in a new thread
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
6a44f9e1a1
core/idle: Add idle_sync_t enum
...
I intend to use this to select between sync and async idle tasks.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
a6bfbbb1c6
core/file: Add file_remove() function
...
I plan to use this for upgrades to remove obsolete files.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
0344a2088d
core/file: Add cache_file_write() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
9db9df619f
core/file: Add cache_file_close() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
e137eb0108
core/file: Add cache_file_open() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
3723dff87d
core/file: Add cache_file_exists() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
79ecaa11fb
core/file: Add cache_file_write_path() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
5dcf681e48
core/file: Add cache_file_path() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
12949651f7
core/file: Add struct cache_file
...
I want to reuse as much file code as I can for cache files, but I need a
new struct since data and cache files track different properties.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
9e0f017e61
core/file: Build in minimum version checks
...
I don't think it makes sense that callers of file_open() are expected to
check the file version after opening. This should be something handled
by the file code so we can print a consistent error message.
Implements issue #5 : Better file versioning
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
ee4f0d4c89
core/file: Writes go to a temporary file first
...
And then rename the temporary file when closed. This protects users
data in case Ocarina gets killed.
Implements issue #31 : Make file writes seem atomic
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
427319b72e
core/file: Move OCARINA_NAME configuration into version.h
...
I'm going to use this for saving album art to the right place. I moved
it into an include file to avoid duplicating code.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
98faba93d1
core/string: Add a string_length() function
...
This is a wrapper around strlen(), but checks for a NULL pointer first.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-24 10:50:37 -04:00
Anna Schumaker
ea10b7e630
core/playlist: Improve average playcount calculation
...
The track database now tallys total play count and unplayed track count,
so we can use this information for calculating averages. I also changed
the least played tracks playlist to allow tracks with play count equal
to the average.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-14 17:11:25 -04:00
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
f1bcc7746e
core/queue: Call g_random_int_range() rather than random_range()
...
Using somebody else's library is probably better than relying on my own
random number function.
Implements #32 : Remove custom RNG code
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-14 17:09:46 -04:00
Anna Schumaker
9a209d098b
core/tags: Switch over to db_load_idle()
...
Load all tag databases with the new load function.
Implements #15 : Load track database through an idle task
Implements #16 : Load library database through an idle task
Implements #17 : Load genre database through an idle task
Implements #18 : Load artist database through an idle task
Implements #19 : Load album database through an idle task
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-14 17:07:55 -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
2ab0c6957b
core/idle: Test idle queue before containers
...
This will let databases use the idle queue for loading.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-14 17:06:41 -04:00
Anna Schumaker
f706ccb77c
core/collection: Initialize the collection through an idle task
...
Scan over all tracks in the database first, and then schedule a
collection update.
Implements #13 : Load collection queue through an idle task
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-14 17:06:20 -04:00
Anna Schumaker
bd1e20bc56
core/tempq: Load the tempq file through an idle task
...
This will help reduce disk accesses during thet main startup sequence.
Implements #12 : Load temporary queues through an idle task
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-14 17:05:11 -04:00
Anna Schumaker
279d6e0228
core/audio: Load initial track through an idle task
...
Let's save this disk access for when we're idle.
Implements #11 : Load initial track through an idle task
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-14 17:04:28 -04:00
Anna Schumaker
cb6d451fb1
gui/collection: Add library paths through an idle task
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-13 09:47:46 -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
b2a61a60f3
core/queue: Trigger an update when tracks are selected
...
This will let us turn tracks bold as they are selected.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-06-04 17:10:05 -04:00
Anna Schumaker
2c65584e2d
gui: Remove o_notebook
...
Now that nothing uses it.
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
87c59ce888
gui/queue: Control runtime display
...
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
13525eda22
gui/queue: Add a single treeview instance
...
And swap out the model when queues are shown.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-27 12:01:43 -04:00
Anna Schumaker
b01f61f8e4
gui: Refer to "this track" instead of "current track"
...
Saying current track sounds too formal, and adds extra space to the
pause-after widget.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-16 14:27:03 -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
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
dd2adc6307
gui/model: Add support for gtk_tree_model_iter_parent()
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:36:43 -04:00
Anna Schumaker
ccf6e4c61f
gui/model: Add support for gtk_tree_model_iter_nth_child()
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:36:36 -04:00
Anna Schumaker
ba59d6bd29
gui/model: Add support for gtk_tree_model_iter_n_children()
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:36:30 -04:00
Anna Schumaker
13223427c1
gui/model: Add support for gtk_tree_model_iter_has_children()
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:36:23 -04:00
Anna Schumaker
b34fd6d522
gui/model: Add support for gtk_tree_model_iter_children()
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:36:16 -04:00
Anna Schumaker
ed69e3d2b8
gui/model: Add support for gtk_tree_model_iter_next()
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:36:09 -04:00
Anna Schumaker
e59617ffa7
gui/model: Add support for gtk_tree_model_get_value()
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:36:03 -04:00
Anna Schumaker
9c3adf2b09
gui/model: Add support for gtk_tree_model_get_path()
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:35:56 -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
6acee801ab
gui/model: Add support for gtk_tree_model_get_n_columns()
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:35:33 -04:00
Anna Schumaker
f5fba1680a
gui/model: Add support for gtk_tree_model_get_flags()
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:35:27 -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
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
24f53d88b6
gui/queue: Respond to toggling the random and repeat buttons
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:34:48 -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
2c676631a4
gui: Add shuffle and repeat buttons
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-14 07:34:37 -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
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
Anna Schumaker
5419711409
core/queue: Add qop_deinit() queue operation
...
This function is used to notify a higher layer that a queue is being
deinitialized. The higher layer should then clean up any state
associated with that queue.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-13 16:36:44 -04:00
Anna Schumaker
8bb7a20ff4
core/queue: Add qop_init() queue operation
...
This function is used to notify a higher layer that a queue has been
initialized. That higher layer can return a pointer to be attached to
the "private data" field of the queue.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-13 16:36:44 -04:00
Anna Schumaker
13dadd25ef
core/audio: Remove audio_stop() function
...
It has no users now that the stop button has been removed.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-10 11:15:35 -04:00
Anna Schumaker
548852dc24
gui/audio: Remove stop button
...
Most of the time people want to pause playback, rather than stop
entirely. Let's remove the button since it's not getting any use.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-10 11:14:52 -04:00
Anna Schumaker
25211e93ac
gui/collection: Convert checkbox into a right click menu
...
This feature isn't used very often, and keeping the checkbox in the
sidebar looks pretty ugly.
Fixes #50 : Remove Collection checkbox
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-05 08:27:10 -04:00
Anna Schumaker
02f5b13650
gui/collection: Remove image size from the collection liststore
...
This is to match the playlist treeview.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-05-02 11:18:35 -04:00
Anna Schumaker
6c653c6a79
gui/sidebar: Add Collection and History entries to the sidebar
...
I could do this as a treeview, but creating this as a liststore in glade
is WAY easier!
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-29 13:04:45 -04:00
Anna Schumaker
7439a2a73d
gui/playlist: Change current playlist when selected
...
I also add a function to get the currently selected playlist.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-29 13:04:45 -04:00
Anna Schumaker
fde59a1868
gui/playlist: Add 5 playlists to the sidebar
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-29 13:04:45 -04:00
Anna Schumaker
be6895630d
gui/playlist: Begin new playlist sidebar widget
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-29 13:04:45 -04:00
Anna Schumaker
3c3f11b958
gui/collection: Remove old collection manager code
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-29 13:04:45 -04:00
Anna Schumaker
8dece02eed
gui/collection: Update library paths when rows are clicked
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-29 13:04:45 -04:00
Anna Schumaker
2f9ee44000
gui/collection: Add library paths on startup
...
And change to them when selected.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-29 13:04:45 -04:00
Anna Schumaker
08910bef7c
gui/collection: Add new library paths through the GUI
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-29 13:04:45 -04:00
Anna Schumaker
f34e2cb57b
gui/collection: Change tab page when "Add new Path" is selected
...
I also add in code that reuses the current file chooser for picking
paths.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-29 13:04:45 -04:00
Anna Schumaker
eb81fa2e20
gui/collection: Add sidebar widget showing Collection header
...
And make it non-selectable.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-29 13:04:45 -04:00
Anna Schumaker
58d61f52e2
gui/sidebar: Add new sidebar widget
...
This is a GtkPaned that remembers its size between Ocarina sessions.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-29 13:04:45 -04:00
Anna Schumaker
870a2b769b
gui/window: Save width and height between sessions
...
Saving maximized state is too complicated, so let's just store width and
height of the window when it is not maximized.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-29 13:04:45 -04:00
Anna Schumaker
0c214dd1a9
gui/window: Add gui_window_deinit()
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-29 13:04:45 -04:00
Anna Schumaker
29985d2a69
gui/window: Add unit test
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-29 13:04:45 -04:00
Anna Schumaker
c01561831c
gui/audio: Remove "By:" and "From:"
...
I replaced these with images that have similar meanings.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-25 11:38:20 -04:00
Anna Schumaker
5a4d5bcc44
tests: Don't run test if name or function is NULL
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-11 15:04:07 -04:00
Anna Schumaker
811270a832
build: Don't run gui tests if $DISPLAY is not set
...
I have tests running on ocarinaproject.net, which is headless and
doesn't run an X server. Gui tests cann't run without an X server.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-11 15:02:24 -04:00
Anna Schumaker
627619c391
gui/audio: Convert o_progress widget to use seconds
...
This feels better than using units of nanoseconds.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-08 13:39:43 -04:00
Anna Schumaker
5e96f40cf8
gui/audio: Unit test can simulate button presses
...
This is better than calling audio_*() functions directly, since we can
make sure signals are wired up properly in glade.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-08 13:39:39 -04:00
Anna Schumaker
fd28d6830c
gui/audio: Add unit test
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-08 13:39:34 -04:00
Anna Schumaker
d8754e9a45
gui/audio: Control keyboard shortcuts from GtkBuilder
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-08 13:16:30 -04:00
Anna Schumaker
0eb8521094
gui/builder: Get a widget from the GTK builder
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-08 12:03:08 -04:00
Anna Schumaker
d4b27316c0
gui/builder: Get an object from the builder
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-08 12:03:08 -04:00
Anna Schumaker
961659bc66
gui/builder: Add a test UI file
...
This file creates a button that calls the test_builder_activated()
function when clicked.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-08 12:03:08 -04:00
Anna Schumaker
3bc5b1db9e
gui/builder: Add new file for accessing the GtkBuilder
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-08 12:03:08 -04:00
Anna Schumaker
c479042a86
gui/settings: Add gui_settings_has() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-08 12:03:08 -04:00
Anna Schumaker
d292879837
gui/settings: Read settings file on startup
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-08 12:03:08 -04:00
Anna Schumaker
a5f0da7a60
gui/settings: Store settings when changed
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-08 12:03:08 -04:00
Anna Schumaker
92c1b64b1a
gui/settings: Add functions for setting and getting values
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-08 12:03:08 -04:00
Anna Schumaker
f23fb9e0f5
gui/settings: Add new settings file
...
The settings layer will track various configuration options set by the
user. This belongs in the gui, and not core, because it controls
settings specific to this gui implementation.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-04-08 12:03:08 -04:00
Anna Schumaker
711eb67f44
core/queue: Fix queue random and selection test
...
6.4.8 changed how random tracks are selected, but never updated the unit
test. This patch fixes the unit test, and makes a few changes to make
sure the right tracks are getting selected.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:03:21 -04:00
Anna Schumaker
aac32681e5
tests: Create test{_not}_equal_common() functions
...
This lets me cut down on copied code.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
df2d365b80
tests: Remove test_cp_data_dir()
...
This function is unused now.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
eba243a22a
core/tests: Remove test.h
...
This file is no longer needed now that everything has been converted to
C.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
d81ef77fb3
tests/core: Add code for updating the .gitignore file
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
ece432bb22
core/audio: audio_{load, next, prev}() should start playback
...
The GUI needed an extra function to do this manually, which means it's
something that core should do instead.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
0cf5187867
core/audio: Add on_state_change() audio operation
...
Called to notify when playback state has changed.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
ed5f035855
core/audio: Rename audio_get_player() to test_audio_player()
...
Also, let's only have this function when CONFIG_TESTING is enabled.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
2586348921
core/audio: Convert file to C
...
I also convert core/core.c so the audio test can be converted at the
same time.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
a59a71eb38
core/core: Move core_deinit() out of the core namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
04291f4296
core/core: Move core_init() out of the core namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
1d76990fd1
core/audio: Add audio_error() to handle error messages
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
a5556ac10a
core/audio: Move audio_eos() out of the AudioDriver
...
This change lets me remove the AudioDriver, too.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
276c56406a
core/audio: Move audio_pause_after() out of the audio namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
d18d3dd214
core/audio: Move audio_prev() out of the audio namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
3f25369444
core/audio: Move audio_next() out of the audio namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
2511db3a08
core/audio: Add audio_cur_state() function
...
This replaces the is_playing() function of the AudioDriver class. I can
also make the GUIs GstDriver static.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
0a1a9f1394
core/audio: Move audio_cur_track() out of the audio namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
d1d722a163
core/audio: Move audio_stop() out of the audio namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
e1abe94b28
core/audio: Move audio_duration() out of the audio namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
20bb01ef4e
core/audio: Move audio_position() out of the audio namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:30 -04:00
Anna Schumaker
566ef3bb50
core/audio: Move audio_seek() out of the audio namespace
2016-03-28 08:01:30 -04:00
Anna Schumaker
9097bd0ffc
core/audio: Move audio_pause() out of the audio namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:29 -04:00
Anna Schumaker
16c4c23a42
core/audio: Move audio_play() out of the audio namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:29 -04:00
Anna Schumaker
e5c3d8f02e
core/audio: Move audio_load() out of the audio namespace
...
And add the on_load() audio operation.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:29 -04:00
Anna Schumaker
e0c89556ed
core/audio: Add audio_deinit() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:29 -04:00
Anna Schumaker
d9540b29d6
core/audio: Move audio_init() out of the audio namespace
...
I also move the gstreamer playbin back into core/
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-28 08:01:29 -04:00
Anna Schumaker
aad90782ba
core/collection: Clean up error handling code
...
I was assuming that my disk returns -EIO when it enters its failed
state, but it really seems to be return -ENOENT. Let's have this code
check for any error, rather than one specific one.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-23 09:42:05 -04:00
Anna Schumaker
5979d1dcaf
core/collection: Handle -EIO errors coming from the filesystem
...
One of my disks frequently returns this error, and has wiped out my
track database on more than one occasion. Let's handle this error by
disabling the library until the user tells us it is safe to use again.
Fixes #33 : Handle music directories disappearing better
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-21 08:36:48 -04:00
Anna Schumaker
a248f8ebf7
core/tempq: Add a test for moving a NULL queue
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-11 10:40:34 -05:00
Anna Schumaker
06ea2d8c0e
core/tempq: Add a deinit() / init() loop to test_next()
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-11 10:40:34 -05:00
Anna Schumaker
882ee6e1e7
core/tempq: Convert file to C
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-11 10:40:34 -05:00
Anna Schumaker
2102b1bfc9
core/tempq: Move tempq_save() out of the deck namespace
...
And remove the deck :: write() and TempQueue :: write() functions while
we're at it.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-11 10:40:34 -05:00
Anna Schumaker
b919843717
core/tempq: Add tempq_deinit() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-11 10:40:34 -05:00
Anna Schumaker
b3d95a06d4
core/tempq: Move tempq_next() out of the deck namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-11 10:40:34 -05:00
Anna Schumaker
ecda136015
core/tempq: Move tempq_move() out of the deck namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-11 10:40:34 -05:00
Anna Schumaker
c22b93b2cf
core/tempq: Move tempq_get() out of the deck namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-11 10:40:34 -05:00
Anna Schumaker
6bdc481cb4
core/tempq: Make __tempq_index() private
...
It has no users outside of unit tests.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-11 10:40:34 -05:00
Anna Schumaker
06d62240bb
core/tempq: Move tempq_free() out of the deck namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-11 10:40:34 -05:00
Anna Schumaker
bce2ba33f7
core/tempq: Move tempq_alloc() out of the deck namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-11 10:40:34 -05:00
Anna Schumaker
8c7550d5c3
core/tempq: Move tempq_init() out of the deck namespace
...
I also take this opportunity to drop support for upgrading from file
format 0. I've had several releases since this format was supported, so
this should be safe to do.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-11 10:40:34 -05:00
Anna Schumaker
51379c7e8c
core/history: Add history_prev() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-11 10:40:34 -05:00
Anna Schumaker
c125b3893e
core/history: Add history_add() function
...
I decided that having a uniqueue history queue doesn't really get me
anything, so I dropped that portion of the behavior.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-11 10:40:34 -05:00
Anna Schumaker
75c039f22d
core/history: Add history_init() and history_deinit() functions
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-11 10:40:34 -05:00
Anna Schumaker
77d4815eb6
core/history: Move history queue into a new file
...
I think managing this separately from temporary queues will make the
code simpler.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-11 10:40:34 -05:00
Anna Schumaker
8c8ab2a9eb
core/idle: Add idle_cancel() function
...
This function is used to cancel all idle tasks and free the memory
allocated for them. This needs to be called when Ocarina is shutting
down to prevent a possible hang with the gtk idle callback continuing to
process tasks.
Fixes #30 : Closing Ocarina should cancel idle tasks
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-03-01 08:27:13 -05:00
Anna Schumaker
b3592e40c0
core/playlist: Rename PL_BANNED -> PL_HIDDEN
...
"Banning" a track is a bit harsh. Let's talking about hiding tracks
instead, so that it sounds friendlier.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-29 13:22:31 -05:00
Anna Schumaker
6e838ffba3
core/collection: Make sure we run all idle tasks
...
GitLab CI failed on this test because the last remaining idle task was
the one to scan the new directory. Let's make sure we've run through
all idle tasks before continuing on with this test.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 13:15:05 -05:00
Anna Schumaker
743a464f3f
tests/core: CoreTest only needs to take the name
...
We can detect C/C++ and set up everything else from there.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
5e74385fbb
tests/core/containers: Don't pass source to ContainerTest
...
We can figure it out from the test name.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
8ad45ebef3
tests/core/tags: Don't pass source to TagTest
...
We can use the test name to find the source file.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
850af16c87
tests/core: Containers and Tags can call CoreTest
...
CoreTest will do most of the setup for us, so let's not duplicate code.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
5b921e7277
tests/core/tags: Give an order to tag tests
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
8a59485cbc
tests/core/containers: Give an order to container tests
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
5d251365fd
tests/core: Give an order to core tests
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
bc0437b3fe
tests: Clean up how the sanity test is scheduled
...
I created a new function for checking if a group of tests is running to
help determine if the sanity test needs to run before anything else.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
fef3ef3353
core: Initialize the playlist before the collection
...
I think it makes more sense to have the collection manage if banned
tracks are displayed or not, rather than doing this from the playlist
layer.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
beda9bfa3f
core/collection: Add functions to ban and unban tracks
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
3b5bbf14af
core/playlist: playlist_remove() can return a boolean
...
The collection will be using this soon to tell if a track was
successfully unbanned.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
20825613e9
core/playlist: playlist_add() can return a boolean
...
There is at least one place in the gui where it needs to know if a track
was actually added to a playlist. Adding a return value is the best way
to know what happened.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
02c82c182e
core/playlist: Convert file to C
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
b7a4bb3872
core/playlist: Use playlist_t enum to access playlists
...
Using strings is pretty tedious, so let's restrict restrict playlist
access to known values.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
88f6fc526c
core/playlist: Add a function to remove banned tracks
...
This replaces the get_tracks() function.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
7a32fdb982
core/playlist: Add dynamic playlist generation unit test
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
4e6028cf6e
core/playlist: Move playlist_remove() out of the playlist namespace
...
I also remove redundant unit tests.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
0e3d6251d3
core/playlist: Move playlist_add() out of the playlist namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
82ed2f2dc0
core/playlist: Move playlist_get_queue() out of the playlist namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
6f0b95608a
core/playlist: Move playlist_select() out of the playlist namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
1d3a762936
core/playlist: Move playlist_has() out of the playlist namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
1f5ce9e0d1
core/playlist: Add playlist_deinit() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
b1c5d42387
core/playlist: Move playlist_init() out of the playlist namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-26 11:04:42 -05:00
Anna Schumaker
3ecb06bcb6
test: Remove library directory creating functions
...
Changes to the collections layer mean that I don't need this anymore.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-12 09:47:30 -05:00
Anna Schumaker
7065b6312e
core/collection: Convert file to C
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-12 09:47:16 -05:00
Anna Schumaker
8e5cc543c3
core/collection: Fix some memory leaks
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-12 09:46:04 -05:00
Anna Schumaker
f413d14720
core/collection: Move collection_save() out of the collection namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-12 09:37:26 -05:00
Anna Schumaker
295a4424ed
core/collection: Move collection_get_queue() out of the collection
...
namespace
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-12 09:37:26 -05:00
Anna Schumaker
89ce6d725c
core/collection: Add collection_deinit()
...
To clean up the collection queue.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-12 09:37:26 -05:00
Anna Schumaker
62f0606cd6
core/collection: move collection_set_enabled() out of the collection
...
namespace
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-12 09:37:26 -05:00
Anna Schumaker
8a1f5403d0
core/collection: Move collection_update() out of the collection namespace
...
And bring collection_update_all() along with it.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-12 09:37:26 -05:00
Anna Schumaker
0cb16f5c64
core/collection: Move collection_remove() out of the collection
...
namespace
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-12 09:37:26 -05:00
Anna Schumaker
6e39e17060
core/collection: Move collection_add() out of the collection namespace
...
This patch breaks later tests, since I needed to remove the old ogg
files. This will be fixed in a few more patches.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-12 09:37:26 -05:00
Anna Schumaker
3204fc0e44
core/collection: Move collection_init() out of the collection namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-12 09:37:26 -05:00
Anna Schumaker
d97ae38cc2
core/tests: Generate Ocarina of Time album
...
I'll need a second album for testing collections, and Ocarina of Time
seems like the obvious choice!
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-02-12 09:37:26 -05:00
Anna Schumaker
e47540a84e
core/queue: Add queue_clear()
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 10:12:09 -05:00
Anna Schumaker
cc164fc4ee
core/queue: Add queue_deinit()
...
To clean up a queue when we're done with it.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 10:12:00 -05:00
Anna Schumaker
0b84b6180c
core/queue: Convert file to C
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
799a8d34b5
core/queue: Convert q_sort to a GSList
...
I needed to bump the track comparison fields by one so I can use signed
values to indicate sort order. I updated core/library.cpp to add and
subtract one as needed.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
6fa78dbf3a
core/queue: Convert q_cur into a queue iterator
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
0a331a44f5
core/queue: Replace on_track_updated() with qop_updated()
...
This patch also removes the now-unused queue notifier class.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
da0c96ac51
core/queue: Replace on_track_removed() with qop_removed()
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
df06b444cf
core/queue: Replace on_track_added() with qop_added()
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
6aab58629e
core/queue: Move read() and write() into TempQueues
...
These functions are only used by temporary queues, and the collection
queue has its own save function.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
acc78a6667
core/queue: Move queue_remove_all() out of the queue struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
ea00b406e5
core/queue: Move queue_remove() out of the queue struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
d5e34b76d4
core/queue: Add Q_ADD_FRONT flag
...
This tells the queue to always add tracks at the front.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
8fe85b9782
core/queue: Move queue_add() out of the queue struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
4c4d0ab6ce
core/queue: Move queue_sort() out of the queue struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
13723856fc
core/queue: Move queue_{set|unset}_flag() out of the queue struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
be5d028fcf
core/deck: Wire up the qop_save() function
...
So temporary queues can save when flags change or when sorted.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
9451a41ff1
core/collection: Wire up the qop_save() operation
...
This will be triggered both when queue flags are changed and when the
queue is sorted.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
ce55ef2421
core/queue: Add queue operations vector
...
And a function to help with saving queues. This patch also adds the
Q_SAVE_FLAGS and Q_SAVE_SORT queue flags to control if the queue should
be saved when flags are changed or when the queue is sorted.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
b3a8fa293b
core/queue: Move queue_has_flag() out of the queue struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
3e5bef5f3c
core/queue: Move queue_updated() out of the queue struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
ff0c2a09a8
core/queue: Move queue_at() out of the queue struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
c259177dde
core/queue: Move queue_size() out of the queue struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
331e56716a
core/queue: Move queue_next() out of the queue struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
6bd625f65b
core/queue: Move queue_selected() out of the queue struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
d6ae61d915
core/queue: Remove queue :: set_notifier()
...
Let's just set the q_notify variable directly, rather than going through
a function.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
a721a95604
core/queue: Remove queue :: length()
...
Let's just access the q_length variable directly.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
281947aded
core/queue: Convert from class to struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
626eb48933
core/queue: Rewrite unit test
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-29 08:22:10 -05:00
Anna Schumaker
8fe65e68b4
tests: Check for ffmpeg and vorbiscomment before generating music
...
We can't run most of our tests without the generated tracks.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-25 10:29:59 -05:00
Anna Schumaker
b586461104
core/containers/queue: Add _q_clear() function
...
This is used to clean up the items on a queue, and should be called to
prevent memory leaks.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-25 08:08:28 -05:00
Anna Schumaker
4e8a63cc36
core/tags/track: Expand track_compare() to compare by different fields
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-15 15:10:44 -05:00
Anna Schumaker
08c7323dfc
core/tags/track: Move comparison fields into track.h
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-15 15:10:44 -05:00
Anna Schumaker
9a16a18b9f
core/tags/album: Add an album_compare_year() function
...
With special handling for albums with the same year but different names.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-15 15:10:44 -05:00
Anna Schumaker
f44710f7ae
core/containers/queue: Add _q_add_sorted() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-15 15:10:44 -05:00
Anna Schumaker
b36869ff93
core/containers/queue: Add _q_sort() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-15 15:10:44 -05:00
Anna Schumaker
b7e4a1de23
core/containers/queue: Add _q_remove_it() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-15 15:10:44 -05:00
Anna Schumaker
e87e37414d
core/containers/queue: Add _q_for_each() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-15 15:10:44 -05:00
Anna Schumaker
f26b50bdf8
core/containers/queue: Add _q_iter_set() and _q_iter_val()
...
This patch implements basic queue iterator functions for accessing
specific positions on the queue.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-15 15:10:44 -05:00
Anna Schumaker
1fefbb6b4a
core/containers/queue: Add _q_add_head() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-15 15:10:44 -05:00
Anna Schumaker
6a653bd35e
core/containers/queue: Add _q_add_tail() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-15 15:10:44 -05:00
Anna Schumaker
bf332b36a5
core/containers/queue: Add _q_size() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-15 15:10:44 -05:00
Anna Schumaker
79627bb287
core/containers/queue: Add basic queue struct
...
This struct is a wrapper around the GQueue container, similar to how we
do sets.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-15 15:10:44 -05:00
Anna Schumaker
58a983efd1
core/containers: Move index into the containers/ directory
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-15 15:10:44 -05:00
Anna Schumaker
c34f0c160d
core/containers: Move database into the containers/ directory
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-15 15:10:44 -05:00
Anna Schumaker
f02853e9c7
core/containers: Move set into the containers/ directory
...
This patch also creates the containers/ directory
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-15 15:10:44 -05:00
Anna Schumaker
a5963a553e
core/tags/track: Convert file to C
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
b5caf6faed
core/tags/track: Convert std::string to gchar *
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
9e3e3e514c
core/tags/track: Replace constructor with a backwards pointer
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
800aeda633
core/tags: Move tags_deinit() out of the tags namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
eb349c60e9
core/tags: Move tags_init() out of the tags namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
1b4eb470a7
core/tags/library: Convert file to C
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
62fd782710
core/tags/library: Replace std::string with gchar *
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
5cc4efb6ac
core/tags/library: Replace constructor with a backwards pointer
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
2755e8a09b
core/tags/genre: Convert file to C
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
6c3d708576
core/tags/genre: Replace std::string with gchar *
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
e98e74213e
core/tags/genre: Replace constructor with a backwards pointer
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
6d9c89392e
core/tags/artist: Convert file to C
2016-01-11 09:35:59 -05:00
Anna Schumaker
c07d1e9024
core/tags/artist: Replace std:string with gchar *
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
d404579297
core/tags/artist: Replace constructor with a backwards pointer
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
5309ea5931
core/tags/album: Convert file to C
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
7c3bba11b5
core/tags/album: Replace constructor with a backwards pointer
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
ab837b1a18
core/idle: Convert file to C
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
8474ff1907
core/idle: Move idle_schedule() out of the idle namespace
...
And rewrite it to use void pointers instead of inheritance.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
8e25c4d89e
core/idle: Move idle_run_task() out of the idle queue
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
f17a19fe57
core/idle: Move idle_progress() out of the idle namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
cfd8ca8d43
core/filter: Convert file to C
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
f2664aa8f2
core/filter: Move filter_search() out of the filter namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
90afcd6065
core/filter: Move filter_add() out of the filter namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
b98b1a5855
core/filter: Rewrite unit test
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
746c55ac56
core/database: Change db_insert() to insert-by-key
...
This means that databases completely manage when memory is allocated.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
bd1de2262d
core/tags/track: Wire up the dbe_alloc() database operation
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-01-11 09:35:59 -05:00
Anna Schumaker
55a688cdcc
core/index: Convert file to C
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:48:19 -05:00
Anna Schumaker
507ac4602d
core/index: Replace index_entry constructor with backwards pointer
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:48:19 -05:00
Anna Schumaker
b28b0c8464
core/database: Add C-style initializer macro
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:48:19 -05:00
Anna Schumaker
877d9ac1d7
core/database: Convert file to C
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:48:19 -05:00
Anna Schumaker
8dfe818a7a
core/database: Replace constructors with a backwards pointer
...
This lets me use the struct db_entry without needing an inheritance
system.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:48:19 -05:00
Anna Schumaker
4a4529b158
core/database: Replace std::map with a glib hash table
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:48:19 -05:00
Anna Schumaker
9dd9d7d8f7
core/database: Replace std::vector with a glib array
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:48:19 -05:00
Anna Schumaker
1c22ecfda4
core/database: De-templatize the database
...
We now have an interface for controlling everything through struct
db_entry, so let's just have the database store a db_entry directly.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:48:18 -05:00
Anna Schumaker
1bef380ba7
core/database: Introduce the dbe_key() database operation
...
And store the result in the db_entry struct for use later.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:48:18 -05:00
Anna Schumaker
f51852f62e
core/database: Introduce the dbe_write() database operation
...
For writing database entries to disk.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:48:18 -05:00
Anna Schumaker
2da33f1c75
core/database: Introduce the dbe_read() database operation
...
This function allocates and returns a new database entry using
information read from a file.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:48:18 -05:00
Anna Schumaker
c77ca65630
core/database: Introduce the dbe_setup() database operation
...
Track tags need to add themselves to the filter index and update the
library track count once added to the database.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:48:18 -05:00
Anna Schumaker
c8021639ba
core/database: Introduce the dbe_free() database operation
...
The Track tag needs to do some cleanup when removed from a database, so
we need to use this op when removing items.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:48:18 -05:00
Anna Schumaker
049156a523
core/database: Introduce the dbe_alloc() database operation
...
For allocating new database items from a given key. Tracks do not need
this function since we have special handling for creation and insertion.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:48:18 -05:00
Anna Schumaker
ab1572ed34
core/database: Add operations vector
...
I intend to replace C++ inheritance with this struct of function
pointers.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:48:18 -05:00
Anna Schumaker
847e4c1925
core/database: Remove db_entry::index() function
...
Let's just access the dbe_index variable directly.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:48:18 -05:00
Anna Schumaker
3eb27debfb
core/database: Convert DatabaseEntry class into a struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:48:18 -05:00
Anna Schumaker
1c0235c8c7
core/tags/generic: Remove Generic tag
...
Nothing uses it anymore, so it can be safely removed :)
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:48:18 -05:00
Anna Schumaker
cfd501c5d6
core/tags/track: Rewrite unit test
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:47:22 -05:00
Anna Schumaker
18311afcfe
core/tests: Write a script to generate empty albums
...
gen_tracks.sh will read a specially configured file and create a
directory containing empty tracks to use for testing.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:46:35 -05:00
Anna Schumaker
92806c5201
core/tags/track: Clean up constructors
...
I replace the standard and copy constructors with one that tags a track
during construction. This lets me clean up a lot of code, and keep
tagging functions internal to the track class.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
33e20989fa
core/tags/track: Directly inherit from DatabaseEntry
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
ee71786c09
core/tags/track: Move track_last_play() out of the track struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
90cdfd4cbd
core/tags/track: Move track_path() out of the track struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
c634f5d5e2
core/tags/track: Move track_played() out of the track struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
24d5c37a6c
core/tags/track: Remove variable accessor functions
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
9c1cbbf8cb
core/tags/track: Remove tag accessor functions
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
192bdc3ac7
core/tags/track: Replace tags :: track_size() with track_db_get()
...
We want to loop over the track database in several places, so let's make
this easier by just returning the database itself.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
eea0f57cf8
core/tags/track: Move track_commit_db() out of tags namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
d0ec3e2cac
core/tags/track: Move track_remove_all() out of the tags namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
7ffaf91617
core/tags/track: Move track_remove() out of the tags namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
83a945d3da
core/tags/track: Move track_add() out of the tags namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
c8061e2868
core/tags/track: Move track_get() out of the tags namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
765079df94
core/tags/track: Convert Track class into a struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
446f1228cf
core/tags/library: Add library_file() function
...
To help with finding the full path of files that are located in the
library's directory.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
24504c7de8
core/tags/library: Remove library size() and {inc|dec}_size() functions
...
We can just access this variable directly instead.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
ac2b4ad52c
core/tags/library: Remove library enabled() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
47ab4c4b17
core/tags/library: Move library_set_enabled() out of the library struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
f41235e5b2
core/tags/library: Replace tags :: library_size() with library_db_get()
...
It's easier to just pass off the library database rather than forcing
higher layers to iterate over the entire thing (including possible
invalid entries).
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
768f86e802
core/tags/library: Move library_db_init() out of the tags namespace
...
And add the function library_db_deinit().
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
d7cff5faf4
core/tags/library: Move library_remove() out of tags namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
a288922b65
core/tags/library: Move library_find() out of the tags namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
e1093f7eab
core/tags/library: Move library_get() out of the tags namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
ffa5e65ba7
core/tags/library: Convert Library class to a struct
...
I also have to replace the "library" namespace with the "collection"
namespace to avoid naming collisions.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
dbd4475815
core/tags/library: Rewrite unit test
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
cc3becd566
core/tags/genre: Directly inherit from DatabaseEntry
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00