classes cleaning
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
|
||||
#include "window.h"
|
||||
|
||||
ColorPair Window::into_color(const string &str)
|
||||
ColorPair Window::IntoColor(const string &str)
|
||||
{
|
||||
ColorPair colors;
|
||||
|
||||
@@ -400,7 +400,7 @@ ColorPair Window::into_color(const string &str)
|
||||
return itsColors.top();
|
||||
}
|
||||
|
||||
bool is_valid_color(const string &str)
|
||||
bool Window::IsValidColor(const string &str)
|
||||
{
|
||||
return str == "[/]" ||
|
||||
str == "[.b]" ||
|
||||
|
||||
@@ -356,7 +356,7 @@ string DisplaySongInColumns(const Song &s, void *s_template)
|
||||
}
|
||||
cols.push_back(song_template);
|
||||
|
||||
ncmpcpp_string_t result, v;
|
||||
my_string_t result, v;
|
||||
|
||||
# ifdef UTF8_ENABLED
|
||||
const wstring space = L" ";
|
||||
@@ -373,7 +373,7 @@ string DisplaySongInColumns(const Song &s, void *s_template)
|
||||
for (vector<string>::const_iterator it = cols.begin(); it != cols.end(); it++)
|
||||
{
|
||||
int width = StrToInt(GetLineValue(*it, '(', ')'));
|
||||
ncmpcpp_string_t color = TO_WSTRING(GetLineValue(*it, '[', ']'));
|
||||
my_string_t color = TO_WSTRING(GetLineValue(*it, '[', ']'));
|
||||
char type = GetLineValue(*it, '{', '}')[0];
|
||||
|
||||
width *= COLS/100.0;
|
||||
@@ -424,7 +424,7 @@ string DisplaySongInColumns(const Song &s, void *s_template)
|
||||
break;
|
||||
}
|
||||
|
||||
v = TO_WSTRING(OmitBBCodes(ss)).substr(0, width-1);
|
||||
v = TO_WSTRING(Window::OmitBBCodes(ss)).substr(0, width-1);
|
||||
for (int i = v.length(); i < width; i++, v += space);
|
||||
if (!color.empty())
|
||||
result += open_col + color + close_col;
|
||||
|
||||
66
src/menu.h
66
src/menu.h
@@ -48,12 +48,12 @@ class Menu : public Window
|
||||
typedef string (*ItemDisplayer) (const T &, void *);
|
||||
|
||||
public:
|
||||
Menu(int startx, int starty, int width, int height, string title, Color color, Border border) : itsItemDisplayer(0), itsUserdata(0), Window(startx, starty, width, height, title, color, border), itsSelectedPrefix("[.r]"), itsSelectedSuffix("[/r]"), itsStaticsNumber(0), itsBeginning(0), itsHighlight(0), itsHighlightColor(itsBaseColor), itsHighlightEnabled(1) { SetColor(color); }
|
||||
Menu(int startx, int starty, int width, int height, string title, Color color, Border border) : itsItemDisplayer(0), itsItemDisplayerUserdata(0), Window(startx, starty, width, height, title, color, border), itsSelectedPrefix("[.r]"), itsSelectedSuffix("[/r]"), itsStaticsNumber(0), itsBeginning(0), itsHighlight(0), itsHighlightColor(itsBaseColor), itsHighlightEnabled(1) { SetColor(color); }
|
||||
Menu(const Menu &);
|
||||
virtual ~Menu();
|
||||
|
||||
void SetItemDisplayer(ItemDisplayer ptr) { itsItemDisplayer = ptr; }
|
||||
void SetItemDisplayerUserData(void *data) { itsUserdata = data; }
|
||||
void SetItemDisplayerUserData(void *data) { itsItemDisplayerUserdata = data; }
|
||||
|
||||
void AddOption(const T &, Location = lLeft, bool separator = 0);
|
||||
void AddBoldOption(const T &item, Location location = lLeft, bool separator = 0);
|
||||
@@ -65,10 +65,8 @@ class Menu : public Window
|
||||
void MakeStatic(int, bool);
|
||||
void DeleteOption(int);
|
||||
void Swap(int, int);
|
||||
string GetCurrentOption() const;
|
||||
virtual string GetOption(int i) const;
|
||||
virtual string GetOption(int i = -1) const;
|
||||
|
||||
virtual void Display(bool redraw_whole_window = 0);
|
||||
virtual void Refresh(bool redraw_whole_window = 0);
|
||||
virtual void Go(Where);
|
||||
virtual void Highlight(int);
|
||||
@@ -76,34 +74,32 @@ class Menu : public Window
|
||||
virtual void Clear(bool clear_screen = 1);
|
||||
|
||||
virtual void Select(int, bool);
|
||||
virtual bool Selected(int);
|
||||
virtual bool IsAnySelected();
|
||||
virtual void GetSelectedList(vector<int> &);
|
||||
virtual bool Selected(int) const;
|
||||
virtual bool IsAnySelected() const;
|
||||
virtual void GetSelectedList(vector<int> &) const;
|
||||
void SetSelectPrefix(string str) { itsSelectedPrefix = str; }
|
||||
void SetSelectSuffix(string str) { itsSelectedSuffix = str; }
|
||||
|
||||
void HighlightColor(Color col) { itsHighlightColor = col; NeedsRedraw.push_back(itsHighlight); }
|
||||
virtual void Highlighting(bool hl) { itsHighlightEnabled = hl; NeedsRedraw.push_back(itsHighlight); Refresh(); }
|
||||
void Highlighting(bool hl) { itsHighlightEnabled = hl; NeedsRedraw.push_back(itsHighlight); Refresh(); }
|
||||
|
||||
int GetRealChoice() const;
|
||||
|
||||
virtual int GetChoice() const { return itsHighlight; }
|
||||
virtual int Size() const { return itsOptions.size(); }
|
||||
|
||||
bool Empty() { return itsOptions.empty(); }
|
||||
virtual bool IsStatic(int);
|
||||
virtual Window * Clone() { return new Menu(*this); }
|
||||
virtual Window * EmptyClone();
|
||||
bool Empty() const { return itsOptions.empty(); }
|
||||
virtual bool IsStatic(int) const;
|
||||
virtual Window * Clone() const { return new Menu(*this); }
|
||||
virtual Window * EmptyClone() const;
|
||||
|
||||
T & at(int i) { return itsOptions.at(i)->item; }
|
||||
const T & at(int i) const { return itsOptions.at(i)->item; }
|
||||
const T & operator[](int i) const { return itsOptions[i]->item; }
|
||||
T & operator[](int i) { return itsOptions[i]->item; }
|
||||
|
||||
protected:
|
||||
string DisplayOption(const T &t) const;
|
||||
ItemDisplayer itsItemDisplayer;
|
||||
void *itsUserdata;
|
||||
void *itsItemDisplayerUserdata;
|
||||
|
||||
vector<Option<T> *> itsOptions;
|
||||
vector<int> NeedsRedraw;
|
||||
@@ -134,7 +130,7 @@ Menu<T>::Menu(const Menu &m) : Window(m)
|
||||
itsOptions.push_back(new_option);
|
||||
}
|
||||
itsItemDisplayer = m.itsItemDisplayer;
|
||||
itsUserdata = m.itsUserdata;
|
||||
itsItemDisplayerUserdata = m.itsItemDisplayerUserdata;
|
||||
NeedsRedraw = m.NeedsRedraw;
|
||||
itsSelectedPrefix = m.itsSelectedPrefix;
|
||||
itsSelectedSuffix = m.itsSelectedSuffix;
|
||||
@@ -182,7 +178,7 @@ int Menu<T>::count_length(string str)
|
||||
|
||||
if (!collect && !tmp.empty())
|
||||
{
|
||||
if (is_valid_color(TO_STRING(tmp)))
|
||||
if (IsValidColor(TO_STRING(tmp)))
|
||||
length -= tmp.length();
|
||||
tmp.clear();
|
||||
}
|
||||
@@ -290,25 +286,12 @@ void Menu<T>::MakeStatic(int index, bool stat)
|
||||
}
|
||||
}
|
||||
|
||||
template <class T>
|
||||
string Menu<T>::GetCurrentOption() const
|
||||
{
|
||||
try
|
||||
{
|
||||
return DisplayOption(itsOptions.at(itsHighlight)->item);
|
||||
}
|
||||
catch (std::out_of_range)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
template <class T>
|
||||
string Menu<T>::GetOption(int i) const
|
||||
{
|
||||
try
|
||||
{
|
||||
return DisplayOption(itsOptions.at(i)->item);
|
||||
return DisplayOption(itsOptions.at(i == -1 ? itsHighlight : i)->item);
|
||||
}
|
||||
catch (std::out_of_range)
|
||||
{
|
||||
@@ -380,13 +363,6 @@ void Menu<T>::redraw_screen()
|
||||
NeedsRedraw.push_back(i);
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void Menu<T>::Display(bool redraw_whole_window)
|
||||
{
|
||||
Window::show_border();
|
||||
Refresh(redraw_whole_window);
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void Menu<T>::Refresh(bool redraw_whole_window)
|
||||
{
|
||||
@@ -709,7 +685,7 @@ void Menu<T>::Select(int option, bool selected)
|
||||
}
|
||||
|
||||
template <class T>
|
||||
bool Menu<T>::Selected(int option)
|
||||
bool Menu<T>::Selected(int option) const
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -722,7 +698,7 @@ bool Menu<T>::Selected(int option)
|
||||
}
|
||||
|
||||
template <class T>
|
||||
bool Menu<T>::IsAnySelected()
|
||||
bool Menu<T>::IsAnySelected() const
|
||||
{
|
||||
bool result = 0;
|
||||
for (T_const_iterator it = itsOptions.begin(); it != itsOptions.end(); it++)
|
||||
@@ -737,7 +713,7 @@ bool Menu<T>::IsAnySelected()
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void Menu<T>::GetSelectedList(vector<int> &v)
|
||||
void Menu<T>::GetSelectedList(vector<int> &v) const
|
||||
{
|
||||
int i = 0;
|
||||
for (T_const_iterator it = itsOptions.begin(); it != itsOptions.end(); it++, i++)
|
||||
@@ -757,7 +733,7 @@ int Menu<T>::GetRealChoice() const
|
||||
}
|
||||
|
||||
template <class T>
|
||||
bool Menu<T>::IsStatic(int option)
|
||||
bool Menu<T>::IsStatic(int option) const
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -770,7 +746,7 @@ bool Menu<T>::IsStatic(int option)
|
||||
}
|
||||
|
||||
template <class T>
|
||||
Window * Menu<T>::EmptyClone()
|
||||
Window * Menu<T>::EmptyClone() const
|
||||
{
|
||||
return new Menu(GetStartX(),GetStartY(),GetWidth(),GetHeight(),itsTitle,itsBaseColor,itsBorder);
|
||||
}
|
||||
@@ -778,7 +754,7 @@ Window * Menu<T>::EmptyClone()
|
||||
template <class T>
|
||||
string Menu<T>::DisplayOption(const T &t) const
|
||||
{
|
||||
return itsItemDisplayer ? itsItemDisplayer(t, itsUserdata) : "";
|
||||
return itsItemDisplayer ? itsItemDisplayer(t, itsItemDisplayerUserdata) : "";
|
||||
}
|
||||
|
||||
template <>
|
||||
|
||||
@@ -432,7 +432,7 @@ int main(int argc, char *argv[])
|
||||
if (current_screen == csBrowser)
|
||||
{
|
||||
int max_length_without_scroll = wHeader->GetWidth()-volume_state.length()-title.length();
|
||||
ncmpcpp_string_t wbrowseddir = TO_WSTRING(browsed_dir);
|
||||
my_string_t wbrowseddir = TO_WSTRING(browsed_dir);
|
||||
wHeader->Bold(1);
|
||||
if (browsed_dir.length() > max_length_without_scroll)
|
||||
{
|
||||
@@ -442,7 +442,7 @@ int main(int argc, char *argv[])
|
||||
wbrowseddir += " ** ";
|
||||
# endif
|
||||
const int scrollsize = max_length_without_scroll;
|
||||
ncmpcpp_string_t part = wbrowseddir.substr(browsed_dir_scroll_begin++, scrollsize);
|
||||
my_string_t part = wbrowseddir.substr(browsed_dir_scroll_begin++, scrollsize);
|
||||
if (part.length() < scrollsize)
|
||||
part += wbrowseddir.substr(0, scrollsize-part.length());
|
||||
wHeader->WriteXY(title.length(), 0, part);
|
||||
@@ -485,12 +485,12 @@ int main(int argc, char *argv[])
|
||||
mLibAlbums->Reset();
|
||||
mLibSongs->Clear(0);
|
||||
TagList list;
|
||||
Mpd->GetAlbums(mLibArtists->GetCurrentOption(), list);
|
||||
Mpd->GetAlbums(mLibArtists->GetOption(), list);
|
||||
for (TagList::iterator it = list.begin(); it != list.end(); it++)
|
||||
{
|
||||
SongList l;
|
||||
Mpd->StartSearch(1);
|
||||
Mpd->AddSearch(MPD_TAG_ITEM_ARTIST, mLibArtists->GetCurrentOption());
|
||||
Mpd->AddSearch(MPD_TAG_ITEM_ARTIST, mLibArtists->GetOption());
|
||||
Mpd->AddSearch(MPD_TAG_ITEM_ALBUM, *it);
|
||||
Mpd->CommitSearch(l);
|
||||
for (SongList::const_iterator j = l.begin(); j != l.end(); j++)
|
||||
@@ -526,22 +526,22 @@ int main(int argc, char *argv[])
|
||||
mLibAlbums->WriteXY(0, 0, "No albums found.");
|
||||
mLibSongs->Clear(0);
|
||||
Mpd->StartSearch(1);
|
||||
Mpd->AddSearch(MPD_TAG_ITEM_ARTIST, mLibArtists->GetCurrentOption());
|
||||
Mpd->AddSearch(MPD_TAG_ITEM_ARTIST, mLibArtists->GetOption());
|
||||
Mpd->CommitSearch(list);
|
||||
}
|
||||
else
|
||||
{
|
||||
mLibSongs->Clear(0);
|
||||
Mpd->StartSearch(1);
|
||||
Mpd->AddSearch(MPD_TAG_ITEM_ARTIST, mLibArtists->GetCurrentOption());
|
||||
Mpd->AddSearch(MPD_TAG_ITEM_ALBUM, mLibAlbums->GetCurrentOption());
|
||||
Mpd->AddSearch(MPD_TAG_ITEM_ARTIST, mLibArtists->GetOption());
|
||||
Mpd->AddSearch(MPD_TAG_ITEM_ALBUM, mLibAlbums->GetOption());
|
||||
Mpd->CommitSearch(list);
|
||||
if (list.empty())
|
||||
{
|
||||
const int year_length = 7;
|
||||
const string &album = mLibAlbums->GetCurrentOption();
|
||||
const string &album = mLibAlbums->GetOption();
|
||||
Mpd->StartSearch(1);
|
||||
Mpd->AddSearch(MPD_TAG_ITEM_ARTIST, mLibArtists->GetCurrentOption());
|
||||
Mpd->AddSearch(MPD_TAG_ITEM_ARTIST, mLibArtists->GetOption());
|
||||
Mpd->AddSearch(MPD_TAG_ITEM_ALBUM, album.substr(year_length));
|
||||
Mpd->CommitSearch(list);
|
||||
}
|
||||
@@ -589,7 +589,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
mPlaylistEditor->Reset();
|
||||
SongList list;
|
||||
Mpd->GetPlaylistContent(mPlaylistList->GetCurrentOption(), list);
|
||||
Mpd->GetPlaylistContent(mPlaylistList->GetOption(), list);
|
||||
if (!list.empty())
|
||||
mPlaylistEditor->SetTitle("Playlist's content (" + IntoStr(list.size()) + " item" + (list.size() == 1 ? ")" : "s)"));
|
||||
else
|
||||
@@ -1139,7 +1139,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
if (wCurrent == mLibArtists)
|
||||
{
|
||||
const string &artist = mLibArtists->GetCurrentOption();
|
||||
const string &artist = mLibArtists->GetOption();
|
||||
Mpd->StartSearch(1);
|
||||
Mpd->AddSearch(MPD_TAG_ITEM_ARTIST, artist);
|
||||
Mpd->CommitSearch(list);
|
||||
@@ -1164,7 +1164,7 @@ int main(int argc, char *argv[])
|
||||
Mpd->QueueAddSong(mLibSongs->at(i));
|
||||
if (Mpd->CommitQueue())
|
||||
{
|
||||
ShowMessage("Adding songs from: " + mLibArtists->GetCurrentOption() + " \"" + mLibAlbums->GetCurrentOption() + "\"");
|
||||
ShowMessage("Adding songs from: " + mLibArtists->GetOption() + " \"" + mLibAlbums->GetOption() + "\"");
|
||||
Song *s = &mPlaylist->at(mPlaylist->Size()-mLibSongs->Size());
|
||||
if (s->GetHash() == mLibSongs->at(0).GetHash())
|
||||
{
|
||||
@@ -1208,7 +1208,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
if (wCurrent == mPlaylistList)
|
||||
{
|
||||
const string &playlist = mPlaylistList->GetCurrentOption();
|
||||
const string &playlist = mPlaylistList->GetOption();
|
||||
Mpd->GetPlaylistContent(playlist, list);
|
||||
for (SongList::const_iterator it = list.begin(); it != list.end(); it++)
|
||||
Mpd->QueueAddSong(**it);
|
||||
@@ -1471,10 +1471,10 @@ int main(int argc, char *argv[])
|
||||
mPlaylistEditor->GetSelectedList(list);
|
||||
for (vector<int>::const_reverse_iterator it = list.rbegin(); it != list.rend(); it++)
|
||||
{
|
||||
Mpd->QueueDeleteFromPlaylist(mPlaylistList->GetCurrentOption(), *it);
|
||||
Mpd->QueueDeleteFromPlaylist(mPlaylistList->GetOption(), *it);
|
||||
mPlaylistEditor->DeleteOption(*it);
|
||||
}
|
||||
ShowMessage("Selected items deleted from playlist '" + mPlaylistList->GetCurrentOption() + "'!");
|
||||
ShowMessage("Selected items deleted from playlist '" + mPlaylistList->GetOption() + "'!");
|
||||
redraw_me = 1;
|
||||
}
|
||||
else
|
||||
@@ -1484,7 +1484,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
TraceMpdStatus();
|
||||
timer = time(NULL);
|
||||
Mpd->QueueDeleteFromPlaylist(mPlaylistList->GetCurrentOption(), mPlaylistEditor->GetChoice());
|
||||
Mpd->QueueDeleteFromPlaylist(mPlaylistList->GetOption(), mPlaylistEditor->GetChoice());
|
||||
mPlaylistEditor->DeleteOption(mPlaylistEditor->GetChoice());
|
||||
mPlaylistEditor->Refresh();
|
||||
mPlaylistEditor->ReadKey(input);
|
||||
@@ -1628,7 +1628,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
for (int i = 0; i < list.size(); i++)
|
||||
if (origs[i] != list[i])
|
||||
Mpd->QueueMove(mPlaylistList->GetCurrentOption(), origs[i], list[i]);
|
||||
Mpd->QueueMove(mPlaylistList->GetOption(), origs[i], list[i]);
|
||||
Mpd->CommitQueue();
|
||||
}
|
||||
else
|
||||
@@ -1645,7 +1645,7 @@ int main(int argc, char *argv[])
|
||||
mPlaylistEditor->ReadKey(input);
|
||||
}
|
||||
if (from != to)
|
||||
Mpd->Move(mPlaylistList->GetCurrentOption(), from, to);
|
||||
Mpd->Move(mPlaylistList->GetOption(), from, to);
|
||||
}
|
||||
mPlaylistEditor->SetTimeout(ncmpcpp_window_timeout);
|
||||
}
|
||||
@@ -1721,7 +1721,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
for (int i = list.size()-1; i >= 0; i--)
|
||||
if (origs[i] != list[i])
|
||||
Mpd->QueueMove(mPlaylistList->GetCurrentOption(), origs[i], list[i]);
|
||||
Mpd->QueueMove(mPlaylistList->GetOption(), origs[i], list[i]);
|
||||
Mpd->CommitQueue();
|
||||
}
|
||||
else
|
||||
@@ -1738,7 +1738,7 @@ int main(int argc, char *argv[])
|
||||
mPlaylistEditor->ReadKey(input);
|
||||
}
|
||||
if (from != to)
|
||||
Mpd->Move(mPlaylistList->GetCurrentOption(), from, to);
|
||||
Mpd->Move(mPlaylistList->GetOption(), from, to);
|
||||
}
|
||||
mPlaylistEditor->SetTimeout(ncmpcpp_window_timeout);
|
||||
}
|
||||
@@ -2244,7 +2244,7 @@ int main(int argc, char *argv[])
|
||||
ShowMessage("Searching...");
|
||||
for (int i = (wCurrent == mSearcher ? search_engine_static_option-1 : 0); i < wCurrent->Size(); i++)
|
||||
{
|
||||
string name = OmitBBCodes(wCurrent->GetOption(i));
|
||||
string name = Window::OmitBBCodes(wCurrent->GetOption(i));
|
||||
transform(name.begin(), name.end(), name.begin(), tolower);
|
||||
if (name.find(findme) != string::npos && !wCurrent->IsStatic(i))
|
||||
{
|
||||
|
||||
@@ -68,7 +68,7 @@ void Scrollpad::Add(string str)
|
||||
|
||||
if (!collect && !tmp.empty())
|
||||
{
|
||||
if (is_valid_color(TO_STRING(tmp)))
|
||||
if (IsValidColor(TO_STRING(tmp)))
|
||||
itsXPos -= tmp.length();
|
||||
tmp.clear();
|
||||
}
|
||||
@@ -99,10 +99,10 @@ void Scrollpad::Add(string str)
|
||||
}
|
||||
}
|
||||
itsContent += TO_STRING(s);
|
||||
recreate_win();
|
||||
Recreate();
|
||||
}
|
||||
|
||||
void Scrollpad::recreate_win()
|
||||
void Scrollpad::Recreate()
|
||||
{
|
||||
delwin(itsWindow);
|
||||
itsWindow = newpad(itsRealHeight, itsWidth);
|
||||
@@ -111,12 +111,6 @@ void Scrollpad::recreate_win()
|
||||
Write(itsContent.c_str());
|
||||
}
|
||||
|
||||
void Scrollpad::Display(bool stub)
|
||||
{
|
||||
Window::show_border();
|
||||
Refresh(stub);
|
||||
}
|
||||
|
||||
void Scrollpad::Refresh(bool stub)
|
||||
{
|
||||
prefresh(itsWindow,itsBeginning,0,itsStartY,itsStartX,itsStartY+itsHeight-1,itsStartX+itsWidth);
|
||||
@@ -148,18 +142,13 @@ void Scrollpad::Resize(int width, int height)
|
||||
string tmp = itsRawContent;
|
||||
itsRawContent.clear();
|
||||
Add(tmp);
|
||||
recreate_win();
|
||||
Recreate();
|
||||
}
|
||||
}
|
||||
|
||||
void Scrollpad::Go(Where where)
|
||||
{
|
||||
int MaxBeginning;
|
||||
|
||||
if (itsContent.size() < itsHeight)
|
||||
MaxBeginning = 0;
|
||||
else
|
||||
MaxBeginning = itsRealHeight-itsHeight;
|
||||
int MaxBeginning = itsContent.size() < itsHeight ? 0 : itsRealHeight-itsHeight;
|
||||
|
||||
switch (where)
|
||||
{
|
||||
@@ -198,20 +187,6 @@ void Scrollpad::Go(Where where)
|
||||
}
|
||||
}
|
||||
|
||||
void Scrollpad::SetBorder(Border border)
|
||||
{
|
||||
if (have_to_recreate(border))
|
||||
recreate_win();
|
||||
itsBorder = border;
|
||||
}
|
||||
|
||||
void Scrollpad::SetTitle(string newtitle)
|
||||
{
|
||||
if (have_to_recreate(newtitle))
|
||||
recreate_win();
|
||||
itsTitle = newtitle;
|
||||
}
|
||||
|
||||
void Scrollpad::Clear(bool clear_screen)
|
||||
{
|
||||
itsBeginning = 0;
|
||||
@@ -227,7 +202,7 @@ void Scrollpad::Clear(bool clear_screen)
|
||||
Window::Clear();
|
||||
}
|
||||
|
||||
Window * Scrollpad::EmptyClone()
|
||||
Window * Scrollpad::EmptyClone() const
|
||||
{
|
||||
return new Scrollpad(GetStartX(),GetStartY(),GetWidth(),GetHeight(),itsTitle,itsBaseColor,itsBorder);
|
||||
}
|
||||
|
||||
@@ -30,20 +30,14 @@ class Scrollpad: public Window
|
||||
Scrollpad(const Scrollpad &);
|
||||
virtual ~Scrollpad() {}
|
||||
virtual void Add(string);
|
||||
virtual void Display(bool = 0);
|
||||
virtual void Refresh(bool = 0);
|
||||
virtual void Go(Where);
|
||||
virtual void MoveTo(int newx, int newy) { reallocate_win(newx, newy); }
|
||||
virtual void Resize(int, int);
|
||||
virtual void SetBorder(Border);
|
||||
virtual void SetTitle(string);
|
||||
virtual void Clear(bool clear_screen = 1);
|
||||
virtual Window * Clone() { return new Scrollpad(*this); }
|
||||
virtual Window * EmptyClone();
|
||||
virtual Window * Clone() const { return new Scrollpad(*this); }
|
||||
virtual Window * EmptyClone() const;
|
||||
protected:
|
||||
void print_content();
|
||||
virtual void recreate_win();
|
||||
|
||||
virtual void Recreate();
|
||||
string itsContent;
|
||||
string itsRawContent;
|
||||
int itsBeginning;
|
||||
|
||||
@@ -314,7 +314,7 @@ void NcmpcppStatusChanged(MPDConnection *Mpd, MPDStatusChanges changed, void *da
|
||||
tracklength = " [" + ShowTime(elapsed) + "/" + s.GetLength() + "]";
|
||||
else
|
||||
tracklength = " [" + ShowTime(elapsed) + "]";
|
||||
ncmpcpp_string_t playing_song = TO_WSTRING(DisplaySong(s, &Config.song_status_format));
|
||||
my_string_t playing_song = TO_WSTRING(DisplaySong(s, &Config.song_status_format));
|
||||
|
||||
int max_length_without_scroll = wFooter->GetWidth()-player_state.length()-tracklength.length();
|
||||
|
||||
@@ -328,7 +328,7 @@ void NcmpcppStatusChanged(MPDConnection *Mpd, MPDStatusChanges changed, void *da
|
||||
playing_song += " ** ";
|
||||
# endif
|
||||
const int scrollsize = max_length_without_scroll+playing_song.length();
|
||||
ncmpcpp_string_t part = playing_song.substr(playing_song_scroll_begin++, scrollsize);
|
||||
my_string_t part = playing_song.substr(playing_song_scroll_begin++, scrollsize);
|
||||
if (part.length() < scrollsize)
|
||||
part += playing_song.substr(0, scrollsize-part.length());
|
||||
wFooter->WriteXY(player_state.length(), 1, part);
|
||||
|
||||
109
src/window.cpp
109
src/window.cpp
@@ -20,7 +20,7 @@
|
||||
|
||||
#include "window.h"
|
||||
|
||||
Window::Window(int startx, int starty, int width, int height, string title, Color color, Border border) : itsWindow(0), itsWinBorder(0), itsGetStringHelper(0), itsStartX(startx), itsStartY(starty), itsWidth(width), itsHeight(height), itsWindowTimeout(-1), BBEnabled(1), AutoRefreshEnabled(1), itsTitle(title), itsColor(color), itsBaseColor(color), itsBgColor(clDefault), itsBaseBgColor(clDefault), itsBorder(border)
|
||||
Window::Window(int startx, int starty, int width, int height, const string &title, Color color, Border border) : itsWindow(0), itsWinBorder(0), itsGetStringHelper(0), itsStartX(startx), itsStartY(starty), itsWidth(width), itsHeight(height), itsWindowTimeout(-1), BBEnabled(1), AutoRefreshEnabled(1), itsTitle(title), itsColor(color), itsBaseColor(color), itsBgColor(clDefault), itsBaseBgColor(clDefault), itsBorder(border)
|
||||
{
|
||||
if (itsStartX < 0) itsStartX = 0;
|
||||
if (itsStartY < 0) itsStartY = 0;
|
||||
@@ -91,7 +91,7 @@ void Window::SetBaseColor(Color col, Color background)
|
||||
itsBaseBgColor = background;
|
||||
}
|
||||
|
||||
bool Window::have_to_recreate(Border border)
|
||||
void Window::SetBorder(Border border)
|
||||
{
|
||||
if (border == brNone && itsBorder != brNone)
|
||||
{
|
||||
@@ -100,9 +100,9 @@ bool Window::have_to_recreate(Border border)
|
||||
itsStartY--;
|
||||
itsHeight += 2;
|
||||
itsWidth += 2;
|
||||
return true;
|
||||
Recreate();
|
||||
}
|
||||
if (border != brNone && itsBorder == brNone)
|
||||
else if (border != brNone && itsBorder == brNone)
|
||||
{
|
||||
itsWinBorder = newpad(itsHeight,itsWidth);
|
||||
wattron(itsWinBorder,COLOR_PAIR(border));
|
||||
@@ -111,45 +111,33 @@ bool Window::have_to_recreate(Border border)
|
||||
itsStartY++;
|
||||
itsHeight -= 2;
|
||||
itsWidth -= 2;
|
||||
return true;
|
||||
Recreate();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Window::have_to_recreate(string newtitle)
|
||||
{
|
||||
if (!newtitle.empty() && itsTitle.empty())
|
||||
{
|
||||
itsStartY += 2;
|
||||
itsHeight -= 2;
|
||||
return true;
|
||||
}
|
||||
if (newtitle.empty() && !itsTitle.empty())
|
||||
{
|
||||
itsStartY -= 2;
|
||||
itsHeight += 2;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void Window::SetBorder(Border border)
|
||||
{
|
||||
if (have_to_recreate(border))
|
||||
recreate_win();
|
||||
itsBorder = border;
|
||||
}
|
||||
|
||||
void Window::SetTitle(string newtitle)
|
||||
void Window::SetTitle(const string &newtitle)
|
||||
{
|
||||
if (itsTitle == newtitle)
|
||||
{
|
||||
return;
|
||||
if (have_to_recreate(newtitle))
|
||||
recreate_win();
|
||||
}
|
||||
else if (!newtitle.empty() && itsTitle.empty())
|
||||
{
|
||||
itsStartY += 2;
|
||||
itsHeight -= 2;
|
||||
Recreate();
|
||||
}
|
||||
else if (newtitle.empty() && !itsTitle.empty())
|
||||
{
|
||||
itsStartY -= 2;
|
||||
itsHeight += 2;
|
||||
Recreate();
|
||||
}
|
||||
itsTitle = newtitle;
|
||||
}
|
||||
|
||||
void Window::recreate_win()
|
||||
void Window::Recreate()
|
||||
{
|
||||
delwin(itsWindow);
|
||||
itsWindow = newwin(itsHeight, itsWidth, itsStartY, itsStartX);
|
||||
@@ -157,25 +145,23 @@ void Window::recreate_win()
|
||||
SetColor(itsColor, itsBgColor);
|
||||
}
|
||||
|
||||
bool Window::reallocate_win(int newx, int newy)
|
||||
{
|
||||
if (newx < 0 || newy < 0 || (newx == itsStartX && newy == itsStartY)) return false;
|
||||
itsStartX = newx;
|
||||
itsStartY = newy;
|
||||
if (itsBorder != brNone)
|
||||
{
|
||||
itsStartX++;
|
||||
itsStartY++;
|
||||
}
|
||||
if (!itsTitle.empty())
|
||||
itsStartY += 2;
|
||||
return true;
|
||||
}
|
||||
|
||||
void Window::MoveTo(int newx, int newy)
|
||||
{
|
||||
if (reallocate_win(newx, newy))
|
||||
if (newx < 0 || newy < 0 || (newx == itsStartX && newy == itsStartY))
|
||||
return;
|
||||
else
|
||||
{
|
||||
itsStartX = newx;
|
||||
itsStartY = newy;
|
||||
if (itsBorder != brNone)
|
||||
{
|
||||
itsStartX++;
|
||||
itsStartY++;
|
||||
}
|
||||
if (!itsTitle.empty())
|
||||
itsStartY += 2;
|
||||
mvwin(itsWindow, itsStartY, itsStartX);
|
||||
}
|
||||
}
|
||||
|
||||
void Window::Resize(int width, int height)
|
||||
@@ -199,7 +185,7 @@ void Window::Resize(int width, int height)
|
||||
}
|
||||
}
|
||||
|
||||
void Window::show_border() const
|
||||
void Window::ShowBorder() const
|
||||
{
|
||||
if (itsBorder != brNone)
|
||||
{
|
||||
@@ -223,8 +209,8 @@ void Window::show_border() const
|
||||
|
||||
void Window::Display(bool stub)
|
||||
{
|
||||
show_border();
|
||||
wrefresh(itsWindow);
|
||||
ShowBorder();
|
||||
Refresh(stub);
|
||||
}
|
||||
|
||||
void Window::Refresh(bool stub)
|
||||
@@ -320,9 +306,9 @@ void Window::Write(int limit, const string &str, bool clrtoeol)
|
||||
{
|
||||
waddstr(itsWindow,tmp.c_str());
|
||||
tmp.clear();
|
||||
if (is_valid_color(color))
|
||||
if (IsValidColor(color))
|
||||
{
|
||||
ColorPair colors = into_color(color);
|
||||
ColorPair colors = IntoColor(color);
|
||||
SetColor(colors.first, colors.second);
|
||||
}
|
||||
else
|
||||
@@ -383,9 +369,9 @@ void Window::Write(int limit, const wstring &str, bool clrtoeol)
|
||||
{
|
||||
waddwstr(itsWindow,tmp.c_str());
|
||||
tmp.clear();
|
||||
if (is_valid_color(ToString(color)))
|
||||
if (IsValidColor(ToString(color)))
|
||||
{
|
||||
ColorPair colors = into_color(ToString(color));
|
||||
ColorPair colors = IntoColor(ToString(color));
|
||||
SetColor(colors.first, colors.second);
|
||||
}
|
||||
else
|
||||
@@ -420,7 +406,6 @@ void Window::WriteXY(int x, int y, int limit, const string &str, bool cleartoeol
|
||||
Write(limit, str, cleartoeol);
|
||||
}
|
||||
|
||||
|
||||
string Window::GetString(const string &base, unsigned int length) const
|
||||
{
|
||||
curs_set(1);
|
||||
@@ -604,7 +589,7 @@ void Window::EnableColors()
|
||||
}
|
||||
}
|
||||
|
||||
Window * Window::EmptyClone()
|
||||
Window * Window::EmptyClone() const
|
||||
{
|
||||
return new Window(GetStartX(),GetStartY(),GetWidth(),GetHeight(),itsTitle,itsBaseColor,itsBorder);
|
||||
}
|
||||
@@ -653,7 +638,7 @@ wstring ToWString(const string &s)
|
||||
}
|
||||
|
||||
|
||||
string OmitBBCodes(const string &str)
|
||||
string Window::OmitBBCodes(const string &str)
|
||||
{
|
||||
if (str.empty())
|
||||
return "";
|
||||
@@ -684,7 +669,7 @@ string OmitBBCodes(const string &str)
|
||||
{
|
||||
result += tmp;
|
||||
tmp.clear();
|
||||
if (!is_valid_color(color))
|
||||
if (!IsValidColor(color))
|
||||
tmp += color;
|
||||
color.clear();
|
||||
}
|
||||
@@ -726,7 +711,7 @@ string OmitBBCodes(const string &str)
|
||||
|
||||
if (!collect)
|
||||
{
|
||||
if (!is_valid_color(color))
|
||||
if (!IsValidColor(color))
|
||||
length -= color.length();
|
||||
color.clear();
|
||||
}
|
||||
@@ -767,7 +752,7 @@ int CountBBCodes(const wstring &str)
|
||||
|
||||
if (!collect)
|
||||
{
|
||||
if (!is_valid_color(ToString(color)))
|
||||
if (!IsValidColor(ToString(color)))
|
||||
length -= color.length();
|
||||
color.clear();
|
||||
}
|
||||
|
||||
37
src/window.h
37
src/window.h
@@ -30,11 +30,11 @@
|
||||
#include <cstring>
|
||||
|
||||
#ifdef UTF8_ENABLED
|
||||
# define ncmpcpp_string_t wstring
|
||||
# define my_string_t wstring
|
||||
# define TO_STRING(x) ToString(x)
|
||||
# define TO_WSTRING(x) ToWString(x)
|
||||
#else
|
||||
# define ncmpcpp_string_t string
|
||||
# define my_string_t string
|
||||
# define TO_STRING(x) x
|
||||
# define TO_WSTRING(x) x
|
||||
#endif
|
||||
@@ -55,25 +55,23 @@ wchar_t * ToWString(const char *);
|
||||
string ToString(const wstring &);
|
||||
wstring ToWString(const string &);
|
||||
|
||||
bool is_valid_color(const string &);
|
||||
string OmitBBCodes(const string &);
|
||||
//int CountBBCodes(const string &);
|
||||
//int CountBBCodes(const wstring &);
|
||||
|
||||
class Window
|
||||
{
|
||||
public:
|
||||
Window(int, int, int, int, string, Color, Border);
|
||||
Window(int, int, int, int, const string &, Color, Border);
|
||||
Window(const Window &);
|
||||
virtual ~Window();
|
||||
virtual WINDOW *RawWin() { return itsWindow; }
|
||||
virtual WINDOW *RawWin() const { return itsWindow; }
|
||||
virtual void SetGetStringHelper(GetStringHelper helper) { itsGetStringHelper = helper; }
|
||||
virtual void SetColor(Color, Color = clDefault);
|
||||
virtual void SetBaseColor(Color, Color = clDefault);
|
||||
virtual void SetBorder(Border);
|
||||
virtual void EnableBB() { BBEnabled = 1; }
|
||||
virtual void DisableBB() { BBEnabled = 0; }
|
||||
virtual void SetTitle(string);
|
||||
virtual void SetTitle(const string &);
|
||||
virtual void MoveTo(int, int);
|
||||
virtual void Resize(int, int);
|
||||
virtual void Display(bool = 0);
|
||||
@@ -111,31 +109,30 @@ class Window
|
||||
virtual Color GetColor() const;
|
||||
virtual Border GetBorder() const;
|
||||
|
||||
virtual Window * Clone() { return new Window(*this); }
|
||||
virtual Window * EmptyClone();
|
||||
virtual Window * Clone() const { return new Window(*this); }
|
||||
virtual Window * EmptyClone() const;
|
||||
|
||||
// stubs for inherits, ugly shit, needs improvement
|
||||
virtual void Select(int, bool) { }
|
||||
virtual bool Selected(int) { return 0; }
|
||||
virtual bool Selected(int) const { return 0; }
|
||||
virtual int Size() const { return 0; }
|
||||
virtual bool IsAnySelected() { return 0; }
|
||||
virtual void GetSelectedList(vector<int> &) { }
|
||||
virtual bool IsStatic(int) { return 0; }
|
||||
virtual bool IsAnySelected() const { return 0; }
|
||||
virtual void GetSelectedList(vector<int> &) const { }
|
||||
virtual bool IsStatic(int) const { return 0; }
|
||||
virtual void Highlight(int) { }
|
||||
virtual string GetOption(int) const { return ""; }
|
||||
virtual string GetOption(int = -1) const { return ""; }
|
||||
virtual void Go(Where) { } // for Menu and Scrollpad class
|
||||
virtual int GetChoice() const { return -1; } // for Menu class
|
||||
virtual void Add(string str) { Write(str); } // for Scrollpad class
|
||||
|
||||
static void EnableColors();
|
||||
static bool IsValidColor(const string &);
|
||||
static string OmitBBCodes(const string &);
|
||||
|
||||
protected:
|
||||
virtual bool have_to_recreate(string);
|
||||
virtual bool have_to_recreate(Border);
|
||||
virtual bool reallocate_win(int, int);
|
||||
virtual void recreate_win();
|
||||
virtual void show_border() const;
|
||||
virtual ColorPair into_color(const string &);
|
||||
virtual void Recreate();
|
||||
virtual void ShowBorder() const;
|
||||
virtual ColorPair IntoColor(const string &);
|
||||
WINDOW *itsWindow;
|
||||
WINDOW *itsWinBorder;
|
||||
GetStringHelper itsGetStringHelper;
|
||||
|
||||
Reference in New Issue
Block a user