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
Anna Schumaker
8aa05ecedc
core/tags/genre: Move genre_db_init() out of the tags namespace
...
And add the function genre_db_deinit().
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
9522da88d0
core/tags/genre: Move genre_find() out of the tags namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
c611eb306d
core/tags/genre: Move genre_get() out of the tags namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
5e59166dab
core/tags/genre: Convert Genre class to a struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
4cba24e72a
core/tags/genre: Rewrite unit test
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
fe3d7867d1
core/tags/artist: Directly inherit from DatabaseEntry
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
405ff0cf88
core/tags/artist: Move artist_db_init() out of the tags namespace
...
And add the function artist_db_deinit().
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
52886c926e
core/tags/artist: Move artist_find() out of the tags namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
81518dce47
core/tags/artist: Move artist_get() out of the tags namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
2c5c0aa7e0
core/tags/artist: Convert Artist class to a struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
5c56d53f9f
core/tags/artist: Rewrite unit test
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
928c215494
core/tags/album: Clean up constructors
...
Remove an unused constructor and share code between everything left.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
e5b0047812
core/tags/album: Directly inherit from DatabaseEntry
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
a7746cf901
core/tags/album: Remove album::year() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
abe12bac64
core/tags/album: Move album_db_init() out of the tags namespace
...
And add the function album_db_deinit().
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
0fa2d8acc2
core/tags/album: Move album_find() out of the tags namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
1f5668bd72
core/tags/album: Move album_get() out of the tags namespace
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
e6bdf65606
core/tags/album: Convert Album class to a struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
75d4bd2af3
core/tags/album: Rewrite unit test
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
45207ebd2e
core/index: Replace index_entry iterators with struct set_iter
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
a8bb7ffccd
core/index: Remove index_entry :: size()
...
It was only used by the testing code, so there is really no reason to
keep it around.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
58f704cdd2
core/index: Remove Index class
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
025f13ffeb
core/index: Move index_has() out of the index_entry struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
7dcfc2ba78
core/index: Move index_init() out of the Index class
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
a580e5cdb5
core/index: Move index_remove() out of the Index class
...
And fold IndexEntry :: remove() into index_remove().
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
46363b1406
core/index: Move index_insert() out of the Index class
...
And fold IndexEntry :: insert() into index_insert().
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
a91326551f
core/index: Convert IndexEntry class to a struct
...
In addition, I added the prefix "ie_" to all member names.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
1244531f0d
core/index: Rewrite unit test
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
2c5b14c7f3
core/database: Replace database constructor and destructor
...
Use db_init() and db_deinit() instead.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
3ff992cf52
core/database: Replace database iterators with db_for_each()
...
This function is similar to Linux's list_for_each_safe(), and lets you
iterate over a database even if the current item is removed.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
ffd38bd28b
core/database: Move db_find() out of the database struct
...
I also take the chance to modify this function slightly. Now, if a
matching item could not be found a new item will be allocated.
I added the new function db_get() if callers just want to get an item
without allocating.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
f2f23cb225
core/database: Move db_at() out of the database struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
929279259d
core/database: Move db_remove() out of the database struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
9c358539fe
core/database: Move db_insert() out of the database struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
68c953f186
core/database: Move db_{save|autosave}() out of the database struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
8486fc6111
core/database: Move db_load() out of the database struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
3a74cb0aa5
core/database: Move db_actual_size() out of the database struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
1dcbc0c505
core/database: Remove database::size() function
...
We can just use the db_size variable directly.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
8a4e9fc2bc
core/database: Convert class to a struct
...
In addition, we lowercase variable names and add a db_ prefix to all
struct members.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
385515edbc
core/database: Rewrite unit test
...
I want a more thorough set of tests before I begin modifying the
database class.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-12-10 16:41:33 -05:00
Anna Schumaker
1cd22a9454
core/set: Add functions for reading and writing sets
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-11-10 10:55:54 -05:00
Anna Schumaker
82a74dd5ec
core/set: Add a function for clearing sets
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-11-10 10:55:54 -05:00
Anna Schumaker
09c87e14aa
core/set: Add function for copying values between sets
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-11-10 10:55:54 -05:00
Anna Schumaker
73f61e13d7
core/set: Add function for finding set intersections
...
Finding an inline intersection is really easy using iterators, so I
wrote this function to modify one of the set rather than returning a new
one.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-11-10 10:55:54 -05:00
Anna Schumaker
4d065508cd
core/set: Add new struct to act as a set
...
The glib library doesn't have a dedicated "set" container, so I need to
create a wrapper around a hash table to accomplish the same results.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-11-10 10:55:54 -05:00
Anna Schumaker
9e0c4404fc
core/date: Add date_set() to directly set a date structure
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-11-10 10:55:54 -05:00
Anna Schumaker
422f6a389f
core/tags/track: Clean up date handling unit test
...
Most of this isn't needed anymore now that date handling is being tested
elsewhere.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-11-10 10:55:54 -05:00
Anna Schumaker
ea35d81c22
core/date: Add date_string() to convert a date to a string
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-11-10 10:55:54 -05:00
Anna Schumaker
0a2abb2b31
core/string: Add string_tm2str() function to get a date stringg
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-11-10 10:55:54 -05:00
Anna Schumaker
f5d744a75c
core/date: Add date_{read|write} functions for date IO
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-11-10 10:55:54 -05:00
Anna Schumaker
af1939a6e7
core/date: Add date_compare() for comparing two dates
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-11-10 10:55:54 -05:00
Anna Schumaker
cef39bc0fc
core/date: Add date_today() function for finding today's date
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-11-10 10:55:54 -05:00
Anna Schumaker
d230396cb2
core/date: Add new file for date structure code
...
Moving this out of the track class should help to simplify the code.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-11-10 10:55:54 -05:00
Anna Schumaker
6b25987785
core/string: Add unicode handling to string_lowercase()
...
This helps improve filtering, since I drop all modifications to
characters (such as accents over an 'e').
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-11-02 14:13:00 -05:00
Anna Schumaker
b1ef40679b
core/string: Add a test for several sec2str_long() fields
...
I also remove the swap() function I was using to reallocate strings out
of a static buffer.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-14 08:31:35 -04:00
Anna Schumaker
08394c3168
core/file: Add a C-style initializer macro
...
I eventually intend to remove the file_init() function, once everything
has been converted to C.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-12 08:30:01 -04:00
Anna Schumaker
cf6364f5d1
core/file.c: Convert file to C
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-12 08:23:06 -04:00
Anna Schumaker
7529ccd4cc
core/file: Switch file_readl() to return a gchar *
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-12 08:23:06 -04:00
Anna Schumaker
471c773bd5
core/file: Switch file_path() to return a gchar *
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-12 08:23:06 -04:00
Anna Schumaker
d306c809b6
core/file: Switch file_init() to take a gchar *
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-12 08:23:06 -04:00
Anna Schumaker
d783c6b479
core/file: Remove NOT_OPEN open mode
...
I can use the file->f_file pointer for the same thing.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-12 08:23:06 -04:00
Anna Schumaker
dbd27d1297
core/file: Use a C-style file stream for reading from files
...
I also introduced a file_readf() function to make it easier to read a
formatted string from the file.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-12 08:23:05 -04:00
Anna Schumaker
f24da08d85
core/file: Use a C-style file stream for writing to files
...
I also introduced a file_writef() function to make it easier to write a
formatted string to the file.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-12 08:22:36 -04:00
Anna Schumaker
3b220d3f3a
core/file: Move file_readl() out of the file struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-09 09:14:34 -04:00
Anna Schumaker
074339040b
core/file: Remove the file struct constructor
...
And replace it with the function file_init(). Let's take this chance to
rework parts of the unit test as well.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-09 09:14:34 -04:00
Anna Schumaker
09c7164aee
core/file: Move the close() function out of the file struct
...
This change also lets me remove the destructor, since code is expected
to call file_close() when IO is complete.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-09 09:14:34 -04:00
Anna Schumaker
c88b796a7a
core/file: Move the open() function out of the file struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-09 09:14:08 -04:00
Anna Schumaker
7e9eb9e7d2
core/file: Move exists() out of the file struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-08 15:46:09 -04:00
Anna Schumaker
aa21ede894
core/file: Move get_filepath() function out of the file struct
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-08 15:45:57 -04:00
Anna Schumaker
ce94680d4d
core/file: Move get_version() function out of the file struct
...
This is now a simple function for accessing the current version of the
file.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-08 15:45:51 -04:00
Anna Schumaker
1dcc56c87e
core/file: Convert class to a struct
...
In addition, we lowercase variable names and add an f_ prefix to all
struct mebers.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 10:39:51 -04:00
Anna Schumaker
068afd6276
core/random: Convert to C
...
And convert the unit test while we're at it.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 10:05:58 -04:00
Anna Schumaker
cea50ae37f
core/random: Rename random() -> random_range()
...
This prevents a conflict with C's stdlib.h.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 10:05:52 -04:00
Anna Schumaker
023bae737c
core/string: Add a function for comparing strings
...
And switch over the GenericTag to using it.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 09:59:41 -04:00
Anna Schumaker
60678d1ddb
core/string: Convert file to C
...
And convert the unit test while we're at it.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 09:56:19 -04:00
Anna Schumaker
1a3735251d
core/string: Move string_lowercase() out of "string" namespace
...
And refactor to use glib string functions while we're at it.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 09:54:16 -04:00
Anna Schumaker
83fe822dc7
core/string: Move sec2str_detailed() out of "string" namespace
...
I also take the opportunity to rename the function to
string_sec2str_long().
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 09:46:30 -04:00
Anna Schumaker
18b83f5c26
core/string: Refactor sec2str_detailed()
...
I only need one function to perform the entire conversion using
g_strdup_printf(). This helps to simplify the code before switching
over to C.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 09:41:17 -04:00
Anna Schumaker
a314ee03ca
core/string: Move sec2str() out of "string" namespace
...
And I replace it with a simple call to g_strdup_printf() that does the
exact same thing. Note that callers are now required to free the
returned string with g_free().
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 09:33:50 -04:00
Anna Schumaker
82d1da491b
core/string: Remove string :: utos()
...
I replace it with calls to g_strdup_printf(). This has the additional
benefit that I can do uint conversions at the same time as other
formatting options, so this seems like a win. The only downside is that
I have to manually free the memory that glib allocates, but that's easy
enough.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 09:31:28 -04:00
Anna Schumaker
65fb3888b6
tests/core: Update audio test to the new framework
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 08:26:29 -04:00
Anna Schumaker
077c6bf0c8
tests/core: Update deck test to new framework
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 08:26:29 -04:00
Anna Schumaker
1cb7eff37d
tests/core: Update playlist test to the new framework
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 08:26:29 -04:00
Anna Schumaker
b81b1eeda7
tests/core: Update library test to the new framework
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 08:26:29 -04:00
Anna Schumaker
ff26171d6f
tests/core: Update queue test to the new framework
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 08:26:29 -04:00
Anna Schumaker
cfca7fccb0
tests/core: Update random test to the new framework
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 08:26:29 -04:00
Anna Schumaker
9882727c81
tests/core: Update tags/track test to the new framework
2015-10-07 08:26:29 -04:00
Anna Schumaker
cefadba363
tests/core: Update tags/library test to new framework
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 08:26:29 -04:00
Anna Schumaker
a74c52e5cb
tests/core: Update tags/genre test to new framework
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 08:26:28 -04:00
Anna Schumaker
0c294d2481
tests/core: Update tags/album unit test to the new framework
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 08:26:28 -04:00
Anna Schumaker
e6f26d036c
tests/core: Update tags/artist test to the new framework
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 08:26:28 -04:00
Anna Schumaker
a6d206a003
tests/core: Update tags/generic test to the new framework
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 08:26:28 -04:00
Anna Schumaker
0dd91e25c7
tests/core: Update idle queue test to the new framework
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 08:26:28 -04:00
Anna Schumaker
583bb5d84b
tests/core: Update filter test to new framework
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 08:26:28 -04:00
Anna Schumaker
a9219d4f22
tests/core: Update index unit test to the new framework
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 08:26:28 -04:00
Anna Schumaker
7318363287
tests/core: Update database test to the new framework
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 08:26:28 -04:00
Anna Schumaker
da8131aa6d
tests/core: Update file test to new testing framework
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 08:26:27 -04:00
Anna Schumaker
2276a44a07
tests/core: Update string test to the new framework
...
I converted the test to the new framework, and I introduced a new
"test.h" file in the source directory to help with mixing C and C++
code.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 08:19:49 -04:00
Anna Schumaker
55a7673983
tests/core: Update version test to the new framework
...
The version test is fairly simple, since it only tests the values set in
a single header file. The remaining tests will be more challenging,
since I'll have to modify core code and the test at the same time.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 08:19:45 -04:00
Anna Schumaker
63769c9c0b
Convert unit test framework to C
...
I commented out most of the file and directory modification code while I
was at it. I'll re-add these as I convert more files to C.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-10-07 08:19:37 -04:00
Anna Schumaker
34a15d58c4
Remove test_env
...
I want to make the scons files simpler, so I have decided to drop down
to only one test environment. This patch disables
tests/core/Sconscript, but I'll add this back in as I make other changes
throughout the codebase.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-09-11 09:11:38 -04:00
Anna Schumaker
ec4d3b945e
audio: Fix seeking on ARM
...
The on_seek() function needs to take an int64_t to avoid truncating on
ARM.
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2015-04-14 09:05:09 -04:00
Anna Schumaker
657ce8f0f4
audio: Ensure position and duration results are 64 bits
...
A long int is shorter on ARM than x86, which could cause position and
duration values to get truncated. Additionally, quering gstreamer with
a long int causes a compile error on ARM. Let's just do the right thing
and make this value an int64_t.
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2015-04-14 09:05:05 -04:00
Anna Schumaker
eabb5ef856
queue: Remove Q_NOTIFY_REMOVE flag
...
It no longer has any meaning.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-04-09 09:27:46 -04:00
Anna Schumaker
9180545bc2
queue: Remove on_remove() notification
...
I no longer need it to pass queue-removed messages to the gui.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-04-09 09:26:36 -04:00
Anna Schumaker
c80468a739
callback: Remove all references to callbacks
...
Callbacks have no remaining users and can safely be removed :)
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-04-04 10:21:31 -04:00
Anna Schumaker
116d1cd28f
deck: Make sure that Q_NOTIFY_REMOVE is set
...
TempQueues need this to tell the GUI when they have been removed.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-04-04 10:20:53 -04:00
Anna Schumaker
e8b68b84eb
queue: Add an on_remove() notification to the QNotifier class
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-04-04 10:20:49 -04:00
Anna Schumaker
b95bbe6ad4
queue: Create an on_track_updated() callback
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-04-03 20:55:07 -04:00
Anna Schumaker
9eef2ad35d
queue: Create an on_track_removed() notification
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-04-03 12:24:37 -04:00
Anna Schumaker
91fc9436a5
queue: Give notifiers an "on_track_added()" function
...
So they can tell GUIs that something has been added.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-04-03 12:19:08 -04:00
Anna Schumaker
c5598293d6
queue: Create a notifier class
...
This class will be used to push queue changes directly to the GUI.
Currently changes get mapped through the old callbacks system, which can
lead to several inefficiencies because the GUI has to look up each queue
structure in a list.
This patch implements a basic QNotifier class and provides a function
for setting a Queue's notifier.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-04-03 12:16:40 -04:00
Anna Schumaker
75d39cbd85
playlist: Add a "least played tracks" playlist
...
This playlist will look for any track with a below average playcount.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-02-06 15:33:42 -05:00
Anna Schumaker
0997ffff99
playlist: Add a "most played tracks" playlist
...
This playlist will look for any track with an above average play count.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-02-06 15:10:38 -05:00
Anna Schumaker
64291ff02c
playlist: Add an "unplayed tracks" dynamic playlist
...
Unplayed tracks is a dynamic playlist generated whenever we are asked to
select the "Unplayed" playlist. Note that dynamic playlists aren't
hooked up to the other playlist functions (has, add, del, or
get_tracks). This is to avoid adding them to the index and potentially
writing out to disk.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-02-06 14:33:57 -05:00
Anna Schumaker
3f423fb3ae
filter: Use string :: lowercase() for searching
...
This is a much simpler way of doing things.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-30 10:54:39 -05:00
Anna Schumaker
6c4dc5b1db
filter: Remove lowercase() function
...
And switch everything over to using the new implementation.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-30 09:35:55 -05:00
Anna Schumaker
7733e24c07
string: Add a lowercase() function
...
This function strips out special characters and returns the lowercase
version of the string.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-30 09:32:50 -05:00
Anna Schumaker
cc6f4c9293
string: Add a function for creating a detailed time string
...
I use this to display the total running time of queues in the gui.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-29 08:27:25 -05:00
Anna Schumaker
12260a3de9
string: Add a function for converting seconds to string
...
This is used to get a string representation of the number of seconds
passed in.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-27 09:23:14 -05:00
Anna Schumaker
6c6437c2bd
string: Create a utos() function
...
This function converts unsigned ints into strings. This allows me to
replace several almost identical functions with one function call.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-27 08:37:27 -05:00
Anna Schumaker
77fc2fff5c
version: Add a "+" to version string
...
I use this to show that there have been any changes since the last
release.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-26 08:43:14 -05:00
Anna Schumaker
e6d9a58be2
gui: Remove CONFIG_TEST macros
...
I haven't had gui unit tests in months, so these can be removed for now.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-21 08:43:55 -05:00
Anna Schumaker
74a557739d
lib: Remove rest of lib/
...
This is all contained in the gui code now.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-21 08:39:02 -05:00
Anna Schumaker
98ff0b79cd
colmgr: Merge lib/ and gui/ code back together
...
The code is still messy now, but I'll be cleaning it up soon!
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-17 13:19:41 -05:00
Anna Schumaker
27c7dc91d8
queue: Fix up sorting
...
If years are equal then sort by album name.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-13 10:08:53 -05:00
Anna Schumaker
6cfd0d5c51
tests: Rework much of the testing library
...
I move the code into a new cpp file, so it is no longer a header-only
library. I also take the chance to add a for-each function for testing
iterators.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-13 09:35:26 -05:00
Anna Schumaker
8d3010a31e
queue: minor cleanup
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-13 09:35:26 -05:00
Anna Schumaker
1dfe475ade
idle: Clean up unit test
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-13 09:35:26 -05:00
Anna Schumaker
afd47ce667
index: Clean up unit test
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-13 09:35:26 -05:00
Anna Schumaker
4b0c6121c3
database: Clean up the unit test
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-13 09:35:26 -05:00
Anna Schumaker
0abc562033
build: Remove unused global environment variables
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-02 10:43:44 -05:00
Anna Schumaker
a371e832dd
build: Remove valgrind support
...
I never actually used this. Testing with valgrind should happen
manually if needed.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-02 10:32:16 -05:00
Anna Schumaker
3750293ca0
tags: Fix expected years
...
Year is no longer 2014.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-02 10:26:52 -05:00
Anna Schumaker
92d264d4ac
audio: Move Driver into audio.h
...
I also rename from Driver -> AudioDriver.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-20 15:48:07 -05:00
Anna Schumaker
6a117c762e
driver: play() and pause() shouldn't return a boolean
...
This value is never used in the audio layer so let's stop returning it
from the driver.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-20 14:32:31 -05:00
Anna Schumaker
d7113cb124
driver: Pass Tracks to the load() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-20 12:01:38 -05:00
Anna Schumaker
a4ad0aa79b
driver: Fold eos() into the driver
...
With this patch I no longer need a Driver :: init() function to handle
picking the next track.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-20 11:04:14 -05:00
Anna Schumaker
fd2a251c14
audio: Initialize GST from the gui layer
...
This means I no longer need to pass argc and argv parameters to core/,
so I can eventually work towards removing the Driver :: init() function.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-20 10:16:44 -05:00
Anna Schumaker
e7a8ad54bd
Audio: Remove the driver on_error() callback function
...
This was used to get around layering issues with the gstreamer driver.
Now that the gstreamer implementation is in the gui code we can have it
call audio::next() directly.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-19 17:26:39 -05:00
Anna Schumaker
5b32bb16b4
Audio: Make the TestDriver class completely internal to the audio test
...
It's not used anywhere else except during this one test, so move it out
of the global include files.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-19 17:21:32 -05:00
Anna Schumaker
b9d4c6749d
audio: Move the get_driver() function into the audio namespace
...
It's already in the audio.cpp file, so just reshuffle things a little
bit.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-19 14:54:12 -05:00
Anna Schumaker
f20898b79c
driver: Merge code with audio.cpp
...
The driver is intended to be a small class, so put it in the audio code
now and we'll clean it up in future patches.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-19 14:37:56 -05:00
Anna Schumaker
c12dbae73a
driver: Track current driver with a pointer
...
This will let me implement drivers outside of this file allowing for
easier customization.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-19 14:20:30 -05:00
Anna Schumaker
39eb22f05c
Queue: Update doxygen documentation
...
I also remove the related section of the DESIGN document.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-09 08:40:14 -05:00
Anna Schumaker
a1b6955a1d
Queue: Clean up queue flags
...
Reformat the doxygen comments and remove the unused Q_FLAG_MASK
constant.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-07 09:58:47 -05:00
Anna Schumaker
5a31963e30
tests: Tell doxygen to avoid looking at tag tests
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:37:07 -05:00
Anna Schumaker
e7e36caa3a
tagdb: Remove tagdb
...
This shifts the taglib code into library.cpp. I also remove the tagdb
section of the DESIGN document.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:52 -05:00
Anna Schumaker
c7fe5b18d5
tagdb: Rip out most tagdb functions
...
Most of this are a straight replacement with the new versions in
tags/track.cpp.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:52 -05:00
Anna Schumaker
2394e46fb7
Track: Re-enable filtering
...
This has been disabled for some time. I added a test for adding track
indexes to the filter upon creation, but it doesn't properly test adding
to the filter when reading from disk.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:52 -05:00
Anna Schumaker
09bf458d7a
Track: Rename functional test to locale test
...
This code is really testing date and locale handling, so this patch
renames the function to match what it actually does. While I'm at it, I
also introduce some cleanups.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:52 -05:00
Anna Schumaker
4224d89813
Track: Add a function for finding track_db size
...
This returns the actual size of the database, so be careful when using
it! The intent of this function is to allow some kind of iteration when
loading databases.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:52 -05:00
Anna Schumaker
45c83ed2fd
Track: Add a function for removing all tracks from a given library
...
This function will be called when doing library removals.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:52 -05:00
Anna Schumaker
9dfec9934c
Track: Add a function for removing specific tracks from the track_db
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:52 -05:00
Anna Schumaker
d5fc2a4de0
Track: Add a function for saving the track_db
...
The track_db doesn't have autosaving enabled for performance reasons.
This lets us add several tracks to the database between saves, but it
also means we need to provide a commit() function.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:52 -05:00
Anna Schumaker
83cc81c934
Track: Add a function to look up Track tags by index
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:52 -05:00
Anna Schumaker
a30f5ef794
Track: Create an add_track() function
...
We return a new Track tag or NULL if we have already tagged this track.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:52 -05:00
Anna Schumaker
44aac0dcec
Generic: Create a copy constructor
...
Track tags need a copy constructor to keep library size accurate, so
create one here.
2014-12-04 08:31:52 -05:00
Anna Schumaker
4edbd69fa7
Track: Change constructor to take relative paths
...
I'm going to need to split this value earlier to do a unique lookup when
inserting, so the constructor can take the relative path to make things
easier.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:52 -05:00
Anna Schumaker
cfef5c07a0
Track: Clean up test for reads and writes
...
I want to test basic reading and writing before running the functional
test, since the functional test will eventually trigger database
commits.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:52 -05:00
Anna Schumaker
2578cdadfe
Track: Move read and write code into tags/track.cpp
...
Sadly, this patch disables filtering for tracks. This will be reenabled
sometime soon!
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:52 -05:00
Anna Schumaker
39cc10bb3e
Track: Prefetch artist, album, genre and library tags
...
This makes the code a little bit cleaner, since we don't need to keep
doing lookups for each test run.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:52 -05:00
Anna Schumaker
b5a529795d
Track: Add a function for comparing two dates
...
I don't want to expose the date structure outside of the track class, so
I'll provide a comparison function instead.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
a2b3ca1292
Track: Make last played date private
...
This patch creates a new structure to track the last played date, which
can be expanded into a class at some future point. Additionally, I use
strftime() to calculate the current date based on the user's current
locale settings.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
6daa26f0d6
Track: Make filepath private
...
I don't want anybody outside of this class changing the value, so it
shouldn't be public. I also change the primary key to use library index
instead of the full filepath while I'm at it.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
cdd20da5c0
Track: Convert length_str into a function
...
I don't think this value needs to be stored anywhere in the Track class
since it's fairly easy to calculate. Let's convert it into a function
for now and reevaluate later!
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
2540a6aa7a
Track: Use GenericTag's _name and _lowercase fields
...
This lets me remove the duplicate title and title_lowercase fields from
the Track tag.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
1fdee864a2
Track: Hide length from the public
...
I provide an accessor function to keep this value from ever getting
changed outside of the Track class.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
eb23127f6d
Track: Hide the play count from the public
...
I provide an accessor function to keep this value from getting changed
outside of this class.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
468a4e79d5
Track: Hide the track number from the public
...
I provide an accessor function to keep this value from ever getting
changed.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
91f6f54b4e
Track: Add a test for the Track destructor
...
We want to make sure that the _library size is decremented whenever a
track is removed or destroyed.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
2dfa9bf168
Track: Hide the genre tag from the public
...
And set it using the new constructor.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
c6029f13f2
Track: Hide the album tag from the public
...
And set it using the new constructor.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
0a6ace3c14
Track: Hide the artist tag from the public
...
Also set it using our new constructor.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
6149c928d2
Track: Begin a new Track constructor
...
I want to provide the Library, Artist, Album, and Genre tags to the
Track on construction to (hopefully) eliminate the Track::tag()
function.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
37613573e4
Track: Hide the library field from the public
...
And provide an accessor function.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
7e52c9b364
Track: Move the default constructor to a new cpp file
...
I also use this opportunity to create a new default constructor test for
the Track tag. This patch also disables the tags test since the tagdb
will be going away soon.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
cbcd9c594d
GenericTag: Add a function for comparing tag names
...
I was only ever comparing the lowercase version of the name, so this
should be done in a single place (the GenericTag) to make maintenance
easier.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
f433ced9cb
Library: Add functions for looking up or creating Library tags
...
This patch moves the library_db into tags/library.cpp, where it can be
effectively managed by the Library tag. For this to work, I need to add
some extra functions to the tags namespace to:
- Create new Library tags,
- Find tags by index,
- Remove the Library at a specific index, and
- Find the actual size of the library_db.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
8545837672
Genre: Add functions for looking up or creating Genre tags
...
The genre_db should really be controlled from within the Genre tag,
so this patch adds functions to find or create Genre tags to the tags
namespace.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
7d3e9a3d28
Album: Add functions for looking up or creating Album tags
...
The album_db should really be controlled from within the Album tag, so
this patch adds functions to find or create Album tags to the tags
namespace.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
bac54857fd
Artist: Add functions for looking up or creating Artist tags
...
The artist_db should really be controlled from within the Artist tag, so
this patch creates a new tags namespace containing functions that will
find or create tags as they are requested.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
ce8b3ada03
Library: Rename count -> _size
...
Also make it private and provide accessor functions.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
754d45efd0
Library: Make _enabled private
...
I added in accessor functions to get and set this value.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
01e514736e
Library Tag: Make root_path private
...
And just change the name of the variable to "_path".
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
f83765d11e
Library: Add a unit test for the Library tag
...
This tests all the basic things that the tag does: storing values and
reading / writing from file.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
4d6cb81f77
Library: Move the Library tag into a new file
...
No code or documentation changes yet, just split things out for now.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
1e6bcf7451
Genre: Move Genre tag into a new file
...
- This tag now inherits from GenericTag.
- Add a Genre-specific unit test.
- Remove the genre tag section of the DESIGN file.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:51 -05:00
Anna Schumaker
2d9d87afc9
Album: Move Album tag into a new file
...
Also make it inherit from the GenericTag base class. Also also, add a
unit test specific to Album tags. Finally, I remove the corresponding
section of the DESIGN file since it is no longer needed.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-04 08:31:49 -05:00
Anna Schumaker
a9fc53964c
Artist: The ArtistTag should inherit from GenericTag
...
The GenericTag class provides most of the implementation, so use it!
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-03 13:03:11 -05:00
Anna Schumaker
fb4f523206
GenericTag: Create a generic tag that other tag classes can use
...
This implements the basics so I don't need to keep reimplementing
everything.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-03 13:03:10 -05:00
Anna Schumaker
b3d904c128
Artist: Move artist tag code into a new directory
...
core/tags.cpp was WAY too big, so I moved this code into a new file in
its own directory. I also created a new unit test just for testing the
Artist tag.
This patch disables the "tags" test since it conflicts with the
tests/core/tags/ directory. This is okay because the tagdb is gradually
being phased out!
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-03 13:02:49 -05:00
Anna Schumaker
a34151365f
Audio: Add version number to cur_track file
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-03 13:02:44 -05:00
Anna Schumaker
55c45e6004
Gitignore and TODO updates
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-11-24 16:30:22 -05:00
Anna Schumaker
2b71ecbeca
IndexEntry: Make _values private
...
I don't want anybody outside of the IndexEntry class to modify the
values in this container. This patch makes it private and provides
iterator access instead.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-11-06 09:03:51 -05:00
Anna Schumaker
e89941af31
IndexEntry: Write more detailed documentation
...
In addition to documentation updates, I also solve a few warnings that
Doxygen gives me.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-11-04 08:30:54 -05:00
Anna Schumaker
48b25945cc
DatabaseEntry: Rename id to _index (and make it private)
...
This variable should only be set by the Database when a DatabaseItem is
first created. This means I should hide _index from the rest of the
world to prevent accidental modifications. I also add an accessor
function for other code that needs to read _index.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-11-02 10:25:41 -05:00
Anna Schumaker
8128e5b5e1
tests: Remove unused testing options
...
I never really did anything with cppcheck or gcov, so I'm removing these
options.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-11-01 20:25:56 -04:00
Anna Schumaker
159f6098f3
tests: Reenable valgrind support
...
This lets me remove the unused OTest class which I was keeping around
for reference.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-11-01 20:25:56 -04:00
Anna Schumaker
97733aa40a
tests: Create common functions for building tests
...
This continues to simplify my Sconscript files.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-11-01 20:25:56 -04:00
Anna Schumaker
89498ccc9e
tests: Rewrite how lib tests are run
...
Similar to how core tests were just rewritten, only applied to lib.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-11-01 20:25:56 -04:00
Anna Schumaker
7faa895b22
tests: Rewrite how core tests are run
...
My old testing system was rather convoluted. This patch makes the
Sconscript file easier to follow.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-11-01 20:25:56 -04:00
Anna Schumaker
e6e9fb08d0
Time to begin work on Ocarina 6.3!
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-11-01 20:25:55 -04:00
Anna Schumaker
c9cabb78f1
colmgr: Make sure banned tracks are removed when reenabling a library
...
This issue was solved in Ocarina 6.1.3, but I didn't add a unit test for
it. This patch adds a test.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-08-19 08:57:36 -04:00
Anna Schumaker
412dc67e1f
Merge branch 'master' into Ocarina-next
...
Conflicts:
Sconstruct
gui/collection_mgr.cpp
2014-08-19 08:08:55 -04:00
Anna Schumaker
8fd5d8173e
filter: Clear the result set before filtering
...
Ocarina was preserving the results set even if there were 0 search
results for the entire search string. So a search for "walllllll" would
still return results for "wall".
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-08-12 10:23:33 -04:00
Anna Schumaker
be72339b2d
filter: Check for empty results when filtering
...
The user could search for a term that isn't stored in the filter index.
This is represented through a NULL pointer returned from the
Index.find() function. Let's check this pointer before attempting to
dereference it ...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-08-12 09:59:00 -04:00
Anna Schumaker
32bb1c670b
model: Create a basic unit test
...
This test doesn't catch everything, but I want to move on anyway!
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-29 11:40:15 -04:00
Anna Schumaker
77616aa8d2
Merge branch 'master' into Ocarina-next
...
Conflicts:
Sconstruct
tests/Sconscript
2014-06-26 17:04:58 -04:00
Anna Schumaker
9d8455001f
gen_library.sh: Only copy .ogg files
...
This excludes the invalid_track file I just added.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-22 12:59:28 -04:00
Anna Schumaker
e274d6399b
tags: Fix when library->count is modified
...
Whenever a Track is destructed, library->count is decremented. This
means that even if tagging fails we need to increment library->count to
keep this value consistent.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-22 12:59:27 -04:00
Anna Schumaker
a74eaaffa6
tags: Check that a Track was tagged correctly
...
Without this check we could end up creating a Track for a .ini file or
some other non-audio file.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-22 12:35:08 -04:00
Anna Schumaker
d74d1ea634
Prepare for a bugfix release
...
Looks like I'll need to release a 6.1.1 soon
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-22 12:35:08 -04:00
Anna Schumaker
80bed8b956
collection manager: Rename widgets in the glade file
...
o_collection_* was easily confused with widgets on the collection tab,
so I renamed everything to be less confusing.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-22 11:19:05 -04:00
Anna Schumaker
3d067878f2
colmgr: Add a function for updating a specific path
...
On the gui end, call this function when a row in the "collected paths"
list is double-clicked.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-22 10:14:23 -04:00
Anna Schumaker
a5f47e46a8
colmgr: Move some collection manager code into lib/
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-21 12:27:34 -04:00
Anna Schumaker
194a09bed4
lib: Initialize the GtkBuilder from the middle layer
...
This will provide an interface for accessing widgets, and make it easier
to swap out different builder files.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-15 11:31:04 -04:00
Anna Schumaker
4ed36c79df
lib: Add support for looking up files from share/ocarina/
...
I replace the /proc/self/exe method with a simple hard-coded string.
This means that binaries run from the source directory need to be run
from the root of the source directory.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-15 10:12:55 -04:00
Anna Schumaker
f2575d9799
tests: Add a test for lib :: init()
...
This just checks that the deck was initialized. To really be complete,
it should really check that ALL core libraries are initialized.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-14 20:43:54 -04:00
Anna Schumaker
c88746d2da
tests: Create a core/ directory
...
I move all of the core tests into the core/ directory to keep them
together. Gui unit tests will be put in new directories.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-14 11:15:21 -04:00
Anna Schumaker
00ff9cd08f
playlist: Fix a null pointer dereference in init()
...
This happens if we try to use the Banned playlist before it exists in
the database.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-06 08:21:56 -04:00
Anna Schumaker
9e3399b619
deck: Reintroduce deck :: get()
...
This function turned out to be really useful for the gui.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-05 11:05:19 -04:00
Anna Schumaker
eb777c04f1
Add missing deck file for tests
...
The .gitignore was set up to ignore this, so it was never included.
Oops.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-05 10:42:41 -04:00
Anna Schumaker
12c6f18540
Remove old deck test
...
This should have been removed a long time ago ...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-05 10:35:14 -04:00
Anna Schumaker
95064e4537
Rename lib/ -> core/
...
I plan to introduce a new lib/ that sits between the gui and the backend
files (similar to how glibc sits between the kernel and userspace).
This gets the rename out of the way before I change my mind again.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-05 10:21:32 -04:00
Anna Schumaker
87af56ba85
Header file roundup
...
Create include/lib/ and include/gui/. Move header files into the
appropriate directory.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-04 13:59:42 -04:00
Anna Schumaker
1bfa299e08
audio: Update the code to match the design
...
This patch reworks the unit test using the TestDriver audio driver. I
also recode the audio layer to match the design and drastically clean up
the code.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-01 17:53:41 -04:00
Anna Schumaker
b8ea2c989d
deck: Fix a segfault when calling next()
...
This can only be hit when the tagdb has no tracks in it, since you can't
add a NULL pointer to the recent queue.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-01 09:39:30 -04:00
Anna Schumaker
1cacbf51e7
driver: Move Gst code into the GstDriver
...
This would have to happen eventually. Might as well do it now!
I also updated the TestDriver test to match the changes I had to make.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-31 21:11:57 -04:00
Anna Schumaker
edc4a2f4ee
driver: Create an audio driver class
...
The driver is used to select between gstreamer playback and a fake
playback mode used only when testing.
Currently the GSTDriver has empty functions. It will be implemented as
the audio.cpp file is updated.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-31 13:27:20 -04:00
Anna Schumaker
f8f389c7ed
deck: Create TempQueues
...
TempQueues create a way to trigger deck :: write() whenever a queue
changes. This means higher layers don't need to remember to save after
changes!
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-31 09:11:04 -04:00
Anna Schumaker
211d240484
deck: Rework the deck code
...
I update the unit test and redo much of the code to be cleaner and make
more sense. One big improvement is that the recently played queue will
now be managed by the deck.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-26 22:20:55 -04:00
Anna Schumaker
a385727206
tests: Move sample files into the Data/ directory
...
Keeping separate directories for all of these files isn't the most
obvious way to do things. Instead, move everything into the same
directory.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-26 19:12:14 -04:00
Anna Schumaker
a96e6f6f2d
file: Set version number on a per-file basis
...
I'm about to bump the version number for the deck layer, so it makes
senes that different files need different version numbers.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-26 12:14:28 -04:00
Anna Schumaker
e4db93b8e2
playlist: Remove banned songs from the library queue
...
And put them back when they are unbanned.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-24 13:32:03 -04:00
Anna Schumaker
208e53c7e9
library: Update the code and unit test
...
Lots of changes here! I switched from using track and library ids to
passing pointers, renamed some functions, and made the code much
cleaner.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-24 12:48:47 -04:00
Anna Schumaker
59220cc2ce
tags: Add Track->played()
...
This function is called to increment play count and set "date last
played" variables. Moving this into the Track class lets me remove an
internal callback and a few other unnecessary functions.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-23 21:53:36 -04:00
Anna Schumaker
53f0c2a6aa
testing: Add gcov and cppcheck tests
...
It doesn't hurt to run even more tests on the code!
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-20 17:25:03 -04:00
Anna Schumaker
11df56139d
playlist: Update the design and unit test
...
I updated the code to better match how I use playlists and to make sure
that everything is tested.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-18 21:34:14 -04:00
Anna Schumaker
f6306faac8
queue: Remove old unit test
...
Also take a few moments to update the DESIGN.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-18 14:46:14 -04:00
Anna Schumaker
b9e5ce3356
queue: Update reand and write code
...
And update the unit test at the same time.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-18 14:39:41 -04:00
Anna Schumaker
869d67558e
queue: Update the track_selected code
...
I also put in other fixes to the unit test to make test_equal work.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-18 14:25:29 -04:00
Anna Schumaker
9a5caa29b3
queue: Update sorting code
...
I now have a single function rather than 4 individual functions. The
code is cleaner, and I've added it to the unit test.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-18 14:12:16 -04:00
Anna Schumaker
124f275ffd
queue: Update the next() function
...
I also added in code for testing.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-18 11:17:32 -04:00
Anna Schumaker
6dc8bf7329
random: Use a different RNG for testing
...
This RNG is more predictable, which makes it great for testing.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-18 11:10:29 -04:00
Anna Schumaker
7aa5f22777
Add valgrind support to testing
...
To help find memory leaks!
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-14 17:49:03 -04:00
Anna Schumaker
bcfa735dd7
queue: Fix up the length_str() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-11 19:56:17 -04:00
Anna Schumaker
0cc8072159
queue: Update the updated() function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-11 18:33:13 -04:00
Anna Schumaker
5520472f6f
queue: Test and clean up the delete track function
...
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-11 13:37:15 -04:00
Anna Schumaker
38ae4ba0f3
queue: Fix up queue :: add()
...
It should take a Track pointer, rather than a track_id. This makes the
code easier to work with.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-11 10:41:50 -04:00
Anna Schumaker
69f4d21c04
tests: Create a fake library
...
This is loaded for testing so we don't have to scan a directory for each
test.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-11 10:20:06 -04:00