Commit Graph

361 Commits

Author SHA1 Message Date
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
1ec9d830cc gui: Remove references to the on_remove() notification
It no longer exists.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-04-09 09:28:32 -04:00
Anna Schumaker
9ebb31e09b gui: Remove usage of Q_NOTIFY_REMOVE
The notification no longer exists, and the flag will soon be removed.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-04-09 09:27:32 -04:00
Anna Schumaker
f15ed8635a gui: Disable Q_NOTIFY_REMOVED for temporary queues
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>
2015-04-09 09:26:26 -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
e4ea994728 gui: QueueTabs should implement the on_remove() notification
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-04-04 10:21:15 -04:00
Anna Schumaker
44c702a302 gui: Implement on_track_updated() in the Tab class
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-04-03 20:59:01 -04:00
Anna Schumaker
3b206948e1 gui: Implement on_track_removed() in the Tab class
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-04-03 12:27:32 -04:00
Anna Schumaker
67228ef8b1 gui: Turn the Tab class into a QNotifier
Now we can respond to notifications directly.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-04-03 12:19:18 -04:00
Anna Schumaker
5026e80eab gui: Fix setting autopause count
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>
2015-02-04 08:39:40 -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
ed43fd3689 More utos() cleanups
I found a few other places where I can use utos() instead of
stringstreams.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-27 14:03:12 -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
e47eb69859 gui: Set a proper application_id
This silences a warning from gtk.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-26 17:13:09 -05:00
Anna Schumaker
5045e3a8c8 gui: Remove unnecessary #includes
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-22 08:19:45 -05:00
Anna Schumaker
ec83acbdfe gui: Initialization cleanups
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-21 09:08:45 -05:00
Anna Schumaker
8b4d99c50c gui: Rename main.cpp to ocarina.cpp
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-21 08:44:38 -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
dc3e770c28 gui: Move GtkBuilder object into the gui
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-21 08:29:59 -05:00
Anna Schumaker
7f6f6395d7 gui: Schedule timeout function from gstreamer code directly
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-21 08:10:59 -05:00
Anna Schumaker
4cae9aaf2b gui: Have collection manager handle keypresses directly
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-21 08:06:10 -05:00
Anna Schumaker
2824ac33eb gui: Start idle callbacks directly from the collection manager
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-21 08:03:48 -05:00
Anna Schumaker
0f61114e15 gui: Remove unused connect_button() function
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-20 08:48:32 -05:00
Anna Schumaker
f5ed438735 gui: Move the queue TreeModel class into the gui code
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-20 08:46:45 -05:00
Anna Schumaker
c61dca7504 gui: Various collection manager cleanups
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-19 11:43:27 -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
1935cf9c5e gui: Various playlist cleanups
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-17 11:27:32 -05:00
Anna Schumaker
4bfdb2d0d4 gui: Merge lib/plist.cpp back into gui/plist.cpp
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>
2015-01-17 10:41:04 -05:00
Anna Schumaker
b4db3ba98f gui: Put exported gst functions in a new namespace
I intend to put most gui functions in their own namespaces eventually.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-17 10:19:31 -05:00
Anna Schumaker
6a5eaa32f8 gui: Preserve "is playing" status when banning tracks
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>
2015-01-16 08:22:01 -05:00
Anna Schumaker
ea49b374ee gui: Remove gui.cpp
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>
2015-01-15 09:40:17 -05:00
Anna Schumaker
4643a5ff22 gui: Move pause count widgets into gst.cpp
These values affect audio playback, so they should go with the other
audio widgets.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-15 09:35:33 -05:00
Anna Schumaker
d299bc464c gui: Move ban and favorite buttons into playlist code
These buttons directly change the playlists, so let's handle them there.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-15 09:08:02 -05:00
Anna Schumaker
b940fe710c gui: Rearrange playlist tab
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>
2015-01-15 08:33:20 -05:00
Anna Schumaker
300acde068 gui: Set artist, album, title, and duration from gst code
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-14 20:16:28 -05:00
Anna Schumaker
6fec8876a9 gui: Rename position and duration widgets
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-14 19:57:15 -05:00
Anna Schumaker
ed88bb08bd gui: Move toggle function to gst code
This lets me remove the controls.cpp and controls.h files.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-14 19:50:26 -05:00
Anna Schumaker
434b278b61 gui: Move position tracking into gst code
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-14 19:50:25 -05:00
Anna Schumaker
e539a2d208 gui: Move remaining buttons into gstreamer code
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>
2015-01-14 19:19:50 -05:00
Anna Schumaker
694d3f0316 build: Add gstreamer package from gui/Sconscript
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-01-02 10:31:14 -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
50147ef070 gui: Handle pause counts from the GSTDriver
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>
2014-12-20 15:27:18 -05:00
Anna Schumaker
cd8c76e1b2 gst: Move play and pause button handling into gst code
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>
2014-12-20 15:02:17 -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
b633f3fa0c gst: Update the "now playing" fields through the GST driver
This lets me remove the on_track_loaded() callback function by handling
this event directly.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-20 12:05:22 -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
9aaa8649ce gst: More driver cleanups
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-20 11:49:22 -05:00
Anna Schumaker
3da3c8aeea gst: Move the on_message() function out of the driver
This function doesn't use anything in the driver class anymore, so it
can be removed.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-20 11:34:29 -05:00
Anna Schumaker
955129edce gst: Various driver cleanups
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-20 11:16:19 -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
882da67480 gst: Begin reworking gst driver
I removed the need for an overridden constructor and destructor.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-12-20 10:47:17 -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
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
1d2b52cc98 driver: Move the GST driver into the gui
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>
2014-12-19 14:25:59 -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
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
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
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
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
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
1be4c57244 gui: Use Gtk::Application() instead of Gtk::Main()
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>
2014-10-29 18:08:28 -04:00
Anna Schumaker
5eeebe7854 gui: Move idle function into the collection manager
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>
2014-09-12 08:16:26 -04:00
Anna Schumaker
0b5478c591 lib: Move idle function setup into lib/
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-09-12 08:07:12 -04:00
Anna Schumaker
bc5e53a423 gui: Store pointers to play and pause buttons
We use these every half-second, so let's not waste time looking them up
every call.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-09-11 08:28:23 -04:00
Anna Schumaker
a2987c2952 gui: Call on_track_loaded() during startup
Also move the controls_init() function to be with other init()
functions.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-09-11 08:23:23 -04:00
Anna Schumaker
8152327f65 gui: Move o_seek() into controls.cpp
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-09-11 08:16:36 -04:00
Anna Schumaker
5e7a25e007 gui: Store position and progress widgets
Now we don't need to keep looking them up, and the code looks a little
bit cleaner =)

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-09-11 08:09:57 -04:00
Anna Schumaker
62cdc4c909 gui: Move remaning window setup into window.cpp
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-09-11 08:03:57 -04:00
Anna Schumaker
acdeb785f5 gui: Move window keypress handling to window.cpp
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-09-11 08:01:08 -04:00
Anna Schumaker
253898e9b5 gui: Set tab size and runtime on startup
This used to happen by itself, but changing the order of how tabs are
initialized broke this.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-09-11 08:01:08 -04:00
Anna Schumaker
9b98788106 gui: Begin breaking out window code
I think this will help with maintainability.  We'll see ...

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-09-11 08:01:08 -04:00
Anna Schumaker
df0d1496de lib: Create a schedule() function
This lets me clean up some of the code in controls.cpp

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-09-11 08:01:07 -04:00
Anna Schumaker
1c437c4957 gui: Move init() steps into controls.cpp
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-09-11 08:01:07 -04:00
Anna Schumaker
922830a2ab gui: Move o_next() into the controls.cpp file
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-09-11 08:01:06 -04:00
Anna Schumaker
78624a6d98 gui: Fix up how the gui pauses
I make it look more like o_play().

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-09-09 08:28:18 -04:00
Anna Schumaker
d68d5f2b40 gui: Create o_play() for handling the play function
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>
2014-09-08 17:21:40 -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
41506f3177 gui: Remove banned songs from Collection when re-enabling
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>
2014-08-17 17:17:29 -04:00
Anna Schumaker
cfa61fa816 gui: Play next song after banning
If the user tells us they don't like the current song then we shouldn't
keep playing it!

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-08-17 17:01:52 -04:00
Anna Schumaker
2890819cd3 playlist tab cleanups
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-07-27 11:52:36 -04:00
Anna Schumaker
160d2ac3be plist: Move more playlist functions into lib/
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-07-27 11:41:40 -04:00
Anna Schumaker
97a8646977 plist: Move liststore into lib/
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-07-27 11:25:12 -04:00
Anna Schumaker
09af8d81d2 model: Move the custom TreeModel from gui/ to lib/
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-29 10:48:23 -04:00
Anna Schumaker
76f0b7b55f lib: Move keyval parsing into lib/
I'll eventually add in checks for keypad vs top row number keys.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-22 11:42:01 -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
fdb31916a6 gui: Change chooser directory when selected path is changed
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-22 10:41:46 -04:00
Anna Schumaker
2094227f91 collection_mgr: Rename functions
Since these are all static functions, I don't need the _collection
part.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-22 10:22: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
42ec504b90 gui: Collection manager cleanups
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-21 12:44:22 -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
5b3f8b13e0 lib: Initialize core libraries from a new middle layer
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>
2014-06-14 20:06:07 -04:00
Anna Schumaker
ec2bd92bef gui: collection manager fixes
- Fill out the list of library paths
- Update size during scan

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-06 09:20:50 -04:00
Anna Schumaker
43c8130ecc gui: Fix adding tracks to an existing queue
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-05 11:05:40 -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
72a51fb78f gui: Properly create queue tabs
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>
2014-06-04 09:35:41 -04:00
Anna Schumaker
06b36afec6 gui: Updates for the recent audio changes
Now the gui compiles again, yay!

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-06-01 17:59:27 -04:00
Anna Schumaker
36322a6ff8 Update code to match new deck layout
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>
2014-05-26 22:33:16 -04:00
Anna Schumaker
9ba4dbc218 Updates for recent library changes
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>
2014-05-24 13:07:54 -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
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
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
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
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
24fe8e7ee2 queue: Fix compile errors related to recent changes
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2014-05-11 09:20:42 -04:00
Anna Schumaker
5ff68140b5 Rip out import stuff
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>
2014-04-10 08:42:53 -04:00
Anna Schumaker
1c743239a0 Rename playqueue -> queue
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:08 -04:00
Anna Schumaker
a14f6145a5 Switch over to the new tagdb implementation
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-09 21:10:08 -04:00
Anna Schumaker
2960b72967 audio: Save and load current trackid
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
2014-04-06 19:57:06 -04:00
Anna Schumaker
959cac0fe1 Database: Update design for database entries
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>
2014-04-06 19:57:05 -04:00
Anna Schumaker
2e727ed704 gui: Add a switch to enable / disable queues
I also select the first enabled queue during startup.

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:04 -04:00
Anna Schumaker
1394aaf37c gui: Show the first tab on startup
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:04 -04:00
Anna Schumaker
9b0499b3ce gui: Add to queue menu items
This commit finishes my tab rewrite.

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:04 -04:00
Anna Schumaker
3c8e967895 gui: Connect a menu item for creating new queues
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:04 -04:00
Anna Schumaker
a529d569f6 gui: Implement add to {favorites, banned} menu items
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:04 -04:00
Anna Schumaker
2abc498fde gui: Rename wires.cpp
I think gui.cpp is a better name, since this file controls most of the
random gui components.

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:04 -04:00
Anna Schumaker
968d723ec7 gui: Add a window icon
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:04 -04:00
Anna Schumaker
5b34b11dd8 gui: Move ocarina6.glade to share/ocarina/
This directory will be copied directly into /usr/ during an install.

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:04 -04:00
Anna Schumaker
6f7ce86091 gui: Remove some old code
All that is left in the giant commented out section is right click menu
stuff.

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:04 -04:00
Anna Schumaker
ff925cf573 gui: Add songs to favorite playlist
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:04 -04:00
Anna Schumaker
d83609bc21 gui: Delete key removes tracks from queues
This was the behavior before I started my rewrite.

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:04 -04:00
Anna Schumaker
463409acdf gui: Playlists respond to the delete key
This key is used to remove tracks from a playlist.

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:04 -04:00
Anna Schumaker
6c8ef37b2a gui: Ban tracks with the "delete" key
Press the delete key on the collection tab to ban all selected tracks.

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:04 -04:00
Anna Schumaker
cb59febd1c gui: Reenable sorting
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>
2014-04-06 19:57:04 -04:00
Anna Schumaker
1da8c52b0c gui: Remove old glade file
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:04 -04:00
Anna Schumaker
58423c92e5 gui: Use common code for adding tracks to queue
Called both for adding and for creating a new queue

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:04 -04:00
Anna Schumaker
f0006873b6 gui: Use number keys to add tracks to a queue
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:04 -04:00
Anna Schumaker
196088dcfa gui: Add columns to a queue treeview
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:04 -04:00
Anna Schumaker
871914ea90 Clean up the build system
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>
2014-04-06 19:57:03 -04:00
Anna Schumaker
bfcc94de21 gui: Generic toggle button function
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:03 -04:00
Anna Schumaker
73c4de13be gui: Update the repeat button
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:03 -04:00
Anna Schumaker
34de6874ff gui: Queue tabs now have a search bar
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:03 -04:00
Anna Schumaker
83a2908eb6 gui: Remove some reimplemented code
This helps to clean out tab.cpp so I can keep track of what still needs
to be done.  I also adjusted some of the spacing and section divisions.

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:03 -04:00
Anna Schumaker
5acf8239c8 gui: Make sure queue tabs are removed from the notebook
This appears to happen automatically, but appearances can be deceiving.
Remove pages anywa just to be safe.

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:03 -04:00
Anna Schumaker
eb5a65069a gui: update tab reordering
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:03 -04:00
Anna Schumaker
587eacfdd4 gui: Reactivate the close queue tab button
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:03 -04:00
Anna Schumaker
d465c2e894 gui: Begin creating playqueue tabs
I've been putting this off for a while since it seemed like a lot of
work.  Time to get it done!

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:03 -04:00
Anna Schumaker
6ecb8f6b7f gui: Reactivate the "slash" keyboard shortcut
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:03 -04:00
Anna Schumaker
697c07e2df gui: Update the track changed callback
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:03 -04:00
Anna Schumaker
3654644b1c gui: Update the row_activated signal
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:03 -04:00
Anna Schumaker
99e849a106 gui: Set the runtime label for each tab
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:03 -04:00
Anna Schumaker
4ce08ef22e gui: Begin yet another tab framework
This one is based on inheritance, and I think it will be the best way to
create several tab types that do things just slightly differently.

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
2014-04-06 19:57:03 -04:00