Queues are read from disk *before* libraries are read, meaning we can't
calculate the length right away. But if we don't calculate the length,
then the first time a track is removed from a queue the length will be
set to (0 - track_length). This is wrong.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
I only had config so I could easily refer to the original Sconstruct. I
don't need that anymore =)
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
Calculating through the iterator may lead to unexpected problems. We
already know the id of every database entry, so we might as well use it
directly.
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
If a title began with a number then the number would be read as part of
the length, adding extra time. So a track with length "100" and title
"42 abcde" would be read back as having length "10042" and title "abcde"
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
When items are deleted from a database we write out a line representing
"invalid entry". This patch changes the invalid entry line from "0 " to
"0"
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
- Double check that track->valid == true before notifying the UI that
there is a new track.
- Use primary_key() instead of manually calculating the full filepath.
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
I found that databases were always decrementing _size when remove() was
called. This patch fixes the bug by checking if the entry is valid
before removal.
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
Recalculating this doesn't change the runtime significantly, so we might
as well save some disk space.
Signed-off-by: Anna Schumaker <anna@ocarinaproject.net>
This will let me set up a Track class that has pointers to the
corresponding artist, album and genre information without needing to
know their IDs directly. Having this information available means I
won't need to keep a "join struct" when doing lookups - instead I can
return a pointer to a Track class that already knows everything.
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
I didn't have any changes to make to the IdleQueue itself, but I did
need to update the unit test and reword a few things in the design.
Signed-off-by: Anna Schuamker <schumaker.anna@gmail.com>
- filter :: add() now returns the lowercased text
- Don't cache lowercased strings
- Remove functions depending on CONFIG_TEST
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
The SimPL was essentially a reworded GPL v2 license, so we might as well
have the original GPL v2 text.
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
I updated the design and rewrote the unit tests. This creates something
more consistent with how I ended up using the index.
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
I add:
- Autosaving option
- Real iterators
- Better accessor functions
The new design and unit test also allows me to remove the 300,000+ line
"database.good" file that the old tests were based on.
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
Needing to use throw / catch was getting in the way. Instead, check for
a boolean return value.
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
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>
I was double clicking tracks in the gui, and they were removed from the
playqueue! This patch fixes that.
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>