X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fscreen_artist.c;h=d488a7b9cb5a0090c280fefbfb34a749c3f9b304;hb=8ba6b8463c9b53bcd6b05574d639eb9ac099a37a;hp=185c57483ca5b434fc2601839b80c3305bf16f98;hpb=c3d8c871fff880f3f30e732921b2494c13412e46;p=ncmpc.git diff --git a/src/screen_artist.c b/src/screen_artist.c index 185c574..d488a7b 100644 --- a/src/screen_artist.c +++ b/src/screen_artist.c @@ -1,25 +1,25 @@ /* ncmpc (Ncurses MPD Client) * (c) 2004-2010 The Music Player Daemon Project * Project homepage: http://musicpd.org - + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - + * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ + */ #include "screen_artist.h" #include "screen_interface.h" -#include "screen_message.h" +#include "screen_status.h" #include "screen_find.h" #include "screen_browser.h" #include "screen.h" @@ -162,8 +162,7 @@ load_artist_list(struct mpdclient *c) mpd_search_commit(connection); recv_tag_values(connection, MPD_TAG_ARTIST, artist_list); - if (!mpd_response_finish(connection)) - mpdclient_handle_error(c); + mpdclient_finish_command(c); } /* sort list */ @@ -193,8 +192,7 @@ load_album_list(struct mpdclient *c) recv_tag_values(connection, MPD_TAG_ALBUM, album_list); - if (!mpd_response_finish(connection)) - mpdclient_handle_error(c); + mpdclient_finish_command(c); } /* sort list */ @@ -228,8 +226,7 @@ load_song_list(struct mpdclient *c) filelist_recv(browser.filelist, connection); - if (!mpd_response_finish(connection)) - mpdclient_handle_error(c); + mpdclient_finish_command(c); } /* fix highlights */ @@ -448,8 +445,12 @@ screen_artist_update(struct mpdclient *c) artist_repaint(); } +/* add_query - Add all songs satisfying specified criteria. + _artist is actually only used in the ALBUM case to distinguish albums with + the same name from different artists. */ static void -add_query(struct mpdclient *c, enum mpd_tag_type table, const char *_filter) +add_query(struct mpdclient *c, enum mpd_tag_type table, const char *_filter, + const char *_artist) { struct mpd_connection *connection = mpdclient_get_connection(c); char *str; @@ -472,15 +473,13 @@ add_query(struct mpdclient *c, enum mpd_tag_type table, const char *_filter) table, _filter); if (table == MPD_TAG_ALBUM) mpd_search_add_tag_constraint(connection, MPD_OPERATOR_DEFAULT, - MPD_TAG_ARTIST, artist); + MPD_TAG_ARTIST, _artist); mpd_search_commit(connection); addlist = filelist_new_recv(connection); - if (mpd_response_finish(connection)) + if (mpdclient_finish_command(c)) mpdclient_filelist_add_all(c, addlist); - else - mpdclient_handle_error(c); filelist_free(addlist); } @@ -667,7 +666,7 @@ screen_artist_cmd(struct mpdclient *c, command_t cmd) list_window_get_range(browser.lw, &range); for (unsigned i = range.start; i < range.end; ++i) { selected = g_ptr_array_index(artist_list, i); - add_query(c, MPD_TAG_ARTIST, selected); + add_query(c, MPD_TAG_ARTIST, selected, NULL); cmd = CMD_LIST_NEXT; /* continue and select next item... */ } break; @@ -676,12 +675,12 @@ screen_artist_cmd(struct mpdclient *c, command_t cmd) list_window_get_range(browser.lw, &range); for (unsigned i = range.start; i < range.end; ++i) { if(i == album_list->len + 1) - add_query(c, MPD_TAG_ARTIST, artist); + add_query(c, MPD_TAG_ARTIST, artist, NULL); else if (i > 0) { selected = g_ptr_array_index(album_list, browser.lw->selected - 1); - add_query(c, MPD_TAG_ALBUM, selected); + add_query(c, MPD_TAG_ALBUM, selected, artist); cmd = CMD_LIST_NEXT; /* continue and select next item... */ } }