implement argv handler and basic mpc commands

This commit is contained in:
unK
2008-10-05 22:41:29 +02:00
parent 9fd373625d
commit 4ab4e72c97
7 changed files with 152 additions and 13 deletions

View File

@@ -53,6 +53,111 @@ extern string UNKNOWN_ARTIST;
extern string UNKNOWN_TITLE;
extern string UNKNOWN_ALBUM;
bool ConnectToMPD()
{
if (!Mpd->Connect())
{
printf("Cannot connect to mpd: %s\n", Mpd->GetErrorMessage().c_str());
return false;
}
return true;
}
bool ParseArgv(vector<string> &v)
{
using std::cout;
using std::endl;
bool exit = 0;
for (vector<string>::iterator it = v.begin(); it != v.end() && !exit; it++)
{
if (*it == "-v" || *it == "--version")
{
cout << "ncmpcpp version: " << VERSION << endl
<< "build with support for:"
# ifdef HAVE_CURL_CURL_H
<< " curl"
# endif
# ifdef HAVE_TAGLIB_H
<< " taglib"
# endif
# ifdef UTF8_ENABLED
<< " unicode"
# endif
<< endl;
return 1;
}
else if (*it == "-?" || *it == "--help")
{
cout
<< "Usage: ncmpcpp [OPTION]...\n"
<< " -?, --help show this help message\n"
<< " -v, --version display version information\n\n"
<< " play start playing\n"
<< " pause pause the currently playing song\n"
<< " toggle toggle play/pause mode\n"
<< " next play the next song\n"
<< " prev play the previous song\n"
<< " volume [+-]<num> adjusts volume by [+-]<num>\n"
;
return 1;
}
if (!ConnectToMPD())
return 1;
if (*it == "play")
{
Mpd->Play();
exit = 1;
}
else if (*it == "pause")
{
Mpd->Execute("pause \"1\"\n");
exit = 1;
}
else if (*it == "toggle")
{
Mpd->Execute("pause\n");
exit = 1;
}
else if (*it == "next")
{
Mpd->Next();
exit = 1;
}
else if (*it == "prev")
{
Mpd->Prev();
exit = 1;
}
else if (*it == "volume")
{
it++;
Mpd->GetStatus();
if (Mpd->CheckForErrors())
{
cout << "Error: " << Mpd->GetErrorMessage() << endl;
return 1;
}
if (it != v.end())
Mpd->SetVolume(Mpd->GetVolume()+StrToInt(*it));
exit = 1;
}
else
{
cout << "ncmpcpp: invalid option " << *it << endl;
return 1;
}
if (Mpd->CheckForErrors())
{
cout << "Error: " << Mpd->GetErrorMessage() << endl;
return 1;
}
}
return exit;
}
void LockStatusbar()
{
if (Config.statusbar_visibility)