library: Create a function for enabling and disabling paths

I also update the deck tests, since this is where changes will show up.

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
This commit is contained in:
Anna Schumaker 2014-01-18 12:32:41 -05:00 committed by Anna Schumaker
parent ae91d33baa
commit f51ba3e3ec
7 changed files with 89 additions and 0 deletions

View File

@ -179,6 +179,10 @@ Library: (lib/library.cpp)
Update all library paths.
Trigger the on_library_update() callback for each path.
void library :: set_enabled(unsigned int id, bool enabled);
Either enable or disable a library path. Trigger
on_library_track_del() for each track disabled this way.
struct Song library :: lookup(track_id);
Fill out a Song structure for the provided track_id.
Throw -EEXIST if there is no track mapping to track_id.

View File

@ -121,6 +121,7 @@ namespace library
void del_path(unsigned int);
void update_path(unsigned int);
void update_all();
void set_enabled(unsigned int, bool);
void lookup(unsigned int, library :: Song *);
Library *lookup_path(unsigned int);
void import();

View File

@ -510,6 +510,23 @@ void library :: update_all()
update_path(i);
}
void library :: set_enabled(unsigned int id, bool enabled)
{
unsigned int t;
library_db[id].enabled = enabled;
library_db.save();
for (t = track_db.first(); t < track_db.num_rows(); t = track_db.next(t)) {
if (track_db[t].library_id == id) {
if (enabled)
get_callbacks()->on_library_track_add(t);
else
get_callbacks()->on_library_track_del(t);
}
}
}
void library :: lookup(unsigned int id, library :: Song *song)
{
if (id >= track_db.num_rows())

View File

@ -133,6 +133,15 @@ int main(int argc, char **argv)
test_4();
test_5();
print("Disabling library path\n");
library :: set_enabled(0, false);
print("Library size: %u\n", deck :: get_library_pq()->size());
print("Enabling library path\n");
library :: set_enabled(0, true);
print("Library size: %u\n", deck :: get_library_pq()->size());
print("Deleting library path\n");
library :: del_path(0);
while (idle :: run_task());
print("Library size: %u\n", deck :: get_library_pq()->size());

View File

@ -125,4 +125,9 @@ Reading back playqueue deck
deck[0] = Playqueue { size = 16, flags = 0 }
deck[1] = Playqueue { size = 19, flags = 1 }
deck[2] = Playqueue { size = 15, flags = 3 }
Disabling library path
Library size: 0
Enabling library path
Library size: 150
Deleting library path
Library size: 0

View File

@ -262,6 +262,24 @@ void test_7()
library :: import();
run_idle_tasks();
library :: print_db(library :: DB_LIBRARY);
print("\n");
}
/* Test disabling libraries */
void test_8()
{
library :: reset();
test_add_dir("8a", "/tmp/library/0", true);
print("\n");
library :: set_enabled(0, false);
library :: print_db(library :: DB_LIBRARY);
library :: set_enabled(0, true);
library :: print_db(library :: DB_LIBRARY);
library :: set_enabled(0, false);
library :: print_db(library :: DB_LIBRARY);
library :: set_enabled(0, true);
library :: print_db(library :: DB_LIBRARY);
}
@ -282,5 +300,6 @@ int main(int argc, char **argv)
test_5();
test_6();
test_7();
test_8();
return 0;
}

View File

@ -2668,3 +2668,37 @@ Valid rows: 3
db[0] = /tmp/library/2 (enabled), size = 150
db[1] = /tmp/library/3 (enabled), size = 150
db[2] = /tmp/library/4 (enabled), size = 150
Test 8a: Added library 0: /tmp/library/0
PASSED
Updated library 0: /tmp/library/0 (size: 10)
Updated library 0: /tmp/library/0 (size: 20)
Updated library 0: /tmp/library/0 (size: 30)
Updated library 0: /tmp/library/0 (size: 40)
Updated library 0: /tmp/library/0 (size: 50)
Updated library 0: /tmp/library/0 (size: 60)
Updated library 0: /tmp/library/0 (size: 70)
Updated library 0: /tmp/library/0 (size: 80)
Updated library 0: /tmp/library/0 (size: 90)
Updated library 0: /tmp/library/0 (size: 100)
Updated library 0: /tmp/library/0 (size: 110)
Updated library 0: /tmp/library/0 (size: 120)
Updated library 0: /tmp/library/0 (size: 130)
Updated library 0: /tmp/library/0 (size: 140)
Updated library 0: /tmp/library/0 (size: 150)
Allocated rows: 1
Valid rows: 1
db[0] = /tmp/library/0 (enabled), size = 150
Allocated rows: 1
Valid rows: 1
db[0] = /tmp/library/0 (disabled), size = 150
Allocated rows: 1
Valid rows: 1
db[0] = /tmp/library/0 (enabled), size = 150
Allocated rows: 1
Valid rows: 1
db[0] = /tmp/library/0 (disabled), size = 150
Allocated rows: 1
Valid rows: 1
db[0] = /tmp/library/0 (enabled), size = 150