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>
This commit is contained in:
Anna Schumaker 2014-12-02 08:16:22 -05:00
parent 2394e46fb7
commit c7fe5b18d5
21 changed files with 72 additions and 136 deletions

View File

@ -80,7 +80,7 @@ void audio :: init(int *argc, char ***argv)
f_cur_track.open(OPEN_READ);
f_cur_track >> id;
f_cur_track.close();
audio :: load_track(tagdb :: lookup(id));
audio :: load_track(tags :: get_track(id));
}
}

View File

@ -7,12 +7,12 @@
#include <core/deck.h>
#include <core/library.h>
#include <core/playlist.h>
#include <core/tags.h>
#include <core/tags/tags.h>
void core :: init(int *argc, char ***argv)
{
tagdb :: init();
tags :: init();
library :: init();
playlist :: init();
deck :: init();

View File

@ -109,23 +109,21 @@ static void scan_path(struct scan_info &scan)
name = g_dir_read_name(dir);
}
tagdb :: commit();
tags :: commit_track_db();
}
static void validate_library(Library *&library)
{
Track *track;
Database<Track>::iterator it;
Database<Track> *db = &tagdb :: get_track_db();
for (it = db->begin(); it != db->end(); it = db->next(it)) {
track = *it;
if (track->library() != library)
for (unsigned int i = 0; i < tags :: track_size(); i++) {
track = tags :: get_track(i);
if (!track || (track->library() != library))
continue;
if (g_file_test(track->path().c_str(), G_FILE_TEST_EXISTS) == false) {
library_q.del(track);
tagdb :: remove_track(track->index());
tags :: remove_track(track);
}
}
}
@ -138,14 +136,14 @@ static void validate_library(Library *&library)
void library :: init()
{
Database<Track>::iterator it;
Database<Track> *db = &tagdb :: get_track_db();
Track *track;
library_q.load();
for (it = db->begin(); it != db->end(); it = db->next(it)) {
if ((*it)->library()->enabled())
library_q.add(*it);
for (unsigned int i = 0; i < tags :: track_size(); i++) {
track = tags :: get_track(i);
if (track && (track->library()->enabled()))
library_q.add(track);
}
}
@ -166,7 +164,8 @@ void library :: remove(Library *library)
{
if (library) {
set_enabled(library, false);
tagdb :: remove_library(library->index());
tags :: remove_library_tracks(library);
tags :: remove_library(library);
}
}
@ -196,20 +195,20 @@ void library :: update_all()
void library :: set_enabled(Library *library, bool enabled)
{
Database<Track>::iterator it;
Database<Track> *db = &(tagdb :: get_track_db());
Track *track;
if (!library || (library->enabled() == enabled))
return;
library->set_enabled(enabled);
for (it = db->begin(); it != db->end(); it = db->next(it)) {
if ((*it)->library() == library) {
for (unsigned int i = 0; i < tags :: track_size(); i++) {
track = tags :: get_track(i);
if (track && (track->library() == library)) {
if (enabled)
library_q.add(*it);
library_q.add(track);
else
library_q.del(*it);
library_q.del(track);
}
}
}

View File

@ -25,7 +25,7 @@ public:
del((unsigned)0);
for (it = ent->begin(); it != ent->end(); it++)
add(tagdb :: lookup(*it));
add(tags :: get_track(*it));
}
};
@ -47,7 +47,7 @@ void playlist :: init()
return;
for (it = ent->begin(); it != ent->end(); it++)
library :: get_queue()->del(tagdb :: lookup(*it));
library :: get_queue()->del(tags :: get_track(*it));
}
bool playlist :: has(Track *track, const std::string &name)

View File

@ -41,7 +41,7 @@ void Queue :: read(File &f)
_tracks.resize(n);
for (unsigned int i = 0; i < n; i++) {
f >> id;
_tracks[i] = tagdb :: lookup(id);
_tracks[i] = tags :: get_track(id);
_length += _tracks[i]->length();
}
}

View File

@ -4,15 +4,11 @@
*/
#include <core/tags.h>
#include <core/tags/tags.h>
#include <core/filter.h>
#include <core/print.h>
#include <taglib/tag.h>
#include <taglib/fileref.h>
Database<Track> track_db("track.db", false);
/**
*
@ -20,24 +16,12 @@ Database<Track> track_db("track.db", false);
*
*/
void tagdb :: init()
{
tags :: init();
track_db.load();
}
void tagdb :: commit()
{
track_db.save();
}
Track *tagdb :: add_track(const std::string &filepath, Library *library)
{
Track *track;
TagLib :: Tag *tag;
TagLib :: AudioProperties *audio;
TagLib :: FileRef ref(filepath.c_str(), true, TagLib::AudioProperties::Fast);
std::string path = filepath.substr(library->primary_key().size() + 1);
if (ref.isNull()) {
print("WARNING: Could not read tags for file %s\n", filepath.c_str());
@ -47,40 +31,14 @@ Track *tagdb :: add_track(const std::string &filepath, Library *library)
tag = ref.tag();
audio = ref.audioProperties();
track = track_db.insert(Track(
track = tags :: add_track(
tags :: get_album(tag->album().stripWhiteSpace().to8Bit(true), tag->year()),
tags :: get_artist(tag->artist().stripWhiteSpace().to8Bit(true)),
tags :: get_genre(tag->genre().stripWhiteSpace().to8Bit(true)),
library, path,
library, filepath,
tag->title().stripWhiteSpace().to8Bit(true),
audio->length(), tag->track())
audio->length(), tag->track()
);
return track;
}
void tagdb :: remove_track(unsigned int track_id)
{
track_db.remove(track_id);
}
void tagdb :: remove_library(unsigned int library_id)
{
Database<Track>::iterator it;
for (it = track_db.begin(); it != track_db.end(); it = track_db.next(it)) {
if ((*it)->library()->index() == library_id)
track_db.remove((*it)->index());
}
tagdb :: commit();
tags :: remove_library(tags :: get_library(library_id));
}
Track *tagdb :: lookup(unsigned int track_id)
{
return track_db.at(track_id);
}
Database<Track> &tagdb :: get_track_db()
{
return track_db;
}

View File

@ -7,6 +7,7 @@
#include <core/tags/genre.h>
#include <core/tags/library.h>
#include <core/tags/tags.h>
#include <core/tags/track.h>
void tags :: init()
{
@ -14,4 +15,5 @@ void tags :: init()
tags :: init_artist_db();
tags :: init_genre_db();
tags :: init_library_db();
tags :: init_track_db();
}

View File

@ -156,6 +156,11 @@ void Track :: write(File &f)
}
void tags :: init_track_db()
{
track_db.load();
}
Track *tags :: add_track(Album *album, Artist *artist, Genre *genre,
Library *library, const std::string &filepath,
const std::string &name, unsigned int length,

View File

@ -48,7 +48,7 @@ bool CollectionTab :: on_key_press_event(const std::string &key)
tab_selected_ids(ids);
for (unsigned int i = 0; i < ids.size(); i++)
playlist :: add(tagdb :: lookup(ids[i]), "Banned");
playlist :: add(tags :: get_track(ids[i]), "Banned");
return true;
}

View File

@ -164,7 +164,7 @@ void Tab :: tab_queue_add(Queue *pq)
tab_selected_ids(ids);
for (unsigned int i = 0; i < ids.size(); i++)
pq->add(tagdb :: lookup(ids[i]));
pq->add(tags :: get_track(ids[i]));
}
bool Tab :: tab_queue_selected(bool random)
@ -194,7 +194,7 @@ bool Tab :: tab_add_to_playlist(const std::string &playlist)
tab_selected_ids(ids);
for (unsigned int i = 0; i < ids.size(); i++)
playlist :: add(tagdb :: lookup(ids[i]), playlist);
playlist :: add(tags :: get_track(ids[i]), playlist);
return true;
}

View File

@ -5,7 +5,7 @@
#ifndef OCARINA_CORE_AUDIO_H
#define OCARINA_CORE_AUDIO_H
#include <core/tags.h>
#include <core/tags/track.h>
#include <string>
/**

View File

@ -5,10 +5,6 @@
#ifndef OCARINA_CORE_TAGS_H
#define OCARINA_CORE_TAGS_H
#include <core/database.h>
#include <core/tags/album.h>
#include <core/tags/artist.h>
#include <core/tags/genre.h>
#include <core/tags/library.h>
#include <core/tags/track.h>
@ -17,12 +13,6 @@
namespace tagdb
{
/** Load tag databases from disk */
void init();
/** Write track database to disk */
void commit();
/**
* Add a track to the database
* @param filepath Filepath to be added
@ -31,31 +21,6 @@ namespace tagdb
*/
Track *add_track(const std::string &, Library *);
/**
* Remove a track from the database
* @param track_id The index of the track in the database.
*/
void remove_track(unsigned int);
/**
* Remove a library from the database.
* @param library_id The index of the library in the database.
*/
void remove_library(unsigned int);
/**
* Find a track based on track_id
* @param track_id Track id to look up
* @return A pointer to the found track, or NULL
*/
Track *lookup(unsigned int);
/**
* Call to access the track database
* @return The track database
*/
Database<Track> &get_track_db();
}
#endif /* OCARINA_CORE_TAGS_H */

View File

@ -125,6 +125,9 @@ public:
namespace tags
{
/** Called to read the track_db from disk. */
void init_track_db();
/**
* Called to create a new Track tag.
*

View File

@ -58,7 +58,7 @@ static void remove_banned_tracks()
return;
for (it = ent->begin(); it != ent->end(); it++)
library :: get_queue()->del(tagdb :: lookup(*it));
library :: get_queue()->del(tags :: get_track(*it));
}
void colmgr :: init()

View File

@ -56,7 +56,7 @@ void QueueModel::on_row_changed(unsigned int row)
void QueueModel::on_path_selected(const Gtk::TreePath &path)
{
audio :: load_track(tagdb :: lookup(path_to_id(path)));
audio :: load_track(tags :: get_track(path_to_id(path)));
queue->track_selected(path[0]);
audio :: play();
}

View File

@ -43,5 +43,5 @@ void plist :: del_path_ids(const Gtk::TreePath &path,
std::string name = plist :: get_path(path);
for (unsigned int i = 0; i < ids.size(); i++)
playlist :: del(tagdb :: lookup(ids[i]), name);
playlist :: del(tags :: get_track(ids[i]), name);
}

View File

@ -4,6 +4,7 @@
#include <core/audio.h>
#include <core/driver.h>
#include <core/library.h>
#include <core/tags/tags.h>
#include <tests/test.h>
Track *TRACK_NULL = NULL;
@ -52,7 +53,7 @@ void test_init(int argc, char **argv)
track = audio :: current_track();
test_equal(track, TRACK_NULL);
tagdb :: init();
tags :: init();
library :: init();
audio :: init(&argc, &argv);
@ -107,7 +108,7 @@ void test_track_controls()
audio :: load_track(track);
test_not_equal(audio :: current_track(), track);
track = tagdb :: lookup(0);
track = tags :: get_track(0);
audio :: seek_to(4242);
audio :: load_track(track);
test_equal(driver->is_playing(), true);

View File

@ -4,6 +4,7 @@
#include <core/callback.h>
#include <core/deck.h>
#include <core/library.h>
#include <core/tags/tags.h>
#include <tests/test.h>
static Queue *Q_NULL = NULL;
@ -18,7 +19,7 @@ static void test_init()
test_equal(deck :: next(), TRACK_NULL);
test :: cp_data_dir();
tagdb :: init();
tags :: init();
library :: init();
deck :: init();
@ -113,7 +114,7 @@ static void test_next_prev()
q0->unset_flag(Q_RANDOM);
for (unsigned int i = 0; i < 4; i++)
q0->add(tagdb :: lookup(i));
q0->add(tags :: get_track(i));
test_not_equal(q, Q_NULL);
test_equal(q->size(), (unsigned)0);

View File

@ -3,6 +3,7 @@
*/
#include <core/idle.h>
#include <core/library.h>
#include <core/tags/tags.h>
#include <tests/test.h>
static Queue *Q_NULL = NULL;
@ -16,7 +17,7 @@ static void test_init()
test_equal(q->has_flag(Q_ENABLED), true);
test_equal(q->has_flag(Q_REPEAT), true);
tagdb :: init();
tags :: init();
library :: init();
test_equal(q->size(), (unsigned)24);

View File

@ -3,6 +3,7 @@
*/
#include <core/library.h>
#include <core/playlist.h>
#include <core/tags/tags.h>
#include <tests/test.h>
static IndexEntry *IDX_NULL = NULL;
@ -22,7 +23,7 @@ static void test_init()
playlist :: init();
test :: cp_data_dir();
tagdb :: init();
tags :: init();
library :: init();
playlist :: init();
@ -52,19 +53,19 @@ static void test_add()
Queue *q = playlist :: get_queue();
Queue *l = library :: get_queue();
playlist :: add(tagdb :: lookup(5), "Banned");
playlist :: add(tags :: get_track(5), "Banned");
ent = playlist :: get_tracks("Banned");
test_equal(ent->size(), (size_t)5);
test_equal(q->size(), (unsigned)8);
test_equal(l->size(), (unsigned)19);
playlist :: add(tagdb :: lookup(16), "Favorites");
playlist :: add(tagdb :: lookup(5), "Favorites");
playlist :: add(tags :: get_track(16), "Favorites");
playlist :: add(tags :: get_track(5), "Favorites");
ent = playlist :: get_tracks("Favorites");
test_equal(ent->size(), (size_t)9);
test_equal(q->size(), (unsigned)9);
playlist :: add(tagdb :: lookup(6), "No Playlist");
playlist :: add(tags :: get_track(6), "No Playlist");
test_equal(playlist :: get_tracks("No Playlist"), IDX_NULL);
}
@ -74,18 +75,18 @@ static void test_delete()
Queue *q = playlist :: get_queue();
Queue *l = library :: get_queue();
playlist :: del(tagdb :: lookup(5), "Banned");
playlist :: del(tags :: get_track(5), "Banned");
ent = playlist :: get_tracks("Banned");
test_equal(ent->size(), (size_t)4);
test_equal(q->size(), (unsigned)9);
test_equal(l->size(), (unsigned)20);
playlist :: del(tagdb :: lookup(5), "Favorites");
playlist :: del(tags :: get_track(5), "Favorites");
ent = playlist :: get_tracks("Favorites");
test_equal(ent->size(), (size_t)8);
test_equal(q->size(), (unsigned)8);
playlist :: del(tagdb :: lookup(6), "No Playlist");
playlist :: del(tags :: get_track(6), "No Playlist");
test_equal(playlist :: get_tracks("No Playlist"), IDX_NULL);
}
@ -93,7 +94,7 @@ static void test_has()
{
test :: begin();
for (unsigned int i = 0; i < 24; i++) {
Track *track = tagdb :: lookup(i);
Track *track = tags :: get_track(i);
if (i <= 3)
check_equal(playlist :: has(track, "Banned"), true);
else
@ -103,7 +104,7 @@ static void test_has()
test :: begin();
for (unsigned int i = 0; i < 24; i++) {
Track *track = tagdb :: lookup(i);
Track *track = tags :: get_track(i);
if (i >= 16)
check_equal(playlist :: has(track, "Favorites"), true);
else

View File

@ -4,7 +4,7 @@
#include <core/callback.h>
#include <core/queue.h>
#include <core/random.h>
#include <core/tags.h>
#include <core/tags/tags.h>
#include <tests/test.h>
@ -116,7 +116,7 @@ void test_add_remove()
/* Add tracks */
test :: begin();
for (unsigned int i = 0; i < 24; i++) {
check_equal(q.add(tagdb :: lookup(i)), i);
check_equal(q.add(tags :: get_track(i)), i);
expected += 100 + (i * 10);
}
test :: success();
@ -129,7 +129,7 @@ void test_add_remove()
/* Add everything again */
test :: begin();
for (unsigned int i = 0; i < 24; i++) {
check_equal(q.add(tagdb :: lookup(i)), i + 24);
check_equal(q.add(tags :: get_track(i)), i + 24);
expected += 100 + (i * 10);
}
test :: success();
@ -142,7 +142,7 @@ void test_add_remove()
/* Test removing multiple tracks at once */
test :: begin();
for (unsigned int i = 0; i < 12; i++) {
track = tagdb :: lookup(i);
track = tags :: get_track(i);
q.del(track);
expected -= 2 * (100 + (i * 10));
}
@ -210,16 +210,16 @@ void test_updated()
/* Add tracks */
test :: begin();
for (unsigned int i = 0; i < 24; i++)
check_equal(q.add(tagdb :: lookup(i)), i);
check_equal(q.add(tags :: get_track(i)), i);
test :: success();
test :: begin();
for (unsigned int i = 0; i < 24; i++)
q.updated(tagdb :: lookup(i));
q.updated(tags :: get_track(i));
test :: success();
get_callbacks()->on_queue_track_changed = test_updated_cb2;
track = tagdb :: lookup(0);
track = tags :: get_track(0);
q.add(track);
q.add(track);
q.updated(track);
@ -229,7 +229,7 @@ void test_updated()
static void test_fill_q(TestQueue *q)
{
for (unsigned int i = 0; i < 24; i++)
q->add(tagdb :: lookup(i));
q->add(tags :: get_track(i));
}
unsigned int expected_rand[] = { 1, 4, 8, 13, 19, 3, 14, 16, 20, 2, 11, 17,
@ -374,7 +374,7 @@ void test_saving()
int main(int argc, char **argv)
{
test :: cp_data_dir();
tagdb :: init();
tags :: init();
run_test("Queue Default Constructor Test", test_default);
run_test("Queue Constructor Test", test_constructor, Q_ENABLED | Q_RANDOM);