merge some duplicated code in parsing song formats
This commit is contained in:
39
src/conv.cpp
39
src/conv.cpp
@@ -144,6 +144,45 @@ mpd_tag_type IntoTagItem(char c)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MPD::Song::GetFunction toGetFunction(char c)
|
||||||
|
{
|
||||||
|
switch (c)
|
||||||
|
{
|
||||||
|
case 'l':
|
||||||
|
return &MPD::Song::GetLength;
|
||||||
|
case 'D':
|
||||||
|
return &MPD::Song::GetDirectory;
|
||||||
|
case 'f':
|
||||||
|
return &MPD::Song::GetName;
|
||||||
|
case 'a':
|
||||||
|
return &MPD::Song::GetArtist;
|
||||||
|
case 'A':
|
||||||
|
return &MPD::Song::GetAlbumArtist;
|
||||||
|
case 'b':
|
||||||
|
return &MPD::Song::GetAlbum;
|
||||||
|
case 'y':
|
||||||
|
return &MPD::Song::GetDate;
|
||||||
|
case 'n':
|
||||||
|
return &MPD::Song::GetTrackNumber;
|
||||||
|
case 'N':
|
||||||
|
return &MPD::Song::GetTrack;
|
||||||
|
case 'g':
|
||||||
|
return &MPD::Song::GetGenre;
|
||||||
|
case 'c':
|
||||||
|
return &MPD::Song::GetComposer;
|
||||||
|
case 'p':
|
||||||
|
return &MPD::Song::GetPerformer;
|
||||||
|
case 'd':
|
||||||
|
return &MPD::Song::GetDisc;
|
||||||
|
case 'C':
|
||||||
|
return &MPD::Song::GetComment;
|
||||||
|
case 't':
|
||||||
|
return &MPD::Song::GetTitle;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef HAVE_TAGLIB_H
|
#ifdef HAVE_TAGLIB_H
|
||||||
MPD::Song::SetFunction IntoSetFunction(mpd_tag_type tag)
|
MPD::Song::SetFunction IntoSetFunction(mpd_tag_type tag)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -52,6 +52,8 @@ NCurses::Color IntoColor(const std::string &);
|
|||||||
|
|
||||||
mpd_tag_type IntoTagItem(char);
|
mpd_tag_type IntoTagItem(char);
|
||||||
|
|
||||||
|
MPD::Song::GetFunction toGetFunction(char c);
|
||||||
|
|
||||||
#ifdef HAVE_TAGLIB_H
|
#ifdef HAVE_TAGLIB_H
|
||||||
MPD::Song::SetFunction IntoSetFunction(mpd_tag_type);
|
MPD::Song::SetFunction IntoSetFunction(mpd_tag_type);
|
||||||
#endif // HAVE_TAGLIB_H
|
#endif // HAVE_TAGLIB_H
|
||||||
|
|||||||
@@ -188,56 +188,7 @@ void Display::SongsInColumns(const MPD::Song &s, void *data, Menu<MPD::Song> *me
|
|||||||
std::string tag;
|
std::string tag;
|
||||||
for (size_t i = 0; i < it->type.length(); ++i)
|
for (size_t i = 0; i < it->type.length(); ++i)
|
||||||
{
|
{
|
||||||
switch (it->type[i])
|
get = toGetFunction(it->type[i]);
|
||||||
{
|
|
||||||
case 'l':
|
|
||||||
get = &MPD::Song::GetLength;
|
|
||||||
break;
|
|
||||||
case 'D':
|
|
||||||
get = &MPD::Song::GetDirectory;
|
|
||||||
break;
|
|
||||||
case 'f':
|
|
||||||
get = &MPD::Song::GetName;
|
|
||||||
break;
|
|
||||||
case 'a':
|
|
||||||
get = &MPD::Song::GetArtist;
|
|
||||||
break;
|
|
||||||
case 'A':
|
|
||||||
get = &MPD::Song::GetAlbumArtist;
|
|
||||||
break;
|
|
||||||
case 'b':
|
|
||||||
get = &MPD::Song::GetAlbum;
|
|
||||||
break;
|
|
||||||
case 'y':
|
|
||||||
get = &MPD::Song::GetDate;
|
|
||||||
break;
|
|
||||||
case 'n':
|
|
||||||
get = &MPD::Song::GetTrackNumber;
|
|
||||||
break;
|
|
||||||
case 'N':
|
|
||||||
get = &MPD::Song::GetTrack;
|
|
||||||
break;
|
|
||||||
case 'g':
|
|
||||||
get = &MPD::Song::GetGenre;
|
|
||||||
break;
|
|
||||||
case 'c':
|
|
||||||
get = &MPD::Song::GetComposer;
|
|
||||||
break;
|
|
||||||
case 'p':
|
|
||||||
get = &MPD::Song::GetPerformer;
|
|
||||||
break;
|
|
||||||
case 'd':
|
|
||||||
get = &MPD::Song::GetDisc;
|
|
||||||
break;
|
|
||||||
case 'C':
|
|
||||||
get = &MPD::Song::GetComment;
|
|
||||||
break;
|
|
||||||
case 't':
|
|
||||||
get = &MPD::Song::GetTitle;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
tag = get ? s.GetTags(get) : "";
|
tag = get ? s.GetTags(get) : "";
|
||||||
if (!tag.empty())
|
if (!tag.empty())
|
||||||
break;
|
break;
|
||||||
|
|||||||
48
src/song.cpp
48
src/song.cpp
@@ -372,56 +372,10 @@ std::string MPD::Song::ParseFormat(std::string::const_iterator &it, const char *
|
|||||||
{
|
{
|
||||||
switch (*++it)
|
switch (*++it)
|
||||||
{
|
{
|
||||||
case 'l':
|
|
||||||
get = &MPD::Song::GetLength;
|
|
||||||
break;
|
|
||||||
case 'D':
|
|
||||||
get = &MPD::Song::GetDirectory;
|
|
||||||
break;
|
|
||||||
case 'f':
|
|
||||||
get = &MPD::Song::GetName;
|
|
||||||
break;
|
|
||||||
case 'a':
|
|
||||||
get = &MPD::Song::GetArtist;
|
|
||||||
break;
|
|
||||||
case 'A':
|
|
||||||
get = &MPD::Song::GetAlbumArtist;
|
|
||||||
break;
|
|
||||||
case 'b':
|
|
||||||
get = &MPD::Song::GetAlbum;
|
|
||||||
break;
|
|
||||||
case 'y':
|
|
||||||
get = &MPD::Song::GetDate;
|
|
||||||
break;
|
|
||||||
case 'n':
|
|
||||||
get = &MPD::Song::GetTrackNumber;
|
|
||||||
break;
|
|
||||||
case 'N':
|
|
||||||
get = &MPD::Song::GetTrack;
|
|
||||||
break;
|
|
||||||
case 'g':
|
|
||||||
get = &MPD::Song::GetGenre;
|
|
||||||
break;
|
|
||||||
case 'c':
|
|
||||||
get = &MPD::Song::GetComposer;
|
|
||||||
break;
|
|
||||||
case 'p':
|
|
||||||
get = &MPD::Song::GetPerformer;
|
|
||||||
break;
|
|
||||||
case 'd':
|
|
||||||
get = &MPD::Song::GetDisc;
|
|
||||||
break;
|
|
||||||
case 'C':
|
|
||||||
get = &MPD::Song::GetComment;
|
|
||||||
break;
|
|
||||||
case 't':
|
|
||||||
get = &MPD::Song::GetTitle;
|
|
||||||
break;
|
|
||||||
case '%':
|
case '%':
|
||||||
result += *it; // no break here
|
result += *it; // no break here
|
||||||
default:
|
default:
|
||||||
get = 0;
|
get = toGetFunction(*it);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
if (get)
|
if (get)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user