DatabaseQueue: pass DatabaseSelection to Add...()

This commit is contained in:
Max Kellermann 2013-01-07 11:33:00 +01:00
parent d360f17a59
commit 400ff1c812
4 changed files with 10 additions and 15 deletions

View File

@ -91,9 +91,9 @@ handle_match_add(Client *client, int argc, char *argv[], bool fold_case)
return COMMAND_RETURN_ERROR;
}
const DatabaseSelection selection("", true, &filter);
GError *error = NULL;
return AddFromDatabase(client->partition,
"", &filter, &error)
return AddFromDatabase(client->partition, selection, &error)
? COMMAND_RETURN_OK
: print_error(client, error);
}

View File

@ -42,16 +42,13 @@ AddToQueue(Partition &partition, song &song, GError **error_r)
}
bool
AddFromDatabase(Partition &partition,
const char *uri,
const SongFilter *filter, GError **error_r)
AddFromDatabase(Partition &partition, const DatabaseSelection &selection,
GError **error_r)
{
const Database *db = GetDatabase(error_r);
if (db == nullptr)
return false;
const DatabaseSelection selection(uri, true, filter);
using namespace std::placeholders;
const auto f = std::bind(AddToQueue, std::ref(partition), _1, _2);
return db->Visit(selection, f, error_r);

View File

@ -20,16 +20,13 @@
#ifndef MPD_DATABASE_QUEUE_HXX
#define MPD_DATABASE_QUEUE_HXX
#include "gcc.h"
#include "gerror.h"
class SongFilter;
struct Partition;
struct DatabaseSelection;
gcc_nonnull(2)
bool
AddFromDatabase(Partition &partition,
const char *name,
const SongFilter *filter, GError **error_r);
AddFromDatabase(Partition &partition, const DatabaseSelection &selection,
GError **error_r);
#endif

View File

@ -22,6 +22,7 @@
#include "CommandError.hxx"
#include "DatabaseQueue.hxx"
#include "SongFilter.hxx"
#include "DatabaseSelection.hxx"
#include "Playlist.hxx"
#include "PlaylistPrint.hxx"
#include "ClientFile.hxx"
@ -69,9 +70,9 @@ handle_add(Client *client, G_GNUC_UNUSED int argc, char *argv[])
return print_playlist_result(client, result);
}
const DatabaseSelection selection(uri, true);
GError *error = NULL;
return AddFromDatabase(client->partition,
uri, nullptr, &error)
return AddFromDatabase(client->partition, selection, &error)
? COMMAND_RETURN_OK
: print_error(client, error);
}