pass Buffer/Window to ShowTag() by reference

returning new Buffer and passing it to Window by operator<<()
was rather bad idea since it required unnecessary copying.
This commit is contained in:
Andrzej Rybczak
2009-09-15 16:36:26 +00:00
parent 40b9b547dd
commit 27687fd2b1
7 changed files with 133 additions and 89 deletions

View File

@@ -242,34 +242,34 @@ void Display::Tags(const MPD::Song &s, void *data, Menu<MPD::Song> *menu)
switch (static_cast<Menu<std::string> *>(data)->Choice()) switch (static_cast<Menu<std::string> *>(data)->Choice())
{ {
case 0: case 0:
*menu << ShowTag(s.GetTitle()); ShowTag(*menu, s.GetTitle());
return; return;
case 1: case 1:
*menu << ShowTag(s.GetArtist()); ShowTag(*menu, s.GetArtist());
return; return;
case 2: case 2:
*menu << ShowTag(s.GetAlbum()); ShowTag(*menu, s.GetAlbum());
return; return;
case 3: case 3:
*menu << ShowTag(s.GetDate()); ShowTag(*menu, s.GetDate());
return; return;
case 4: case 4:
*menu << ShowTag(s.GetTrack()); ShowTag(*menu, s.GetTrack());
return; return;
case 5: case 5:
*menu << ShowTag(s.GetGenre()); ShowTag(*menu, s.GetGenre());
return; return;
case 6: case 6:
*menu << ShowTag(s.GetComposer()); ShowTag(*menu, s.GetComposer());
return; return;
case 7: case 7:
*menu << ShowTag(s.GetPerformer()); ShowTag(*menu, s.GetPerformer());
return; return;
case 8: case 8:
*menu << ShowTag(s.GetDisc()); ShowTag(*menu, s.GetDisc());
return; return;
case 9: case 9:
*menu << ShowTag(s.GetComment()); ShowTag(*menu, s.GetComment());
return; return;
case 11: case 11:
if (s.GetNewName().empty()) if (s.GetNewName().empty())

View File

@@ -367,16 +367,6 @@ std::string ExtractTopDirectory(const std::string &s)
return slash != std::string::npos ? s.substr(++slash) : s; return slash != std::string::npos ? s.substr(++slash) : s;
} }
Buffer ShowTag(const std::string &tag)
{
Buffer result;
if (tag.empty())
result << Config.empty_tags_color << Config.empty_tag << clEnd;
else
result << tag;
return result;
}
#ifdef _UTF8 #ifdef _UTF8
std::basic_string<my_char_t> Scroller(const std::string &str, size_t &pos, size_t width) std::basic_string<my_char_t> Scroller(const std::string &str, size_t &pos, size_t width)
{ {

View File

@@ -95,6 +95,14 @@ template <typename C> void String2Buffer(const std::basic_string<C> &s, basic_bu
} }
} }
template <typename T> void ShowTag(T &buf, const std::string &tag)
{
if (tag.empty())
buf << Config.empty_tags_color << Config.empty_tag << clEnd;
else
buf << tag;
}
inline bool Keypressed(int in, const int *key) inline bool Keypressed(int in, const int *key)
{ {
return in == key[0] || in == key[1]; return in == key[0] || in == key[1];
@@ -113,8 +121,6 @@ std::string GetLineValue(std::string &, char = '"', char = '"', bool = 0);
void RemoveTheWord(std::string &s); void RemoveTheWord(std::string &s);
std::string ExtractTopDirectory(const std::string &); std::string ExtractTopDirectory(const std::string &);
Buffer ShowTag(const std::string &);
#ifdef _UTF8 #ifdef _UTF8
std::basic_string<my_char_t> Scroller(const std::string &str, size_t &pos, size_t width); std::basic_string<my_char_t> Scroller(const std::string &str, size_t &pos, size_t width);
#endif // _UTF8 #endif // _UTF8

View File

@@ -345,7 +345,9 @@ void Info::PrepareSong(MPD::Song &s)
# endif // HAVE_TAGLIB_H # endif // HAVE_TAGLIB_H
*w << fmtBold << Config.color1 << "Filename: " << fmtBoldEnd << Config.color2 << s.GetName() << "\n" << clEnd; *w << fmtBold << Config.color1 << "Filename: " << fmtBoldEnd << Config.color2 << s.GetName() << "\n" << clEnd;
*w << fmtBold << "Directory: " << fmtBoldEnd << Config.color2 << ShowTag(s.GetDirectory()) << "\n\n" << clEnd; *w << fmtBold << "Directory: " << fmtBoldEnd << Config.color2;
ShowTag(*w, s.GetDirectory());
*w << "\n\n" << clEnd;
*w << fmtBold << "Length: " << fmtBoldEnd << Config.color2 << s.GetLength() << "\n" << clEnd; *w << fmtBold << "Length: " << fmtBoldEnd << Config.color2 << s.GetLength() << "\n" << clEnd;
# ifdef HAVE_TAGLIB_H # ifdef HAVE_TAGLIB_H
if (!f.isNull()) if (!f.isNull())
@@ -357,29 +359,25 @@ void Info::PrepareSong(MPD::Song &s)
# endif // HAVE_TAGLIB_H # endif // HAVE_TAGLIB_H
*w << clDefault; *w << clDefault;
*w << fmtBold << "\nTitle: " << fmtBoldEnd << ShowTag(s.GetTitle()); *w << fmtBold << "\nTitle: " << fmtBoldEnd;
*w << fmtBold << "\nArtist: " << fmtBoldEnd << ShowTag(s.GetArtist()); ShowTag(*w, s.GetTitle());
*w << fmtBold << "\nAlbum: " << fmtBoldEnd << ShowTag(s.GetAlbum()); *w << fmtBold << "\nArtist: " << fmtBoldEnd;
*w << fmtBold << "\nYear: " << fmtBoldEnd << ShowTag(s.GetDate()); ShowTag(*w, s.GetArtist());
*w << fmtBold << "\nTrack: " << fmtBoldEnd << ShowTag(s.GetTrack()); *w << fmtBold << "\nAlbum: " << fmtBoldEnd;
*w << fmtBold << "\nGenre: " << fmtBoldEnd << ShowTag(s.GetGenre()); ShowTag(*w, s.GetAlbum());
*w << fmtBold << "\nComposer: " << fmtBoldEnd << ShowTag(s.GetComposer()); *w << fmtBold << "\nYear: " << fmtBoldEnd;
*w << fmtBold << "\nPerformer: " << fmtBoldEnd << ShowTag(s.GetPerformer()); ShowTag(*w, s.GetDate());
*w << fmtBold << "\nDisc: " << fmtBoldEnd << ShowTag(s.GetDisc()); *w << fmtBold << "\nTrack: " << fmtBoldEnd;
*w << fmtBold << "\nComment: " << fmtBoldEnd << ShowTag(s.GetComment()); ShowTag(*w, s.GetTrack());
} *w << fmtBold << "\nGenre: " << fmtBoldEnd;
ShowTag(*w, s.GetGenre());
basic_buffer<my_char_t> Info::ShowTag(const std::string &tag) *w << fmtBold << "\nComposer: " << fmtBoldEnd;
{ ShowTag(*w, s.GetComposer());
# ifdef _UTF8 *w << fmtBold << "\nPerformer: " << fmtBoldEnd;
WBuffer result; ShowTag(*w, s.GetPerformer());
if (tag.empty()) *w << fmtBold << "\nDisc: " << fmtBoldEnd;
result << Config.empty_tags_color << ToWString(Config.empty_tag) << clEnd; ShowTag(*w, s.GetDisc());
else *w << fmtBold << "\nComment: " << fmtBoldEnd;
result << ToWString(tag); ShowTag(*w, s.GetComment());
return result;
# else
return ::ShowTag(tag);
# endif
} }

View File

@@ -58,7 +58,6 @@ class Info : public Screen<Scrollpad>
std::string itsFilenamePath; std::string itsFilenamePath;
void PrepareSong(MPD::Song &); void PrepareSong(MPD::Song &);
static basic_buffer<my_char_t> ShowTag(const std::string &);
# ifdef HAVE_CURL_CURL_H # ifdef HAVE_CURL_CURL_H
static void *PrepareArtist(void *); static void *PrepareArtist(void *);

View File

@@ -103,70 +103,80 @@ void SearchEngine::EnterPressed()
{ {
Statusbar() << fmtBold << "Any: " << fmtBoldEnd; Statusbar() << fmtBold << "Any: " << fmtBoldEnd;
itsPattern.Any(wFooter->GetString(itsPattern.Any())); itsPattern.Any(wFooter->GetString(itsPattern.Any()));
*w->Current().first << fmtBold << "Any: " << fmtBoldEnd << ' ' << ShowTag(itsPattern.Any()); *w->Current().first << fmtBold << "Any: " << fmtBoldEnd << ' ';
ShowTag(*w->Current().first, itsPattern.Any());
break; break;
} }
case 1: case 1:
{ {
Statusbar() << fmtBold << "Artist: " << fmtBoldEnd; Statusbar() << fmtBold << "Artist: " << fmtBoldEnd;
itsPattern.SetArtist(wFooter->GetString(itsPattern.GetArtist())); itsPattern.SetArtist(wFooter->GetString(itsPattern.GetArtist()));
*w->Current().first << fmtBold << "Artist: " << fmtBoldEnd << ' ' << ShowTag(itsPattern.GetArtist()); *w->Current().first << fmtBold << "Artist: " << fmtBoldEnd << ' ';
ShowTag(*w->Current().first, itsPattern.GetArtist());
break; break;
} }
case 2: case 2:
{ {
Statusbar() << fmtBold << "Title: " << fmtBoldEnd; Statusbar() << fmtBold << "Title: " << fmtBoldEnd;
itsPattern.SetTitle(wFooter->GetString(itsPattern.GetTitle())); itsPattern.SetTitle(wFooter->GetString(itsPattern.GetTitle()));
*w->Current().first << fmtBold << "Title: " << fmtBoldEnd << ' ' << ShowTag(itsPattern.GetTitle()); *w->Current().first << fmtBold << "Title: " << fmtBoldEnd << ' ';
ShowTag(*w->Current().first, itsPattern.GetTitle());
break; break;
} }
case 3: case 3:
{ {
Statusbar() << fmtBold << "Album: " << fmtBoldEnd; Statusbar() << fmtBold << "Album: " << fmtBoldEnd;
itsPattern.SetAlbum(wFooter->GetString(itsPattern.GetAlbum())); itsPattern.SetAlbum(wFooter->GetString(itsPattern.GetAlbum()));
*w->Current().first << fmtBold << "Album: " << fmtBoldEnd << ' ' << ShowTag(itsPattern.GetAlbum()); *w->Current().first << fmtBold << "Album: " << fmtBoldEnd << ' ';
ShowTag(*w->Current().first, itsPattern.GetAlbum());
break; break;
} }
case 4: case 4:
{ {
Statusbar() << fmtBold << "Filename: " << fmtBoldEnd; Statusbar() << fmtBold << "Filename: " << fmtBoldEnd;
itsPattern.SetFile(wFooter->GetString(itsPattern.GetFile())); itsPattern.SetFile(wFooter->GetString(itsPattern.GetFile()));
*w->Current().first << fmtBold << "Filename: " << fmtBoldEnd << ' ' << ShowTag(itsPattern.GetFile()); *w->Current().first << fmtBold << "Filename: " << fmtBoldEnd << ' ';
ShowTag(*w->Current().first, itsPattern.GetFile());
break; break;
} }
case 5: case 5:
{ {
Statusbar() << fmtBold << "Composer: " << fmtBoldEnd; Statusbar() << fmtBold << "Composer: " << fmtBoldEnd;
itsPattern.SetComposer(wFooter->GetString(itsPattern.GetComposer())); itsPattern.SetComposer(wFooter->GetString(itsPattern.GetComposer()));
*w->Current().first << fmtBold << "Composer: " << fmtBoldEnd << ' ' << ShowTag(itsPattern.GetComposer()); *w->Current().first << fmtBold << "Composer: " << fmtBoldEnd << ' ';
ShowTag(*w->Current().first, itsPattern.GetComposer());
break; break;
} }
case 6: case 6:
{ {
Statusbar() << fmtBold << "Performer: " << fmtBoldEnd; Statusbar() << fmtBold << "Performer: " << fmtBoldEnd;
itsPattern.SetPerformer(wFooter->GetString(itsPattern.GetPerformer())); itsPattern.SetPerformer(wFooter->GetString(itsPattern.GetPerformer()));
*w->Current().first << fmtBold << "Performer:" << fmtBoldEnd << ' ' << ShowTag(itsPattern.GetPerformer()); *w->Current().first << fmtBold << "Performer:" << fmtBoldEnd << ' ';
ShowTag(*w->Current().first, itsPattern.GetPerformer());
break; break;
} }
case 7: case 7:
{ {
Statusbar() << fmtBold << "Genre: " << fmtBoldEnd; Statusbar() << fmtBold << "Genre: " << fmtBoldEnd;
itsPattern.SetGenre(wFooter->GetString(itsPattern.GetGenre())); itsPattern.SetGenre(wFooter->GetString(itsPattern.GetGenre()));
*w->Current().first << fmtBold << "Genre: " << fmtBoldEnd << ' ' << ShowTag(itsPattern.GetGenre()); *w->Current().first << fmtBold << "Genre: " << fmtBoldEnd << ' ';
ShowTag(*w->Current().first, itsPattern.GetGenre());
break; break;
} }
case 8: case 8:
{ {
Statusbar() << fmtBold << "Year: " << fmtBoldEnd; Statusbar() << fmtBold << "Year: " << fmtBoldEnd;
itsPattern.SetDate(wFooter->GetString(itsPattern.GetDate())); itsPattern.SetDate(wFooter->GetString(itsPattern.GetDate()));
*w->Current().first << fmtBold << "Year: " << fmtBoldEnd << ' ' << ShowTag(itsPattern.GetDate()); *w->Current().first << fmtBold << "Year: " << fmtBoldEnd << ' ';
ShowTag(*w->Current().first, itsPattern.GetDate());
break; break;
} }
case 9: case 9:
{ {
Statusbar() << fmtBold << "Comment: " << fmtBoldEnd; Statusbar() << fmtBold << "Comment: " << fmtBoldEnd;
itsPattern.SetComment(wFooter->GetString(itsPattern.GetComment())); itsPattern.SetComment(wFooter->GetString(itsPattern.GetComment()));
*w->Current().first << fmtBold << "Comment: " << fmtBoldEnd << ' ' << ShowTag(itsPattern.GetComment()); *w->Current().first << fmtBold << "Comment: " << fmtBoldEnd << ' ';
ShowTag(*w->Current().first, itsPattern.GetComment());
break; break;
} }
case 11: case 11:
@@ -344,16 +354,35 @@ void SearchEngine::Prepare()
catch (List::InvalidItem) { } catch (List::InvalidItem) { }
} }
*w->at(0).first << fmtBold << "Any: " << fmtBoldEnd << ' ' << ShowTag(itsPattern.Any()); *w->at(0).first << fmtBold << "Any: " << fmtBoldEnd << ' ';
*w->at(1).first << fmtBold << "Artist: " << fmtBoldEnd << ' ' << ShowTag(itsPattern.GetArtist()); ShowTag(*w->at(0).first, itsPattern.Any());
*w->at(2).first << fmtBold << "Title: " << fmtBoldEnd << ' ' << ShowTag(itsPattern.GetTitle());
*w->at(3).first << fmtBold << "Album: " << fmtBoldEnd << ' ' << ShowTag(itsPattern.GetAlbum()); *w->at(1).first << fmtBold << "Artist: " << fmtBoldEnd << ' ';
*w->at(4).first << fmtBold << "Filename: " << fmtBoldEnd << ' ' << ShowTag(itsPattern.GetName()); ShowTag(*w->at(1).first, itsPattern.GetArtist());
*w->at(5).first << fmtBold << "Composer: " << fmtBoldEnd << ' ' << ShowTag(itsPattern.GetComposer());
*w->at(6).first << fmtBold << "Performer:" << fmtBoldEnd << ' ' << ShowTag(itsPattern.GetPerformer()); *w->at(2).first << fmtBold << "Title: " << fmtBoldEnd << ' ';
*w->at(7).first << fmtBold << "Genre: " << fmtBoldEnd << ' ' << ShowTag(itsPattern.GetGenre()); ShowTag(*w->at(2).first, itsPattern.GetTitle());
*w->at(8).first << fmtBold << "Year: " << fmtBoldEnd << ' ' << ShowTag(itsPattern.GetDate());
*w->at(9).first << fmtBold << "Comment: " << fmtBoldEnd << ' ' << ShowTag(itsPattern.GetComment()); *w->at(3).first << fmtBold << "Album: " << fmtBoldEnd << ' ';
ShowTag(*w->at(3).first, itsPattern.GetAlbum());
*w->at(4).first << fmtBold << "Filename: " << fmtBoldEnd << ' ';
ShowTag(*w->at(4).first, itsPattern.GetName());
*w->at(5).first << fmtBold << "Composer: " << fmtBoldEnd << ' ';
ShowTag(*w->at(5).first, itsPattern.GetComposer());
*w->at(6).first << fmtBold << "Performer:" << fmtBoldEnd << ' ';
ShowTag(*w->at(6).first, itsPattern.GetPerformer());
*w->at(7).first << fmtBold << "Genre: " << fmtBoldEnd << ' ';
ShowTag(*w->at(7).first, itsPattern.GetGenre());
*w->at(8).first << fmtBold << "Year: " << fmtBoldEnd << ' ';
ShowTag(*w->at(8).first, itsPattern.GetDate());
*w->at(9).first << fmtBold << "Comment: " << fmtBoldEnd << ' ';
ShowTag(*w->at(9).first, itsPattern.GetComment());
*w->at(11).first << fmtBold << "Search in:" << fmtBoldEnd << ' ' << (Config.search_in_db ? "Database" : "Current playlist"); *w->at(11).first << fmtBold << "Search in:" << fmtBoldEnd << ' ' << (Config.search_in_db ? "Database" : "Current playlist");
*w->at(12).first << fmtBold << "Search mode:" << fmtBoldEnd << ' ' << (MatchToPattern ? NormalMode : StrictMode); *w->at(12).first << fmtBold << "Search mode:" << fmtBoldEnd << ' ' << (MatchToPattern ? NormalMode : StrictMode);

View File

@@ -101,70 +101,80 @@ void TinyTagEditor::EnterPressed()
{ {
Statusbar() << fmtBold << "Title: " << fmtBoldEnd; Statusbar() << fmtBold << "Title: " << fmtBoldEnd;
s.SetTitle(wFooter->GetString(s.GetTitle())); s.SetTitle(wFooter->GetString(s.GetTitle()));
w->at(option) << fmtBold << "Title:" << fmtBoldEnd << ' ' << ShowTag(s.GetTitle()); w->at(option) << fmtBold << "Title:" << fmtBoldEnd << ' ';
ShowTag(w->at(option), s.GetTitle());
break; break;
} }
case 2: case 2:
{ {
Statusbar() << fmtBold << "Artist: " << fmtBoldEnd; Statusbar() << fmtBold << "Artist: " << fmtBoldEnd;
s.SetArtist(wFooter->GetString(s.GetArtist())); s.SetArtist(wFooter->GetString(s.GetArtist()));
w->at(option) << fmtBold << "Artist:" << fmtBoldEnd << ' ' << ShowTag(s.GetArtist()); w->at(option) << fmtBold << "Artist:" << fmtBoldEnd << ' ';
ShowTag(w->at(option), s.GetArtist());
break; break;
} }
case 3: case 3:
{ {
Statusbar() << fmtBold << "Album: " << fmtBoldEnd; Statusbar() << fmtBold << "Album: " << fmtBoldEnd;
s.SetAlbum(wFooter->GetString(s.GetAlbum())); s.SetAlbum(wFooter->GetString(s.GetAlbum()));
w->at(option) << fmtBold << "Album:" << fmtBoldEnd << ' ' << ShowTag(s.GetAlbum()); w->at(option) << fmtBold << "Album:" << fmtBoldEnd << ' ';
ShowTag(w->at(option), s.GetAlbum());
break; break;
} }
case 4: case 4:
{ {
Statusbar() << fmtBold << "Year: " << fmtBoldEnd; Statusbar() << fmtBold << "Year: " << fmtBoldEnd;
s.SetDate(wFooter->GetString(s.GetDate())); s.SetDate(wFooter->GetString(s.GetDate()));
w->at(option) << fmtBold << "Year:" << fmtBoldEnd << ' ' << ShowTag(s.GetDate()); w->at(option) << fmtBold << "Year:" << fmtBoldEnd << ' ';
ShowTag(w->at(option), s.GetDate());
break; break;
} }
case 5: case 5:
{ {
Statusbar() << fmtBold << "Track: " << fmtBoldEnd; Statusbar() << fmtBold << "Track: " << fmtBoldEnd;
s.SetTrack(wFooter->GetString(s.GetTrack())); s.SetTrack(wFooter->GetString(s.GetTrack()));
w->at(option) << fmtBold << "Track:" << fmtBoldEnd << ' ' << ShowTag(s.GetTrack()); w->at(option) << fmtBold << "Track:" << fmtBoldEnd << ' ';
ShowTag(w->at(option), s.GetTrack());
break; break;
} }
case 6: case 6:
{ {
Statusbar() << fmtBold << "Genre: " << fmtBoldEnd; Statusbar() << fmtBold << "Genre: " << fmtBoldEnd;
s.SetGenre(wFooter->GetString(s.GetGenre())); s.SetGenre(wFooter->GetString(s.GetGenre()));
w->at(option) << fmtBold << "Genre:" << fmtBoldEnd << ' ' << ShowTag(s.GetGenre()); w->at(option) << fmtBold << "Genre:" << fmtBoldEnd << ' ';
ShowTag(w->at(option), s.GetGenre());
break; break;
} }
case 7: case 7:
{ {
Statusbar() << fmtBold << "Composer: " << fmtBoldEnd; Statusbar() << fmtBold << "Composer: " << fmtBoldEnd;
s.SetComposer(wFooter->GetString(s.GetComposer())); s.SetComposer(wFooter->GetString(s.GetComposer()));
w->at(option) << fmtBold << "Composer:" << fmtBoldEnd << ' ' << ShowTag(s.GetComposer()); w->at(option) << fmtBold << "Composer:" << fmtBoldEnd << ' ';
ShowTag(w->at(option), s.GetComposer());
break; break;
} }
case 8: case 8:
{ {
Statusbar() << fmtBold << "Performer: " << fmtBoldEnd; Statusbar() << fmtBold << "Performer: " << fmtBoldEnd;
s.SetPerformer(wFooter->GetString(s.GetPerformer())); s.SetPerformer(wFooter->GetString(s.GetPerformer()));
w->at(option) << fmtBold << "Performer:" << fmtBoldEnd << ' ' << ShowTag(s.GetPerformer()); w->at(option) << fmtBold << "Performer:" << fmtBoldEnd << ' ';
ShowTag(w->at(option), s.GetPerformer());
break; break;
} }
case 9: case 9:
{ {
Statusbar() << fmtBold << "Disc: " << fmtBoldEnd; Statusbar() << fmtBold << "Disc: " << fmtBoldEnd;
s.SetDisc(wFooter->GetString(s.GetDisc())); s.SetDisc(wFooter->GetString(s.GetDisc()));
w->at(option) << fmtBold << "Disc:" << fmtBoldEnd << ' ' << ShowTag(s.GetDisc()); w->at(option) << fmtBold << "Disc:" << fmtBoldEnd << ' ';
ShowTag(w->at(option), s.GetDisc());
break; break;
} }
case 10: case 10:
{ {
Statusbar() << fmtBold << "Comment: " << fmtBoldEnd; Statusbar() << fmtBold << "Comment: " << fmtBoldEnd;
s.SetComment(wFooter->GetString(s.GetComment())); s.SetComment(wFooter->GetString(s.GetComment()));
w->at(option) << fmtBold << "Comment:" << fmtBoldEnd << ' ' << ShowTag(s.GetComment()); w->at(option) << fmtBold << "Comment:" << fmtBoldEnd << ' ';
ShowTag(w->at(option), s.GetComment());
break; break;
} }
case 12: case 12:
@@ -278,22 +288,34 @@ bool TinyTagEditor::GetTags()
w->Highlight(8); w->Highlight(8);
w->at(0) << fmtBold << Config.color1 << "Song name: " << fmtBoldEnd << Config.color2 << s.GetName() << clEnd; w->at(0) << fmtBold << Config.color1 << "Song name: " << fmtBoldEnd << Config.color2 << s.GetName() << clEnd;
w->at(1) << fmtBold << Config.color1 << "Location in DB: " << fmtBoldEnd << Config.color2 << ShowTag(s.GetDirectory()) << clEnd; w->at(1) << fmtBold << Config.color1 << "Location in DB: " << fmtBoldEnd << Config.color2;
ShowTag(w->at(1), s.GetDirectory());
w->at(1) << clEnd;
w->at(3) << fmtBold << Config.color1 << "Length: " << fmtBoldEnd << Config.color2 << s.GetLength() << clEnd; w->at(3) << fmtBold << Config.color1 << "Length: " << fmtBoldEnd << Config.color2 << s.GetLength() << clEnd;
w->at(4) << fmtBold << Config.color1 << "Bitrate: " << fmtBoldEnd << Config.color2 << f.audioProperties()->bitrate() << " kbps" << clEnd; w->at(4) << fmtBold << Config.color1 << "Bitrate: " << fmtBoldEnd << Config.color2 << f.audioProperties()->bitrate() << " kbps" << clEnd;
w->at(5) << fmtBold << Config.color1 << "Sample rate: " << fmtBoldEnd << Config.color2 << f.audioProperties()->sampleRate() << " Hz" << clEnd; w->at(5) << fmtBold << Config.color1 << "Sample rate: " << fmtBoldEnd << Config.color2 << f.audioProperties()->sampleRate() << " Hz" << clEnd;
w->at(6) << fmtBold << Config.color1 << "Channels: " << fmtBoldEnd << Config.color2 << (f.audioProperties()->channels() == 1 ? "Mono" : "Stereo") << clDefault; w->at(6) << fmtBold << Config.color1 << "Channels: " << fmtBoldEnd << Config.color2 << (f.audioProperties()->channels() == 1 ? "Mono" : "Stereo") << clDefault;
w->at(8) << fmtBold << "Title:" << fmtBoldEnd << ' ' << ShowTag(s.GetTitle()); w->at(8) << fmtBold << "Title:" << fmtBoldEnd << ' ';
w->at(9) << fmtBold << "Artist:" << fmtBoldEnd << ' ' << ShowTag(s.GetArtist()); ShowTag(w->at(8), s.GetTitle());
w->at(10) << fmtBold << "Album:" << fmtBoldEnd << ' ' << ShowTag(s.GetAlbum()); w->at(9) << fmtBold << "Artist:" << fmtBoldEnd << ' ';
w->at(11) << fmtBold << "Year:" << fmtBoldEnd << ' ' << ShowTag(s.GetDate()); ShowTag(w->at(9), s.GetArtist());
w->at(12) << fmtBold << "Track:" << fmtBoldEnd << ' ' << ShowTag(s.GetTrack()); w->at(10) << fmtBold << "Album:" << fmtBoldEnd << ' ';
w->at(13) << fmtBold << "Genre:" << fmtBoldEnd << ' ' << ShowTag(s.GetGenre()); ShowTag(w->at(10), s.GetAlbum());
w->at(14) << fmtBold << "Composer:" << fmtBoldEnd << ' ' << ShowTag(s.GetComposer()); w->at(11) << fmtBold << "Year:" << fmtBoldEnd << ' ';
w->at(15) << fmtBold << "Performer:" << fmtBoldEnd << ' ' << ShowTag(s.GetPerformer()); ShowTag(w->at(11), s.GetDate());
w->at(16) << fmtBold << "Disc:" << fmtBoldEnd << ' ' << ShowTag(s.GetDisc()); w->at(12) << fmtBold << "Track:" << fmtBoldEnd << ' ';
w->at(17) << fmtBold << "Comment:" << fmtBoldEnd << ' ' << ShowTag(s.GetComment()); ShowTag(w->at(12), s.GetTrack());
w->at(13) << fmtBold << "Genre:" << fmtBoldEnd << ' ';
ShowTag(w->at(13), s.GetGenre());
w->at(14) << fmtBold << "Composer:" << fmtBoldEnd << ' ';
ShowTag(w->at(14), s.GetComposer());
w->at(15) << fmtBold << "Performer:" << fmtBoldEnd << ' ';
ShowTag(w->at(15), s.GetPerformer());
w->at(16) << fmtBold << "Disc:" << fmtBoldEnd << ' ';
ShowTag(w->at(16), s.GetDisc());
w->at(17) << fmtBold << "Comment:" << fmtBoldEnd << ' ';
ShowTag(w->at(17), s.GetComment());
w->at(19) << fmtBold << "Filename:" << fmtBoldEnd << ' ' << s.GetName(); w->at(19) << fmtBold << "Filename:" << fmtBoldEnd << ' ' << s.GetName();