libsaria: Remove ids from the queue

In case the user changes their mind...
This commit is contained in:
Bryan Schumaker 2011-12-30 23:27:15 -05:00
parent 425c7421ed
commit 3fa1331303
2 changed files with 15 additions and 9 deletions

View File

@ -17,6 +17,7 @@ namespace libsaria
}
void add_ids(list<sid_t> &);
void rm_ids(list<sid_t> &);
void for_each(SourceModel *);
unsigned int size();
string next_file();

View File

@ -9,11 +9,10 @@ using namespace std;
list<sid_t> playqueue;
static void pop_queue(sid_t &inode)
static void save_and_refresh()
{
inode = playqueue.front();
playqueue.pop_front();
trigger_callback(QUEUE_REFRESH);
libsaria::queue::save();
}
namespace libsaria
@ -22,9 +21,15 @@ namespace libsaria
void queue::add_ids(list<sid_t> &ids)
{
playqueue.insert(playqueue.end(), ids.begin(), ids.end());
println("Queue size: %d", playqueue.size());
trigger_callback(QUEUE_REFRESH);
save();
save_and_refresh();
}
void queue::rm_ids(list<sid_t> &ids)
{
list<sid_t>::iterator it;
for (it = ids.begin(); it != ids.end(); it++)
playqueue.remove(*it);
save_and_refresh();
}
unsigned int queue::size()
@ -34,9 +39,9 @@ namespace libsaria
string queue::next_file()
{
sid_t inode;
pop_queue(inode);
save();
sid_t inode = playqueue.front();
playqueue.pop_front();
save_and_refresh();
return library::find_filepath(inode);
}