From 21c80ea1f92a7ef8aac412ac4975b8bc941db078 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Sun, 2 Feb 2014 14:20:56 -0500 Subject: [PATCH] lib: Import ban status from Ocarina 5.x Now that I have a banned playlist working I can remember the ban status easier. Signed-off-by: Anna Schumaker --- include/callback.h | 1 + lib/callback.cpp | 1 + lib/library.cpp | 7 +++++-- lib/playlist.cpp | 7 +++++++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/include/callback.h b/include/callback.h index 88931fdb..2a3a41e4 100644 --- a/include/callback.h +++ b/include/callback.h @@ -25,6 +25,7 @@ struct Callbacks { void (*on_library_track_add)(unsigned int); void (*on_library_track_del)(unsigned int); void (*on_library_track_updated)(unsigned int); + void (*on_library_import_ban)(unsigned int); /* Playlist callbacks */ void (*on_playlist_ban)(unsigned int); diff --git a/lib/callback.cpp b/lib/callback.cpp index 1647eefd..7d2394f5 100644 --- a/lib/callback.cpp +++ b/lib/callback.cpp @@ -27,6 +27,7 @@ static struct Callbacks callbacks = { .on_library_track_add = no_op, .on_library_track_del = no_op, .on_library_track_updated = no_op, + .on_library_import_ban = no_op, .on_playlist_ban = no_op, .on_playlist_unban = no_op, diff --git a/lib/library.cpp b/lib/library.cpp index 103625a7..db4f8013 100644 --- a/lib/library.cpp +++ b/lib/library.cpp @@ -397,7 +397,7 @@ static void do_import_track(File &f, unsigned int lib_id) { struct ImportData data; std::string artist, album, genre; - unsigned int artist_id, album_id, genre_id, track_id, year, tmp; + unsigned int artist_id, album_id, genre_id, track_id, year, banned, tmp; data.filepath = f.getline(); data.title = f.getline(); @@ -409,7 +409,7 @@ static void do_import_track(File &f, unsigned int lib_id) f.getline(); /* lenstr */ f >> tmp /* id */ >> year >> data.track >> data.count; f >> data.last_day >> data.last_month >> data.last_year >> data.length; - f >> tmp >> tmp >>tmp >> tmp; /* bitrate, sample, channels, banned */ + f >> tmp >> tmp >>tmp >> banned; /* bitrate, sample, channels, banned */ f.getline(); /* get rest of line */ artist_id = artist_db.insert(library :: AGInfo(library :: DB_ARTIST, artist)); @@ -423,6 +423,9 @@ static void do_import_track(File &f, unsigned int lib_id) filter::add(album_db[album_id].name, track_id); filter::add(track_db[track_id].title, track_id); get_callbacks()->on_library_track_add(track_id); + + if (banned == true) + get_callbacks()->on_library_import_ban(track_id); } static void do_import_library(std::string &s) diff --git a/lib/playlist.cpp b/lib/playlist.cpp index 8c64db16..144f279c 100644 --- a/lib/playlist.cpp +++ b/lib/playlist.cpp @@ -11,6 +11,11 @@ static Database playlist_db("playlist.db"); static Playqueue playlist_pq(PQ_ENABLED); static std::string cur_pq; +static void import_ban_track(unsigned int track_id) +{ + playlist :: add("Banned", track_id); +} + void playlist :: init() { std::set ids; @@ -21,6 +26,8 @@ void playlist :: init() playlist_pq.add_sort(SORT_TRACK); playlist_pq.set_flag(PQ_NEVER_SORT); + get_callbacks()->on_library_import_ban = import_ban_track; + playlist_db.load(); ids = get_tracks("Banned");