コード例 #1
0
ファイル: command.cpp プロジェクト: reynhout/pms
/**
 * Retrieves all playlist contents from MPD. Requires that the local playlist
 * index is updated using `update_playlist_index()`.
 *
 * Returns true on success, false on failure.
 */
bool
Control::update_playlists()
{
	vector<Playlist *>::iterator	playlist_iterator;
	Playlist *			playlist;

	EXIT_IDLE;

	pms->log(MSG_DEBUG, 0, "Synchronizing all playlists with MPD\n");

	playlist_iterator = playlists.begin();

	while (playlist_iterator != playlists.end()) {

		playlist = *playlist_iterator;

		if (!playlist->exists_in_mpd()) {
			pms->disp->remove_list(playlist);
			delete playlist;
			playlist_iterator = playlists.erase(playlist_iterator);
			continue;
		} else if (!playlist->is_synchronized()) {
			if (!update_playlist(playlist)) {
				return false;
			}
			playlist->set_synchronized(true);
		} else {
			pms->log(MSG_DEBUG, 0, "Playlist %s is already synchronized.\n", playlist->filename.c_str());
		}
		++playlist_iterator;
	}

	pms->log(MSG_DEBUG, 0, "Playlist synchronization is finished.\n");

	return get_error_bool();
}