queue/PlaylistTag: throw PlaylistError on error

This commit is contained in:
Max Kellermann 2016-02-28 10:40:31 +01:00
parent f8810d7caf
commit c81747dd15
3 changed files with 18 additions and 42 deletions

View File

@ -41,11 +41,7 @@ handle_addtagid(Client &client, Request args, Response &r)
const char *const value = args[2]; const char *const value = args[2];
Error error; client.partition.playlist.AddSongIdTag(song_id, tag_type, value);
if (!client.partition.playlist.AddSongIdTag(song_id, tag_type, value,
error))
return print_error(r, error);
return CommandResult::OK; return CommandResult::OK;
} }
@ -65,10 +61,6 @@ handle_cleartagid(Client &client, Request args, Response &r)
} }
} }
Error error; client.partition.playlist.ClearSongIdTag(song_id, tag_type);
if (!client.partition.playlist.ClearSongIdTag(song_id, tag_type,
error))
return print_error(r, error);
return CommandResult::OK; return CommandResult::OK;
} }

View File

@ -258,9 +258,8 @@ public:
SongTime start, SongTime end, SongTime start, SongTime end,
Error &error); Error &error);
bool AddSongIdTag(unsigned id, TagType tag_type, const char *value, void AddSongIdTag(unsigned id, TagType tag_type, const char *value);
Error &error); void ClearSongIdTag(unsigned id, TagType tag_type);
bool ClearSongIdTag(unsigned id, TagType tag_type, Error &error);
void Stop(PlayerControl &pc); void Stop(PlayerControl &pc);

View File

@ -29,25 +29,18 @@
#include "DetachedSong.hxx" #include "DetachedSong.hxx"
#include "tag/Tag.hxx" #include "tag/Tag.hxx"
#include "tag/TagBuilder.hxx" #include "tag/TagBuilder.hxx"
#include "util/Error.hxx"
bool void
playlist::AddSongIdTag(unsigned id, TagType tag_type, const char *value, playlist::AddSongIdTag(unsigned id, TagType tag_type, const char *value)
Error &error)
{ {
const int position = queue.IdToPosition(id); const int position = queue.IdToPosition(id);
if (position < 0) { if (position < 0)
error.Set(playlist_domain, int(PlaylistResult::NO_SUCH_SONG), throw PlaylistError::NoSuchSong();
"No such song");
return false;
}
DetachedSong &song = queue.Get(position); DetachedSong &song = queue.Get(position);
if (song.IsFile()) { if (song.IsFile())
error.Set(playlist_domain, int(PlaylistResult::DENIED), throw PlaylistError(PlaylistResult::DENIED,
"Cannot edit tags of local file"); "Cannot edit tags of local file");
return false;
}
{ {
TagBuilder tag(std::move(song.WritableTag())); TagBuilder tag(std::move(song.WritableTag()));
@ -57,26 +50,19 @@ playlist::AddSongIdTag(unsigned id, TagType tag_type, const char *value,
queue.ModifyAtPosition(position); queue.ModifyAtPosition(position);
OnModified(); OnModified();
return true;
} }
bool void
playlist::ClearSongIdTag(unsigned id, TagType tag_type, playlist::ClearSongIdTag(unsigned id, TagType tag_type)
Error &error)
{ {
const int position = queue.IdToPosition(id); const int position = queue.IdToPosition(id);
if (position < 0) { if (position < 0)
error.Set(playlist_domain, int(PlaylistResult::NO_SUCH_SONG), throw PlaylistError::NoSuchSong();
"No such song");
return false;
}
DetachedSong &song = queue.Get(position); DetachedSong &song = queue.Get(position);
if (song.IsFile()) { if (song.IsFile())
error.Set(playlist_domain, int(PlaylistResult::DENIED), throw PlaylistError(PlaylistResult::DENIED,
"Cannot edit tags of local file"); "Cannot edit tags of local file");
return false;
}
{ {
TagBuilder tag(std::move(song.WritableTag())); TagBuilder tag(std::move(song.WritableTag()));
@ -89,5 +75,4 @@ playlist::ClearSongIdTag(unsigned id, TagType tag_type,
queue.ModifyAtPosition(position); queue.ModifyAtPosition(position);
OnModified(); OnModified();
return true;
} }