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
|
||||
MPD::Song::SetFunction IntoSetFunction(mpd_tag_type tag)
|
||||
{
|
||||
|
||||
@@ -52,6 +52,8 @@ NCurses::Color IntoColor(const std::string &);
|
||||
|
||||
mpd_tag_type IntoTagItem(char);
|
||||
|
||||
MPD::Song::GetFunction toGetFunction(char c);
|
||||
|
||||
#ifdef HAVE_TAGLIB_H
|
||||
MPD::Song::SetFunction IntoSetFunction(mpd_tag_type);
|
||||
#endif // HAVE_TAGLIB_H
|
||||
|
||||
@@ -188,56 +188,7 @@ void Display::SongsInColumns(const MPD::Song &s, void *data, Menu<MPD::Song> *me
|
||||
std::string tag;
|
||||
for (size_t i = 0; i < it->type.length(); ++i)
|
||||
{
|
||||
switch (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;
|
||||
}
|
||||
get = toGetFunction(it->type[i]);
|
||||
tag = get ? s.GetTags(get) : "";
|
||||
if (!tag.empty())
|
||||
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)
|
||||
{
|
||||
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 '%':
|
||||
result += *it; // no break here
|
||||
default:
|
||||
get = 0;
|
||||
break;
|
||||
get = toGetFunction(*it);
|
||||
}
|
||||
if (get)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user