improve handling statusbar messages (+ some minor various fixes)
This commit is contained in:
125
src/helpers.cpp
125
src/helpers.cpp
@@ -47,9 +47,6 @@ extern bool search_case_sensitive;
|
||||
extern bool search_match_to_pattern;
|
||||
|
||||
extern string EMPTY_TAG;
|
||||
extern string UNKNOWN_ARTIST;
|
||||
extern string UNKNOWN_TITLE;
|
||||
extern string UNKNOWN_ALBUM;
|
||||
|
||||
const string term_type = getenv("TERM") ? getenv("TERM") : "";
|
||||
|
||||
@@ -274,6 +271,49 @@ void EscapeUnallowedChars(string &s)
|
||||
}
|
||||
}
|
||||
|
||||
Window &operator<<(Window &w, mpd_TagItems tag)
|
||||
{
|
||||
switch (tag)
|
||||
{
|
||||
case MPD_TAG_ITEM_ARTIST:
|
||||
w << "Artist";
|
||||
break;
|
||||
case MPD_TAG_ITEM_ALBUM:
|
||||
w << "Album";
|
||||
break;
|
||||
case MPD_TAG_ITEM_TITLE:
|
||||
w << "Title";
|
||||
break;
|
||||
case MPD_TAG_ITEM_TRACK:
|
||||
w << "Track";
|
||||
break;
|
||||
case MPD_TAG_ITEM_GENRE:
|
||||
w << "Genre";
|
||||
break;
|
||||
case MPD_TAG_ITEM_DATE:
|
||||
w << "Year";
|
||||
break;
|
||||
case MPD_TAG_ITEM_COMPOSER:
|
||||
w << "Composer";
|
||||
break;
|
||||
case MPD_TAG_ITEM_PERFORMER:
|
||||
w << "Performer";
|
||||
break;
|
||||
case MPD_TAG_ITEM_COMMENT:
|
||||
w << "Comment";
|
||||
break;
|
||||
case MPD_TAG_ITEM_DISC:
|
||||
w << "Disc";
|
||||
break;
|
||||
case MPD_TAG_ITEM_FILENAME:
|
||||
w << "Filename";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return w;
|
||||
}
|
||||
|
||||
string IntoStr(mpd_TagItems tag)
|
||||
{
|
||||
switch (tag)
|
||||
@@ -498,7 +538,7 @@ void DisplaySongInColumns(const Song &s, void *s_template, Menu<Song> *menu)
|
||||
ss = s.GetArtist();
|
||||
break;
|
||||
case 't':
|
||||
if (s.GetTitle() != UNKNOWN_TITLE)
|
||||
if (s.GetTitle() != EMPTY_TAG)
|
||||
ss = s.GetTitle();
|
||||
else
|
||||
{
|
||||
@@ -554,7 +594,7 @@ void DisplaySongInColumns(const Song &s, void *s_template, Menu<Song> *menu)
|
||||
void DisplaySong(const Song &s, void *data, Menu<Song> *menu)
|
||||
{
|
||||
const string &song_template = data ? *static_cast<string *>(data) : "";
|
||||
basic_buffer<char> lresult;
|
||||
basic_buffer<my_char_t> buf;
|
||||
bool right = 0;
|
||||
|
||||
string::const_iterator goto_pos, prev_pos;
|
||||
@@ -656,7 +696,7 @@ void DisplaySong(const Song &s, void *data, Menu<Song> *menu)
|
||||
if (!right)
|
||||
*menu << *it;
|
||||
else
|
||||
lresult << *it;
|
||||
buf << *it;
|
||||
}
|
||||
else if (*it == '%')
|
||||
{
|
||||
@@ -666,43 +706,78 @@ void DisplaySong(const Song &s, void *data, Menu<Song> *menu)
|
||||
if (!right)
|
||||
*menu << s.GetLength();
|
||||
else
|
||||
lresult << s.GetLength();
|
||||
buf << TO_WSTRING(s.GetLength());
|
||||
break;
|
||||
case 'F':
|
||||
*menu << s.GetFile();
|
||||
if (!right)
|
||||
*menu << s.GetFile();
|
||||
else
|
||||
buf << TO_WSTRING(s.GetFile());
|
||||
break;
|
||||
case 'f':
|
||||
*menu << s.GetName();
|
||||
if (!right)
|
||||
*menu << s.GetName();
|
||||
else
|
||||
buf << TO_WSTRING(s.GetName());
|
||||
break;
|
||||
case 'a':
|
||||
*menu << s.GetArtist();
|
||||
if (!right)
|
||||
*menu << s.GetArtist();
|
||||
else
|
||||
buf << TO_WSTRING(s.GetArtist());
|
||||
break;
|
||||
case 'b':
|
||||
*menu << s.GetAlbum();
|
||||
if (!right)
|
||||
*menu << s.GetAlbum();
|
||||
else
|
||||
break;
|
||||
case 'y':
|
||||
*menu << s.GetYear();
|
||||
if (!right)
|
||||
*menu << s.GetYear();
|
||||
else
|
||||
buf << TO_WSTRING(s.GetYear());
|
||||
break;
|
||||
case 'n':
|
||||
*menu << s.GetTrack();
|
||||
if (!right)
|
||||
*menu << s.GetTrack();
|
||||
else
|
||||
buf << TO_WSTRING(s.GetTrack());
|
||||
break;
|
||||
case 'g':
|
||||
*menu << s.GetGenre();
|
||||
if (!right)
|
||||
*menu << s.GetGenre();
|
||||
else
|
||||
buf << TO_WSTRING(s.GetGenre());
|
||||
break;
|
||||
case 'c':
|
||||
*menu << s.GetComposer();
|
||||
if (!right)
|
||||
*menu << s.GetComposer();
|
||||
else
|
||||
buf << TO_WSTRING(s.GetComposer());
|
||||
break;
|
||||
case 'p':
|
||||
*menu << s.GetPerformer();
|
||||
if (!right)
|
||||
*menu << s.GetPerformer();
|
||||
else
|
||||
buf << TO_WSTRING(s.GetPerformer());
|
||||
break;
|
||||
case 'd':
|
||||
*menu << s.GetDisc();
|
||||
if (!right)
|
||||
*menu << s.GetDisc();
|
||||
else
|
||||
buf << TO_WSTRING(s.GetDisc());
|
||||
break;
|
||||
case 'C':
|
||||
*menu << s.GetComment();
|
||||
if (!right)
|
||||
*menu << s.GetComment();
|
||||
else
|
||||
buf << TO_WSTRING(s.GetComment());
|
||||
break;
|
||||
case 't':
|
||||
*menu << s.GetTitle();
|
||||
if (!right)
|
||||
*menu << s.GetTitle();
|
||||
else
|
||||
buf << TO_WSTRING(s.GetTitle());
|
||||
break;
|
||||
case 'r':
|
||||
right = 1;
|
||||
@@ -717,13 +792,13 @@ void DisplaySong(const Song &s, void *data, Menu<Song> *menu)
|
||||
if (!right)
|
||||
*menu << Color(*it-'0');
|
||||
else
|
||||
lresult << Color(*it-'0');
|
||||
buf << Color(*it-'0');
|
||||
}
|
||||
}
|
||||
if (right)
|
||||
{
|
||||
menu->GotoXY(menu->GetWidth()-lresult.Str().length(), menu->Y());
|
||||
*menu << lresult;
|
||||
menu->GotoXY(menu->GetWidth()-buf.Str().length(), menu->Y());
|
||||
*menu << buf;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -784,3 +859,9 @@ void ShowMessage(const char *format, ...)
|
||||
}
|
||||
}
|
||||
|
||||
Window &Statusbar()
|
||||
{
|
||||
wFooter->GotoXY(0, Config.statusbar_visibility);
|
||||
wclrtoeol(wFooter->Raw());
|
||||
return *wFooter;
|
||||
}
|
||||
|
||||
@@ -53,6 +53,8 @@ bool Keypressed(int, const int *);
|
||||
void WindowTitle(const string &);
|
||||
void EscapeUnallowedChars(string &);
|
||||
|
||||
Window &operator<<(Window &, mpd_TagItems);
|
||||
|
||||
string IntoStr(mpd_TagItems);
|
||||
string FindSharedDir(const string &, const string &);
|
||||
string TotalPlaylistLength();
|
||||
@@ -61,7 +63,9 @@ string DisplayColumns(string);
|
||||
void DisplaySongInColumns(const Song &, void *, Menu<Song> *);
|
||||
void DisplaySong(const Song &, void * = &Config.song_list_format, Menu<Song> * = NULL);
|
||||
void GetInfo(Song &, Scrollpad &);
|
||||
|
||||
void ShowMessage(const char *, ...);
|
||||
Window &Statusbar();
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -21,10 +21,10 @@
|
||||
#include <algorithm>
|
||||
#include "misc.h"
|
||||
|
||||
int Abs(int num)
|
||||
/*int Abs(int num)
|
||||
{
|
||||
return (num < 0 ? -num : num);
|
||||
}
|
||||
}*/
|
||||
|
||||
void ToLower(string &s)
|
||||
{
|
||||
@@ -43,10 +43,10 @@ string IntoStr(int l)
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
string IntoStr(double l, int precision)
|
||||
/*string IntoStr(double l, int precision)
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << std::fixed << std::setprecision(precision) << l;
|
||||
return ss.str();
|
||||
}
|
||||
}*/
|
||||
|
||||
|
||||
@@ -28,14 +28,14 @@
|
||||
|
||||
using std::string;
|
||||
|
||||
int Abs(int);
|
||||
//int Abs(int);
|
||||
|
||||
void ToLower(string &);
|
||||
|
||||
int StrToInt(string);
|
||||
|
||||
string IntoStr(int);
|
||||
string IntoStr(double, int);
|
||||
//string IntoStr(double, int);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
108
src/ncmpcpp.cpp
108
src/ncmpcpp.cpp
@@ -155,9 +155,6 @@ extern bool search_case_sensitive;
|
||||
extern bool search_match_to_pattern;
|
||||
|
||||
extern string EMPTY_TAG;
|
||||
extern string UNKNOWN_ARTIST;
|
||||
extern string UNKNOWN_TITLE;
|
||||
extern string UNKNOWN_ALBUM;
|
||||
extern string playlist_stats;
|
||||
extern string volume_state;
|
||||
|
||||
@@ -203,10 +200,7 @@ int main(int argc, char *argv[])
|
||||
if (!ConnectToMPD())
|
||||
return -1;
|
||||
|
||||
InitScreen();
|
||||
|
||||
//if (Config.colors_enabled)
|
||||
// Window::EnableColors();
|
||||
InitScreen(Config.colors_enabled);
|
||||
|
||||
int main_start_y = 2;
|
||||
int main_height = LINES-4;
|
||||
@@ -514,7 +508,7 @@ int main(int argc, char *argv[])
|
||||
Mpd->AddSearch(Config.media_lib_primary_tag, mLibArtists->Current());
|
||||
Mpd->AddSearch(MPD_TAG_ITEM_ALBUM, *it);
|
||||
Mpd->CommitSearch(l);
|
||||
if (!l.empty() && l[0]->GetAlbum() != UNKNOWN_ALBUM)
|
||||
if (!l.empty() && l[0]->GetAlbum() != EMPTY_TAG)
|
||||
maplist[l[0]->toString(Config.media_lib_album_format)] = *it;
|
||||
FreeSongList(l);
|
||||
}
|
||||
@@ -726,7 +720,7 @@ int main(int argc, char *argv[])
|
||||
if (current_screen == csLyrics && reload_lyrics)
|
||||
{
|
||||
const Song &s = mPlaylist->at(now_playing);
|
||||
if (s.GetArtist() != UNKNOWN_ARTIST && s.GetTitle() != UNKNOWN_TITLE)
|
||||
if (s.GetArtist() != EMPTY_TAG && s.GetTitle() != EMPTY_TAG)
|
||||
goto LOAD_LYRICS;
|
||||
else
|
||||
reload_lyrics = 0;
|
||||
@@ -1020,8 +1014,8 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Title:[/b] ", 1);
|
||||
if (s.GetTitle() == UNKNOWN_TITLE)
|
||||
Statusbar() << fmtBold << "Title: " << fmtBoldEnd;
|
||||
if (s.GetTitle() == EMPTY_TAG)
|
||||
s.SetTitle(wFooter->GetString());
|
||||
else
|
||||
s.SetTitle(wFooter->GetString(s.GetTitle()));
|
||||
@@ -1030,8 +1024,8 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Artist:[/b] ", 1);
|
||||
if (s.GetArtist() == UNKNOWN_ARTIST)
|
||||
Statusbar() << fmtBold << "Artist: " << fmtBoldEnd;
|
||||
if (s.GetArtist() == EMPTY_TAG)
|
||||
s.SetArtist(wFooter->GetString());
|
||||
else
|
||||
s.SetArtist(wFooter->GetString(s.GetArtist()));
|
||||
@@ -1040,8 +1034,8 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Album:[/b] ", 1);
|
||||
if (s.GetAlbum() == UNKNOWN_ALBUM)
|
||||
Statusbar() << fmtBold << "Album: " << fmtBoldEnd;
|
||||
if (s.GetAlbum() == EMPTY_TAG)
|
||||
s.SetAlbum(wFooter->GetString());
|
||||
else
|
||||
s.SetAlbum(wFooter->GetString(s.GetAlbum()));
|
||||
@@ -1050,7 +1044,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Year:[/b] ", 1);
|
||||
Statusbar() << fmtBold << "Year: " << fmtBoldEnd;
|
||||
if (s.GetYear() == EMPTY_TAG)
|
||||
s.SetYear(wFooter->GetString(4));
|
||||
else
|
||||
@@ -1060,7 +1054,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Track:[/b] ", 1);
|
||||
Statusbar() << fmtBold << "Track: " << fmtBoldEnd;
|
||||
if (s.GetTrack() == EMPTY_TAG)
|
||||
s.SetTrack(wFooter->GetString(3));
|
||||
else
|
||||
@@ -1070,7 +1064,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Genre:[/b] ", 1);
|
||||
Statusbar() << fmtBold << "Genre: " << fmtBoldEnd;
|
||||
if (s.GetGenre() == EMPTY_TAG)
|
||||
s.SetGenre(wFooter->GetString());
|
||||
else
|
||||
@@ -1080,7 +1074,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Composer:[/b] ", 1);
|
||||
Statusbar() << fmtBold << "Composer: " << fmtBoldEnd;
|
||||
if (s.GetComposer() == EMPTY_TAG)
|
||||
s.SetComposer(wFooter->GetString());
|
||||
else
|
||||
@@ -1090,7 +1084,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
case 8:
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Performer:[/b] ", 1);
|
||||
Statusbar() << fmtBold << "Performer: " << fmtBoldEnd;
|
||||
if (s.GetPerformer() == EMPTY_TAG)
|
||||
s.SetPerformer(wFooter->GetString());
|
||||
else
|
||||
@@ -1100,7 +1094,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
case 9:
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Disc:[/b] ", 1);
|
||||
Statusbar() << fmtBold << "Disc: " << fmtBoldEnd;
|
||||
if (s.GetDisc() == EMPTY_TAG)
|
||||
s.SetDisc(wFooter->GetString());
|
||||
else
|
||||
@@ -1110,7 +1104,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
case 10:
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Comment:[/b] ", 1);
|
||||
Statusbar() << fmtBold << "Comment: " << fmtBoldEnd;
|
||||
if (s.GetComment() == EMPTY_TAG)
|
||||
s.SetComment(wFooter->GetString());
|
||||
else
|
||||
@@ -1120,7 +1114,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
case 12:
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Filename:[/b] ", 1);
|
||||
Statusbar() << fmtBold << "Filename: " << fmtBoldEnd;
|
||||
string filename = s.GetNewName().empty() ? s.GetName() : s.GetNewName();
|
||||
int dot = filename.find_last_of(".");
|
||||
string extension = filename.substr(dot);
|
||||
@@ -1194,7 +1188,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Filename:[/b] ", 1);
|
||||
Statusbar() << fmtBold << "Filename: " << fmtBoldEnd;
|
||||
if (s.GetName() == EMPTY_TAG)
|
||||
s.SetFile(wFooter->GetString());
|
||||
else
|
||||
@@ -1204,8 +1198,8 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Title:[/b] ", 1);
|
||||
if (s.GetTitle() == UNKNOWN_TITLE)
|
||||
Statusbar() << fmtBold << "Title: " << fmtBoldEnd;
|
||||
if (s.GetTitle() == EMPTY_TAG)
|
||||
s.SetTitle(wFooter->GetString());
|
||||
else
|
||||
s.SetTitle(wFooter->GetString(s.GetTitle()));
|
||||
@@ -1214,8 +1208,8 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Artist:[/b] ", 1);
|
||||
if (s.GetArtist() == UNKNOWN_ARTIST)
|
||||
Statusbar() << fmtBold << "Artist: " << fmtBoldEnd;
|
||||
if (s.GetArtist() == EMPTY_TAG)
|
||||
s.SetArtist(wFooter->GetString());
|
||||
else
|
||||
s.SetArtist(wFooter->GetString(s.GetArtist()));
|
||||
@@ -1224,8 +1218,8 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Album:[/b] ", 1);
|
||||
if (s.GetAlbum() == UNKNOWN_ALBUM)
|
||||
Statusbar() << fmtBold << "Album: " << fmtBoldEnd;
|
||||
if (s.GetAlbum() == EMPTY_TAG)
|
||||
s.SetAlbum(wFooter->GetString());
|
||||
else
|
||||
s.SetAlbum(wFooter->GetString(s.GetAlbum()));
|
||||
@@ -1234,7 +1228,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Year:[/b] ", 1);
|
||||
Statusbar() << fmtBold << "Year: " << fmtBoldEnd;
|
||||
if (s.GetYear() == EMPTY_TAG)
|
||||
s.SetYear(wFooter->GetString(4));
|
||||
else
|
||||
@@ -1244,7 +1238,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Track:[/b] ", 1);
|
||||
Statusbar() << fmtBold << "Track: " << fmtBoldEnd;
|
||||
if (s.GetTrack() == EMPTY_TAG)
|
||||
s.SetTrack(wFooter->GetString(3));
|
||||
else
|
||||
@@ -1254,7 +1248,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Genre:[/b] ", 1);
|
||||
Statusbar() << fmtBold << "Genre: " << fmtBoldEnd;
|
||||
if (s.GetGenre() == EMPTY_TAG)
|
||||
s.SetGenre(wFooter->GetString());
|
||||
else
|
||||
@@ -1264,7 +1258,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
case 8:
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Comment:[/b] ", 1);
|
||||
Statusbar() << fmtBold << "Comment: " << fmtBoldEnd;
|
||||
if (s.GetComment() == EMPTY_TAG)
|
||||
s.SetComment(wFooter->GetString());
|
||||
else
|
||||
@@ -1604,7 +1598,7 @@ int main(int argc, char *argv[])
|
||||
if (wCurrent == mEditorTagTypes)
|
||||
{
|
||||
LockStatusbar();
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "Number tracks? [y/n] ", 1);
|
||||
Statusbar() << "Number tracks? [y/n] ";
|
||||
curs_set(1);
|
||||
int in = 0;
|
||||
do
|
||||
@@ -1665,7 +1659,7 @@ int main(int argc, char *argv[])
|
||||
string extension = old_name.substr(last_dot);
|
||||
old_name = old_name.substr(0, last_dot);
|
||||
LockStatusbar();
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]New filename:[/b] ", 1);
|
||||
Statusbar() << fmtBold << "New filename: " << fmtBoldEnd;
|
||||
string new_name = wFooter->GetString(old_name);
|
||||
UnlockStatusbar();
|
||||
if (!new_name.empty() && new_name != old_name)
|
||||
@@ -1715,7 +1709,7 @@ int main(int argc, char *argv[])
|
||||
if (wCurrent == mEditorTagTypes && id != 0 && id != 4 && set != NULL)
|
||||
{
|
||||
LockStatusbar();
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]" + mEditorTagTypes->Current() + "[/b]: ", 1);
|
||||
Statusbar() << fmtBold << mEditorTagTypes->Current() << fmtBoldEnd << ": ";
|
||||
mEditorTags->Current().GetEmptyFields(1);
|
||||
string new_tag = wFooter->GetString((mEditorTags->Current().*get)());
|
||||
mEditorTags->Current().GetEmptyFields(0);
|
||||
@@ -1727,7 +1721,7 @@ int main(int argc, char *argv[])
|
||||
else if (wCurrent == mEditorTags && set != NULL)
|
||||
{
|
||||
LockStatusbar();
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]" + mEditorTagTypes->Current() + "[/b]: ", 1);
|
||||
Statusbar() << fmtBold << mEditorTagTypes->Current() << fmtBoldEnd << ": ";
|
||||
mEditorTags->Current().GetEmptyFields(1);
|
||||
string new_tag = wFooter->GetString((mEditorTags->Current().*get)());
|
||||
mEditorTags->Current().GetEmptyFields(0);
|
||||
@@ -2041,7 +2035,7 @@ int main(int argc, char *argv[])
|
||||
const string &name = wCurrent == mBrowser ? mBrowser->Current().name : mPlaylistList->Current();
|
||||
if (current_screen != csBrowser || mBrowser->Current().type == itPlaylist)
|
||||
{
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "Delete playlist " + name + " ? [y/n] ", 1);
|
||||
Statusbar() << "Delete playlist " << name << " ? [y/n] ";
|
||||
curs_set(1);
|
||||
int in = 0;
|
||||
do
|
||||
@@ -2110,7 +2104,7 @@ int main(int argc, char *argv[])
|
||||
else if (Keypressed(input, Key.SavePlaylist))
|
||||
{
|
||||
LockStatusbar();
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "Save playlist as: ", 1);
|
||||
Statusbar() << "Save playlist as: ";
|
||||
string playlist_name = wFooter->GetString();
|
||||
UnlockStatusbar();
|
||||
if (playlist_name.find("/") != string::npos)
|
||||
@@ -2128,7 +2122,7 @@ int main(int argc, char *argv[])
|
||||
else
|
||||
{
|
||||
LockStatusbar();
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "Playlist already exists, overwrite: " + playlist_name + " ? [y/n] ", 1);
|
||||
Statusbar() << "Playlist already exists, overwrite: " << playlist_name << " ? [y/n] ";
|
||||
curs_set(1);
|
||||
int in = 0;
|
||||
messages_allowed = 0;
|
||||
@@ -2298,7 +2292,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
int from, to;
|
||||
size_t from, to;
|
||||
from = to = mPlaylist->Choice();
|
||||
// unbold now playing as if song changes during move, this won't be unbolded.
|
||||
if (to == now_playing && to < mPlaylist->Size()-1)
|
||||
@@ -2348,7 +2342,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
int from, to;
|
||||
size_t from, to;
|
||||
from = to = mPlaylistEditor->Choice();
|
||||
while (Keypressed(input, Key.MvSongDown) && to < mPlaylistEditor->Size()-1)
|
||||
{
|
||||
@@ -2369,7 +2363,7 @@ int main(int argc, char *argv[])
|
||||
else if (Keypressed(input, Key.Add))
|
||||
{
|
||||
LockStatusbar();
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "Add: ", 1);
|
||||
Statusbar() << "Add: ";
|
||||
string path = wFooter->GetString();
|
||||
UnlockStatusbar();
|
||||
if (!path.empty())
|
||||
@@ -2500,7 +2494,7 @@ int main(int argc, char *argv[])
|
||||
else if (Keypressed(input, Key.SetCrossfade))
|
||||
{
|
||||
LockStatusbar();
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "Set crossfade to: ", 1);
|
||||
Statusbar() << "Set crossfade to: ";
|
||||
string crossfade = wFooter->GetString(3);
|
||||
UnlockStatusbar();
|
||||
int cf = StrToInt(crossfade);
|
||||
@@ -2517,7 +2511,7 @@ int main(int argc, char *argv[])
|
||||
if (wCurrent == mLibArtists)
|
||||
{
|
||||
LockStatusbar();
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]" + IntoStr(Config.media_lib_primary_tag) + ":[/b] ", 1);
|
||||
Statusbar() << fmtBold << Config.media_lib_primary_tag << fmtBoldEnd << ": ";
|
||||
string new_tag = wFooter->GetString(mLibArtists->Current());
|
||||
UnlockStatusbar();
|
||||
if (!new_tag.empty() && new_tag != mLibArtists->Current())
|
||||
@@ -2554,7 +2548,7 @@ int main(int argc, char *argv[])
|
||||
else if (wCurrent == mLibAlbums)
|
||||
{
|
||||
LockStatusbar();
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Album:[/b] ", 1);
|
||||
Statusbar() << fmtBold << "Album: " << fmtBoldEnd;
|
||||
string new_album = wFooter->GetString(mLibAlbums->Current().second);
|
||||
UnlockStatusbar();
|
||||
if (!new_album.empty() && new_album != mLibAlbums->Current().second)
|
||||
@@ -2647,7 +2641,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
string old_dir = mEditorDirs->Current().first;
|
||||
LockStatusbar();
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "Directory: ", 1);
|
||||
Statusbar() << fmtBold << "Directory: " << fmtBoldEnd;
|
||||
string new_dir = wFooter->GetString(old_dir);
|
||||
UnlockStatusbar();
|
||||
if (!new_dir.empty() && new_dir != old_dir)
|
||||
@@ -2669,7 +2663,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
string old_dir = mBrowser->Current().name;
|
||||
LockStatusbar();
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Directory:[/b] ", 1);
|
||||
Statusbar() << fmtBold << "Directory: " << fmtBoldEnd;
|
||||
string new_dir = wFooter->GetString(old_dir);
|
||||
UnlockStatusbar();
|
||||
if (!new_dir.empty() && new_dir != old_dir)
|
||||
@@ -2697,7 +2691,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
string old_name = wCurrent == mPlaylistList ? mPlaylistList->Current() : mBrowser->Current().name;
|
||||
LockStatusbar();
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "[.b]Playlist:[/b] ", 1);
|
||||
Statusbar() << fmtBold << "Playlist: " << fmtBoldEnd;
|
||||
string new_name = wFooter->GetString(old_name);
|
||||
UnlockStatusbar();
|
||||
if (!new_name.empty() && new_name != old_name)
|
||||
@@ -2777,7 +2771,7 @@ int main(int argc, char *argv[])
|
||||
continue;
|
||||
}
|
||||
LockStatusbar();
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "Position to go (in %): ", 1);
|
||||
Statusbar() << "Position to go (in %): ";
|
||||
string position = wFooter->GetString(3);
|
||||
int newpos = StrToInt(position);
|
||||
if (newpos > 0 && newpos < 100 && !position.empty())
|
||||
@@ -2924,7 +2918,7 @@ int main(int argc, char *argv[])
|
||||
mDialog->Scroll(wEnd);
|
||||
}
|
||||
|
||||
int id = mDialog->Choice();
|
||||
size_t id = mDialog->Choice();
|
||||
|
||||
redraw_screen = 1;
|
||||
if (current_screen == csLibrary)
|
||||
@@ -2953,7 +2947,7 @@ int main(int argc, char *argv[])
|
||||
else if (id == 1)
|
||||
{
|
||||
LockStatusbar();
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "Save playlist as: ", 1);
|
||||
Statusbar() << "Save playlist as: ";
|
||||
string playlist = wFooter->GetString();
|
||||
UnlockStatusbar();
|
||||
if (!playlist.empty())
|
||||
@@ -3038,7 +3032,7 @@ int main(int argc, char *argv[])
|
||||
found_pos = -1;
|
||||
vFoundPositions.clear();
|
||||
LockStatusbar();
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "Find " + how + ": ", 1);
|
||||
Statusbar() << "Find " << how << ": ";
|
||||
string findme = wFooter->GetString();
|
||||
UnlockStatusbar();
|
||||
timer = time(NULL);
|
||||
@@ -3149,7 +3143,7 @@ int main(int argc, char *argv[])
|
||||
else if (wCurrent == mLibArtists)
|
||||
{
|
||||
LockStatusbar();
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "Tag type ? [[.b]a[/b]rtist/[.b]y[/b]ear/[.b]g[/b]enre/[.b]c[/b]omposer/[.b]p[/b]erformer] ", 1);
|
||||
Statusbar() << "Tag type ? [" << fmtBold << 'a' << fmtBoldEnd << "rtist/" << fmtBold << 'y' << fmtBoldEnd << "ear/" << fmtBold << 'g' << fmtBoldEnd << "enre/" << fmtBold << 'c' << fmtBoldEnd << "omposer/" << fmtBold << 'p' << fmtBoldEnd << "erformer] ";
|
||||
int item;
|
||||
curs_set(1);
|
||||
do
|
||||
@@ -3302,7 +3296,7 @@ int main(int argc, char *argv[])
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (*artist != UNKNOWN_ARTIST)
|
||||
if (*artist != EMPTY_TAG)
|
||||
{
|
||||
wPrev = wCurrent;
|
||||
wCurrent = sInfo;
|
||||
@@ -3393,7 +3387,7 @@ int main(int argc, char *argv[])
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (s->GetArtist() != UNKNOWN_ARTIST && s->GetTitle() != UNKNOWN_TITLE)
|
||||
if (s->GetArtist() != EMPTY_TAG && s->GetTitle() != EMPTY_TAG)
|
||||
{
|
||||
wPrev = wCurrent;
|
||||
prev_screen = current_screen;
|
||||
|
||||
@@ -123,9 +123,9 @@ void Scrollpad::MoveTo(size_t x, size_t y)
|
||||
|
||||
void Scrollpad::Resize(size_t width, size_t height)
|
||||
{
|
||||
if (width+itsStartX > size_t(COLS)
|
||||
/*if (width+itsStartX > size_t(COLS)
|
||||
|| height+itsStartY > size_t(LINES))
|
||||
throw BadSize();
|
||||
throw BadSize();*/
|
||||
|
||||
if (itsBorder != brNone)
|
||||
{
|
||||
|
||||
25
src/song.cpp
25
src/song.cpp
@@ -24,27 +24,10 @@
|
||||
extern ncmpcpp_config Config;
|
||||
|
||||
string EMPTY_TAG;
|
||||
string UNKNOWN_ARTIST;
|
||||
string UNKNOWN_TITLE;
|
||||
string UNKNOWN_ALBUM;
|
||||
|
||||
void DefineEmptyTags()
|
||||
{
|
||||
/*if (Config.empty_tags_color != clDefault)
|
||||
{
|
||||
const string et_col = IntoStr(Config.empty_tags_color);
|
||||
EMPTY_TAG = "[." + et_col + "]<empty>[/" + et_col + "]";
|
||||
UNKNOWN_ARTIST = "[." + et_col + "]<no artist>[/" + et_col + "]";
|
||||
UNKNOWN_TITLE = "[." + et_col + "]<no title>[/" + et_col + "]";
|
||||
UNKNOWN_ALBUM = "[." + et_col + "]<no album>[/" + et_col + "]";
|
||||
}
|
||||
else
|
||||
{*/
|
||||
EMPTY_TAG = "<empty>";
|
||||
UNKNOWN_ARTIST = "<empty>";
|
||||
UNKNOWN_TITLE = "<empty>";
|
||||
UNKNOWN_ALBUM = "<empty>";
|
||||
// }
|
||||
EMPTY_TAG = "<empty>";
|
||||
}
|
||||
|
||||
Song::Song(mpd_Song *s, bool copy_ptr) : itsSong(s),
|
||||
@@ -138,17 +121,17 @@ string Song::GetDirectory() const
|
||||
|
||||
string Song::GetArtist() const
|
||||
{
|
||||
return !itsSong->artist ? (itsGetEmptyFields ? "" : UNKNOWN_ARTIST) : itsSong->artist;
|
||||
return !itsSong->artist ? (itsGetEmptyFields ? "" : EMPTY_TAG) : itsSong->artist;
|
||||
}
|
||||
|
||||
string Song::GetTitle() const
|
||||
{
|
||||
return !itsSong->title ? (itsGetEmptyFields ? "" : UNKNOWN_TITLE) : itsSong->title;
|
||||
return !itsSong->title ? (itsGetEmptyFields ? "" : EMPTY_TAG) : itsSong->title;
|
||||
}
|
||||
|
||||
string Song::GetAlbum() const
|
||||
{
|
||||
return !itsSong->album ? (itsGetEmptyFields ? "" : UNKNOWN_ALBUM) : itsSong->album;
|
||||
return !itsSong->album ? (itsGetEmptyFields ? "" : EMPTY_TAG) : itsSong->album;
|
||||
}
|
||||
|
||||
string Song::GetTrack() const
|
||||
|
||||
@@ -123,7 +123,7 @@ void NcmpcppErrorCallback(Connection *Mpd, int errorid, const char *msg, void *)
|
||||
if (errorid == MPD_ACK_ERROR_PERMISSION)
|
||||
{
|
||||
wFooter->SetGetStringHelper(NULL);
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "Password: ", 1);
|
||||
Statusbar() << "Password: ";
|
||||
string password = wFooter->GetString();
|
||||
Mpd->SetPassword(password);
|
||||
Mpd->SendPassword();
|
||||
@@ -160,7 +160,7 @@ void NcmpcppStatusChanged(Connection *Mpd, StatusChanges changed, void *)
|
||||
if (!block_playlist_update)
|
||||
{
|
||||
SongList list;
|
||||
int playlist_length = Mpd->GetPlaylistLength();
|
||||
size_t playlist_length = Mpd->GetPlaylistLength();
|
||||
if (playlist_length != mPlaylist->Size())
|
||||
{
|
||||
if (playlist_length < mPlaylist->Size())
|
||||
@@ -190,7 +190,7 @@ void NcmpcppStatusChanged(Connection *Mpd, StatusChanges changed, void *)
|
||||
{
|
||||
Mpd->GetPlaylistChanges(-1, list);
|
||||
|
||||
for (int i = 0; i < mPlaylist->Size(); i++)
|
||||
for (size_t i = 0; i < mPlaylist->Size(); i++)
|
||||
{
|
||||
if (*list[i] != mPlaylist->at(i))
|
||||
{
|
||||
|
||||
@@ -121,7 +121,7 @@ namespace
|
||||
|
||||
try
|
||||
{
|
||||
for (int i = mask.find("%"); i != string::npos; i = mask.find("%"))
|
||||
for (size_t i = mask.find("%"); i != string::npos; i = mask.find("%"))
|
||||
{
|
||||
tags.push_back(make_pair(mask.at(i+1), ""));
|
||||
mask = mask.substr(i+2);
|
||||
@@ -197,7 +197,7 @@ SongSetFunction IntoSetFunction(mpd_TagItems tag)
|
||||
string FindSharedDir(Menu<Song> *menu)
|
||||
{
|
||||
SongList list;
|
||||
for (int i = 0; i < menu->Size(); i++)
|
||||
for (size_t i = 0; i < menu->Size(); i++)
|
||||
list.push_back(&menu->at(i));
|
||||
return FindSharedDir(list);
|
||||
}
|
||||
@@ -215,7 +215,7 @@ string FindSharedDir(const SongList &v)
|
||||
i++;
|
||||
result = result.substr(0, i);
|
||||
}
|
||||
int slash = result.find_last_of("/");
|
||||
size_t slash = result.find_last_of("/");
|
||||
result = slash != string::npos ? result.substr(0, slash) : "/";
|
||||
}
|
||||
return result;
|
||||
@@ -562,13 +562,14 @@ void __deal_with_filenames(SongList &v)
|
||||
case 0:
|
||||
{
|
||||
LockStatusbar();
|
||||
wFooter->WriteXY(0, Config.statusbar_visibility, "Pattern: ", 1);
|
||||
Statusbar() << "Pattern: ";
|
||||
string new_pattern = wFooter->GetString(Config.pattern);
|
||||
UnlockStatusbar();
|
||||
if (!new_pattern.empty())
|
||||
{
|
||||
Config.pattern = new_pattern;
|
||||
Main->at(0) = "Pattern: " + Config.pattern;
|
||||
Main->at(0) = "Pattern: ";
|
||||
Main->at(0) += Config.pattern;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -624,7 +625,7 @@ void __deal_with_filenames(SongList &v)
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < patterns_list.size(); i++)
|
||||
for (size_t i = 0; i < patterns_list.size(); i++)
|
||||
{
|
||||
if (patterns_list[i] == Config.pattern)
|
||||
{
|
||||
|
||||
@@ -20,11 +20,11 @@
|
||||
|
||||
#include "window.h"
|
||||
|
||||
void InitScreen()
|
||||
void InitScreen(bool enable_colors)
|
||||
{
|
||||
setlocale(LC_ALL, "");
|
||||
initscr();
|
||||
if (has_colors())
|
||||
if (has_colors() && enable_colors)
|
||||
{
|
||||
start_color();
|
||||
use_default_colors();
|
||||
@@ -201,27 +201,35 @@ void Window::Recreate()
|
||||
keypad(itsWindow, 1);
|
||||
}
|
||||
|
||||
void Window::MoveTo(int newx, int newy)
|
||||
void Window::MoveTo(size_t newx, size_t newy)
|
||||
{
|
||||
if (newx < 0 || newy < 0 || (newx == itsStartX && newy == itsStartY))
|
||||
if (newx == itsStartX && newy == itsStartY)
|
||||
return;
|
||||
else
|
||||
|
||||
/*if (newx > size_t(COLS)
|
||||
|| newy > size_t(LINES)
|
||||
|| itsWidth+newx > size_t(COLS)
|
||||
|| itsHeight+newy > size_t(LINES))
|
||||
throw BadSize();*/
|
||||
|
||||
itsStartX = newx;
|
||||
itsStartY = newy;
|
||||
if (itsBorder != brNone)
|
||||
{
|
||||
itsStartX = newx;
|
||||
itsStartY = newy;
|
||||
if (itsBorder != brNone)
|
||||
{
|
||||
itsStartX++;
|
||||
itsStartY++;
|
||||
}
|
||||
if (!itsTitle.empty())
|
||||
itsStartY += 2;
|
||||
mvwin(itsWindow, itsStartY, itsStartX);
|
||||
itsStartX++;
|
||||
itsStartY++;
|
||||
}
|
||||
if (!itsTitle.empty())
|
||||
itsStartY += 2;
|
||||
mvwin(itsWindow, itsStartY, itsStartX);
|
||||
}
|
||||
|
||||
void Window::Resize(int width, int height)
|
||||
void Window::Resize(size_t width, size_t height)
|
||||
{
|
||||
/*if (width+itsStartX > size_t(COLS)
|
||||
|| height+itsStartY > size_t(LINES))
|
||||
throw BadSize();*/
|
||||
|
||||
if (itsBorder != brNone)
|
||||
{
|
||||
delwin(itsWinBorder);
|
||||
@@ -234,7 +242,7 @@ void Window::Resize(int width, int height)
|
||||
if (!itsTitle.empty())
|
||||
height -= 2;
|
||||
|
||||
if (height > 0 && width > 0 && wresize(itsWindow, height, width) == OK)
|
||||
if (wresize(itsWindow, height, width) == OK)
|
||||
{
|
||||
itsHeight = height;
|
||||
itsWidth = width;
|
||||
@@ -282,7 +290,7 @@ void Window::Clear(bool)
|
||||
|
||||
void Window::Hide(char x) const
|
||||
{
|
||||
for (int i = 0; i < GetHeight(); i++)
|
||||
for (size_t i = 0; i < GetHeight(); i++)
|
||||
mvhline(i+GetStartY(), GetStartX(), x, GetWidth());
|
||||
refresh();
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ enum Where { wUp, wDown, wPageUp, wPageDown, wHome, wEnd };
|
||||
|
||||
typedef void (*GetStringHelper)();
|
||||
|
||||
void InitScreen();
|
||||
void InitScreen(bool);
|
||||
void DestroyScreen();
|
||||
|
||||
struct Colors
|
||||
@@ -119,9 +119,9 @@ class Window
|
||||
void Display();
|
||||
virtual void Refresh();
|
||||
|
||||
virtual void MoveTo(int, int);
|
||||
virtual void Resize(int, int);
|
||||
virtual void Clear(bool stub = 1);
|
||||
virtual void MoveTo(size_t, size_t);
|
||||
virtual void Resize(size_t, size_t);
|
||||
virtual void Clear(bool = 1);
|
||||
|
||||
void ReadKey(int &) const;
|
||||
void ReadKey() const;
|
||||
|
||||
Reference in New Issue
Block a user