I'm going to want this on all tab pages, so let's just add this to the
treeview widget definition.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This should help clean up the code a bit, especially once I convert all
queues to load with the template files.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
The QueueView doesn't contain too much in terms of code, but the
corresponding QueueView.ui file lets me remove a lot of unnecessary
stuff from temporary queue creation!
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
I'm going to have a lot of queue-related files soon, so let's make
things easier by keeping everything in a new directory.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This greatly improves usability while searching, since we no longer have
to refilter the song list for every key press.
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
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>
Using this notification was causing segmentation faults when Ocarina was
closed with at least one temporary queue. I can handle everything I
need directly in the GUI without problems, so this notification really
isn't necessary.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
Once the check box was enabled, we were never setting the count again.
This means that changing pause count from 1 to 2 did not change the
count in the backend.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
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>
The lib/ experiment made the gui code a little more complicated than I
was expecting, so I'm going to begin merging everything back into gui/
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
Just calling audio :: next() will advance to the next song, but won't
change if we're playing music or not. I think this is what we want to
do when banning tracks.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This file doesn't do anything anymore, so move the init functions into
main.cpp and remove the file.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
Other files in the gui implement their classes directly, rather than
making extra functions. Let's do that here, too.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
These buttons directly affect audio playback, so let's move them with
the rest of the audio buttons.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
I think it makes sense to handle this directly from the driver, rather
than going through a callback.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
I can handle these widgets directly from within the gst driver. I think
this is easier (and more straightforward) than handling this in a
separate file.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
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>
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>
This is a straight copy-and-paste of the header file and the code
implementing it. I intent to clean this up with future patches.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
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>
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>
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>
Gtk::Main() is deprecated, and causes several warnings to show up when
closing Ocarina. I guess it's time to switch to Gtk::Application()!
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
The collection manager is the only thing that uses the idle queue, so
let's keep all this code together.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This calls the audio :: play() function, rather than having the button
call into the audio layer directly. With this patch, the on_play()
callback is unused.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
I wasn't doing this before, so banned songs were showing up in the
collection list again. I think this is kind of an ugly fix, though.
Perhaps there is a better way to do it?
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
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>
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>
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>
My hope is that putting lib/ between core/ and gui/ will help clean up
gui code, since everything will no longer be in a single place.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
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>
Changes to the deck removed the on_pq_created() callback that we looked
for to create new tabs. This patch creates tabs correctly.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This patch actually breaks a bunch of things, but I just want to be done
with the deck changes for now. I'll go back and fix things before
releasing!
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This fixes the gui, deck, and audio code due to the library changes I
just did.
NOTE: Library updating callbacks have been disabled in the gui.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
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>
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>
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>
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>
I only needed this to make the jump from Ocarina 5.10 -> Ocarina 6.0.
It's not needed anymore, now that 6.0 is out.
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
I changed primary_key() into a function since it is only called once,
and there is no point in using more mmemory than I need to. I also
created a basic unit test for everything that database entries are
supposed to do.
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
This time I don't keep a global "sorting count". Instead, this count
belongs to individual tabs so flipping between them quickly could
display different sorting fields.
Signed-off-by: Anna Schumaker <schuamker.anna@gmail.com>
I'm taking a break from gui code to clean up the build system and update
my unit tests. This patch updates how code is built, and reworks my
"print" test to test version number instead.
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>