コード例 #1
0
ファイル: command.c プロジェクト: somecommand/mpc
int
cmd_replaygain(int argc, char **argv, struct mpd_connection *connection)
{
	/* libmpdclient 2.0 doesn't support these commands yet, we
	   have to roll our own with mpd_send_command() */

	if (mpd_connection_cmp_server_version(connection, 0, 16, 0) < 0)
		fprintf(stderr, "warning: MPD 0.16 required for this command\n");

	if (argc == 0) {
		struct mpd_pair *pair;

		mpd_send_command(connection, "replay_gain_status", NULL);
		while ((pair = mpd_recv_pair(connection)) != NULL) {
			printf("%s: %s\n", pair->name, pair->value);
			mpd_return_pair(connection, pair);
		}

		my_finishCommand(connection);
	} else {
		mpd_send_command(connection, "replay_gain_mode",
				 argv[0], NULL);
		my_finishCommand(connection);
	}

	return 0;
}
コード例 #2
0
ファイル: cmessage.c プロジェクト: Fyzick/capstone
bool
mpd_send_send_message(struct mpd_connection *connection,
		      const char *channel, const char *text)
{
	return mpd_send_command(connection, "sendmessage", channel, text,
				NULL);
}
コード例 #3
0
ファイル: search.c プロジェクト: Fyzick/capstone
bool
mpd_search_commit(struct mpd_connection *connection)
{
	bool success;

	assert(connection != NULL);

	if (mpd_error_is_defined(&connection->error)) {
		mpd_search_cancel(connection);
		return false;
	}

	if (connection->request == NULL) {
		mpd_error_code(&connection->error, MPD_ERROR_STATE);
		mpd_error_message(&connection->error,
				  "no search in progress");
		return false;
	}

	success = mpd_send_command(connection, connection->request, NULL);
	free(connection->request);
	connection->request = NULL;

	return success;
}
コード例 #4
0
ファイル: mpdpp.cpp プロジェクト: Spotlight0xff/ncmpcpp
std::string Connection::GetReplayGainMode()
{
	prechecksNoCommandsList();
	mpd_send_command(m_connection.get(), "replay_gain_status", NULL);
	std::string result;
	if (mpd_pair *pair = mpd_recv_pair_named(m_connection.get(), "replay_gain_mode"))
	{
		result = pair->value;
		mpd_return_pair(m_connection.get(), pair);
	}
	mpd_response_finish(m_connection.get());
	checkErrors();
	return result;
}
コード例 #5
0
ファイル: command.c プロジェクト: daaang/mpc
int
cmd_replaygain(int argc, char **argv, struct mpd_connection *connection)
{
	/* libmpdclient 2.0 doesn't support these commands yet, we
	   have to roll our own with mpd_send_command() */

	if (argc == 0) {
		mpd_send_command(connection, "replay_gain_status", NULL);

		struct mpd_pair *pair;
		while ((pair = mpd_recv_pair(connection)) != NULL) {
			printf("%s: %s\n", pair->name, pair->value);
			mpd_return_pair(connection, pair);
		}

		my_finishCommand(connection);
	} else {
		mpd_send_command(connection, "replay_gain_mode",
				 argv[0], NULL);
		my_finishCommand(connection);
	}

	return 0;
}
コード例 #6
0
ファイル: mpdpp.cpp プロジェクト: Spotlight0xff/ncmpcpp
StringIterator Connection::GetSupportedExtensions()
{
	prechecksNoCommandsList();
	mpd_send_command(m_connection.get(), "decoders", NULL);
	checkErrors();
	return StringIterator(m_connection.get(), [](StringIterator::State &state) {
		auto src = mpd_recv_pair_named(state.connection(), "suffix");
		if (src != nullptr)
		{
			state.setObject(src->value);
			mpd_return_pair(state.connection(), src);
			return true;
		}
		else
			return false;
	});
}
コード例 #7
0
ファイル: path.c プロジェクト: GGbaba/mpc
bool
path_prepare(struct mpd_connection *conn)
{
	if (initialized)
		return true;

	initialized = true;

	if (mpd_connection_cmp_server_version(conn, 0, 17, 0) < 0)
		/* the "config" command was added in MPD 0.17.1 */
		return true;

	if (!mpd_send_command(conn, "config", NULL))
		return false;

	struct mpd_pair *pair = mpd_recv_pair_named(conn, "music_directory");
	if (pair != NULL) {
		music_directory = strdup(pair->value);
		mpd_return_pair(conn, pair);
	}

	return mpd_response_finish(conn) || mpd_connection_clear_error(conn);
}
コード例 #8
0
ファイル: mpdpp.cpp プロジェクト: Spotlight0xff/ncmpcpp
void Connection::SetReplayGainMode(ReplayGainMode mode)
{
	prechecksNoCommandsList();
	const char *rg_mode;
	switch (mode)
	{
		case rgmOff:
			rg_mode = "off";
			break;
		case rgmTrack:
			rg_mode = "track";
			break;
		case rgmAlbum:
			rg_mode = "album";
			break;
		default:
			rg_mode = "";
			break;
	}
	mpd_send_command(m_connection.get(), "replay_gain_mode", rg_mode, NULL);
	mpd_response_finish(m_connection.get());
	checkErrors();
}
コード例 #9
0
bool
mpd_command_list_end(struct mpd_connection *connection)
{
	bool success;

	assert(connection != NULL);

	if (!connection->sending_command_list) {
		mpd_error_code(&connection->error, MPD_ERROR_STATE);
		mpd_error_message(&connection->error,
				  "not in command list mode");
		return false;
	}

	connection->sending_command_list = false;
	success = mpd_send_command(connection, "command_list_end", NULL);
	connection->sending_command_list = true;
	if (!success)
		return false;

	assert(connection->receiving);
	return true;
}
コード例 #10
0
ファイル: queue.c プロジェクト: Fyzick/capstone
bool
mpd_send_list_queue_meta(struct mpd_connection *connection)
{
	return mpd_send_command(connection, "playlistinfo", NULL);
}
コード例 #11
0
ファイル: queue.c プロジェクト: Fyzick/capstone
bool
mpd_send_clear(struct mpd_connection *connection)
{
	return mpd_send_command(connection, "clear", NULL);
}
コード例 #12
0
ファイル: database.c プロジェクト: Fyzick/capstone
bool
mpd_send_list_all(struct mpd_connection *connection, const char *dir)
{
	return mpd_send_command(connection, "listall", dir, NULL);
}
コード例 #13
0
ファイル: MpdWidget.cpp プロジェクト: CodeUnit/BadRadio
void MpdWidget::psMpdHB()
{

	timerMpd->stop();


	QString dataSender, dataVol, dataTitle;

	struct mpd_connection *conn;
	struct mpd_status * status;
	struct mpd_song *song;
//	const struct mpd_audio_format *audio_format;

	conn = mpd_connection_new(NULL, 0, 30000);


	if (mpd_connection_get_error(conn) != MPD_ERROR_SUCCESS)
	{
		timerMpd->start();
		return;
	}

	if (aktPlay)
	{
		aktPlay = false;
		mpd_send_command(conn, "play", NULL);
		timerMpd->start();
		return;
	}

	if (aktStop)
	{
		aktStop = false;
		mpd_send_command(conn, "stop", NULL);
		timerMpd->start();
		return;
	}


	mpd_command_list_begin(conn, true);
	mpd_send_status(conn);
	mpd_send_current_song(conn);
	mpd_command_list_end(conn);


// Status
	status = mpd_recv_status(conn);
	if (status == NULL)
	{
		timerMpd->start();
		return ;
	}



// Volume
	dataVol.number(mpd_status_get_volume(status));
	if (labelVol->text().compare(dataVol) != 0)
		labelVol->setText(dataVol);

	if (mpd_status_get_error(status) != NULL)
		new QListWidgetItem(QString("status error: %1").
				arg(mpd_status_get_error(status)));



	mpd_status_free(status);
// Status

	mpd_response_next(conn);

// Song
	song = mpd_recv_song(conn);
	if (song == NULL)
	{
		handle_error(conn);
		timerMpd->start();
		return ;
	}


// Title
	dataTitle = mpd_song_get_uri(song);
	if (labelTitle->text().compare(dataTitle) != 0)
		labelTitle->setText(dataTitle);




	unsigned int i = 0;
	QString value;

	while ((value = mpd_song_get_tag(song, MPD_TAG_TITLE, i++)) != NULL)
	{
		if (i > 0)
			dataSender.append("  ");
		dataSender.append(value);
	}

	if (labelSender->text().compare(dataSender) != 0)
	{
		labelSender->setText(dataSender);
		qDebug() << "refresh";
	}

	mpd_song_free(song);
// Song

	mpd_connection_free(conn);

	timerMpd->start();
}
コード例 #14
0
ファイル: capabilities.c プロジェクト: 12019/OpenWrt_Luci_Lua
bool
mpd_send_list_url_schemes(struct mpd_connection *connection)
{
	return mpd_send_command(connection, "urlhandlers", NULL);
}
コード例 #15
0
ファイル: player.c プロジェクト: Fyzick/capstone
bool
mpd_send_play(struct mpd_connection *connection)
{
	return mpd_send_command(connection, "play", NULL);
}
コード例 #16
0
ファイル: cmessage.c プロジェクト: Fyzick/capstone
bool
mpd_send_unsubscribe(struct mpd_connection *connection, const char *channel)
{
	return mpd_send_command(connection, "unsubscribe", channel, NULL);
}
コード例 #17
0
ファイル: cmessage.c プロジェクト: Fyzick/capstone
bool
mpd_send_channels(struct mpd_connection *connection)
{
	return mpd_send_command(connection, "channels", NULL);
}
コード例 #18
0
ファイル: database.c プロジェクト: Fyzick/capstone
bool
mpd_send_rescan(struct mpd_connection *connection, const char *path)
{
	return mpd_send_command(connection, "rescan", path, NULL);
}
コード例 #19
0
ファイル: database.c プロジェクト: Fyzick/capstone
bool
mpd_send_update(struct mpd_connection *connection, const char *path)
{
	return mpd_send_command(connection, "update", path, NULL);
}
コード例 #20
0
ファイル: database.c プロジェクト: Fyzick/capstone
bool
mpd_send_list_meta(struct mpd_connection *connection, const char *dir)
{
	return mpd_send_command(connection, "lsinfo", dir, NULL);
}
コード例 #21
0
ファイル: player.c プロジェクト: Fyzick/capstone
bool
mpd_send_current_song(struct mpd_connection *connection)
{
	return mpd_send_command(connection, "currentsong", NULL);
}
コード例 #22
0
ファイル: cmessage.c プロジェクト: Fyzick/capstone
bool
mpd_send_read_messages(struct mpd_connection *connection)
{
	return mpd_send_command(connection, "readmessages", NULL);
}
コード例 #23
0
ファイル: capabilities.c プロジェクト: 12019/OpenWrt_Luci_Lua
bool
mpd_send_disallowed_commands(struct mpd_connection *connection)
{
	return mpd_send_command(connection, "notcommands", NULL);
}
コード例 #24
0
ファイル: cstats.c プロジェクト: Fyzick/capstone
bool
mpd_send_stats(struct mpd_connection *connection)
{
	return mpd_send_command(connection, "stats", NULL);
}
コード例 #25
0
ファイル: capabilities.c プロジェクト: 12019/OpenWrt_Luci_Lua
bool
mpd_send_list_tag_types(struct mpd_connection *connection)
{
	return mpd_send_command(connection, "tagtypes", NULL);
}
コード例 #26
0
ファイル: player.c プロジェクト: Fyzick/capstone
bool
mpd_send_previous(struct mpd_connection *connection)
{
	return mpd_send_command(connection, "previous", NULL);
}
コード例 #27
0
ファイル: queue.c プロジェクト: Fyzick/capstone
bool
mpd_send_shuffle(struct mpd_connection *connection)
{
	return mpd_send_command(connection, "shuffle", NULL);
}
コード例 #28
0
bool
mpd_send_password(struct mpd_connection *connection, const char *password)
{
	return mpd_send_command(connection, "password", password, NULL);
}
コード例 #29
0
ファイル: queue.c プロジェクト: Fyzick/capstone
bool
mpd_send_add_id(struct mpd_connection *connection, const char *file)
{
	return mpd_send_command(connection, "addid", file, NULL);
}
コード例 #30
0
ファイル: player.c プロジェクト: Fyzick/capstone
bool
mpd_send_next(struct mpd_connection *connection)
{
	return mpd_send_command(connection, "next", NULL);
}