classes cleaning

This commit is contained in:
unK
2008-09-05 10:17:47 +02:00
parent db996a3e86
commit c997e13091
9 changed files with 122 additions and 195 deletions

View File

@@ -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]" ||

View File

@@ -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;

View File

@@ -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 <>

View File

@@ -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))
{

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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);

View File

@@ -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();
}

View File

@@ -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;