simplify adding options in Menu class

This commit is contained in:
unK
2008-09-10 11:06:01 +02:00
parent e36bf0a3cc
commit 226702f23a
5 changed files with 19 additions and 68 deletions

View File

@@ -764,7 +764,7 @@ void GetDirectory(string dir, string subdir)
break; break;
} }
} }
bold ? mBrowser->AddBoldOption(*it) : mBrowser->AddOption(*it); mBrowser->AddOption(*it, bold);
break; break;
} }
} }

View File

@@ -55,11 +55,8 @@ class Menu : public Window
void SetItemDisplayer(ItemDisplayer ptr) { itsItemDisplayer = ptr; } void SetItemDisplayer(ItemDisplayer ptr) { itsItemDisplayer = ptr; }
void SetItemDisplayerUserData(void *data) { itsItemDisplayerUserdata = data; } void SetItemDisplayerUserData(void *data) { itsItemDisplayerUserdata = data; }
void AddOption(const T &, Location = lLeft, bool separator = 0); void AddOption(const T &, bool bold = 0, bool is_static = 0, bool separator = 0, Location = lLeft);
void AddBoldOption(const T &item, Location location = lLeft, bool separator = 0); void AddSeparator() { AddOption(T(), 0, 1, 1); }
void AddStaticOption(const T &item, Location location = lLeft, bool separator = 0);
void AddStaticBoldOption(const T &item, Location location = lLeft, bool separator = 0);
void AddSeparator();
void UpdateOption(int, const T &, Location = lLeft, bool separator = 0); void UpdateOption(int, const T &, Location = lLeft, bool separator = 0);
void RefreshOption(int option = -1) { NeedsRedraw.push_back(option < 0 ? itsHighlight : option); } void RefreshOption(int option = -1) { NeedsRedraw.push_back(option < 0 ? itsHighlight : option); }
void BoldOption(int, bool); void BoldOption(int, bool);
@@ -194,61 +191,20 @@ int Menu<T>::count_length(string str)
} }
template <class T> template <class T>
void Menu<T>::AddOption(const T &item, Location location, bool separator) void Menu<T>::AddOption(const T &item, bool bold, bool is_static, bool separator, Location location)
{ {
Option<T> *new_option = new Option<T>; Option<T> *new_option = new Option<T>;
new_option->item = item; new_option->item = item;
new_option->location = location; new_option->is_bold = bold;
new_option->is_static = is_static;
new_option->have_separator = separator; new_option->have_separator = separator;
new_option->location = location;
if (is_static)
itsStaticsNumber++;
itsOptions.push_back(new_option); itsOptions.push_back(new_option);
NeedsRedraw.push_back(itsOptions.size()-1); NeedsRedraw.push_back(itsOptions.size()-1);
} }
template <class T>
void Menu<T>::AddBoldOption(const T &item, Location location, bool separator)
{
Option<T> *new_option = new Option<T>;
new_option->item = item;
new_option->location = location;
new_option->have_separator = separator;
new_option->is_bold = 1;
itsOptions.push_back(new_option);
NeedsRedraw.push_back(itsOptions.size()-1);
}
template <class T>
void Menu<T>::AddStaticOption(const T &item, Location location, bool separator)
{
Option<T> *new_option = new Option<T>;
new_option->item = item;
new_option->location = location;
new_option->have_separator = separator;
new_option->is_static = 1;
itsOptions.push_back(new_option);
itsStaticsNumber++;
NeedsRedraw.push_back(itsOptions.size()-1);
}
template <class T>
void Menu<T>::AddStaticBoldOption(const T &item, Location location, bool separator)
{
Option<T> *new_option = new Option<T>;
new_option->item = item;
new_option->location = location;
new_option->have_separator = separator;
new_option->is_static = 1;
new_option->is_bold = 1;
itsOptions.push_back(new_option);
itsStaticsNumber++;
NeedsRedraw.push_back(itsOptions.size()-1);
}
template <class T>
void Menu<T>::AddSeparator()
{
AddStaticOption(T(), lLeft, 1);
}
template <class T> template <class T>
void Menu<T>::UpdateOption(int index, const T &item, Location location, bool separator) void Menu<T>::UpdateOption(int index, const T &item, Location location, bool separator)
{ {

View File

@@ -592,7 +592,7 @@ int main(int argc, char *argv[])
break; break;
} }
} }
bold ? mLibSongs->AddBoldOption(**it) : mLibSongs->AddOption(**it); mLibSongs->AddOption(**it, bold);
bold = 0; bold = 0;
} }
FreeSongList(list); FreeSongList(list);
@@ -638,7 +638,7 @@ int main(int argc, char *argv[])
break; break;
} }
} }
bold ? mPlaylistEditor->AddBoldOption(**it) : mPlaylistEditor->AddOption(**it); mPlaylistEditor->AddOption(**it, bold);
bold = 0; bold = 0;
} }
FreeSongList(list); FreeSongList(list);

View File

@@ -179,12 +179,7 @@ void NcmpcppStatusChanged(MPDConnection *Mpd, MPDStatusChanges changed, void *da
Mpd->GetPlaylistChanges(playlist_old_id, list); Mpd->GetPlaylistChanges(playlist_old_id, list);
for (SongList::const_iterator it = list.begin(); it != list.end(); it++) for (SongList::const_iterator it = list.begin(); it != list.end(); it++)
{ mPlaylist->AddOption(**it, now_playing == (*it)->GetPosition());
if (now_playing != (*it)->GetPosition())
mPlaylist->AddOption(**it);
else
mPlaylist->AddBoldOption(**it);
}
if (current_screen == csPlaylist) if (current_screen == csPlaylist)
{ {

View File

@@ -89,13 +89,13 @@ bool GetSongTags(Song &s)
mTagEditor->Clear(); mTagEditor->Clear();
mTagEditor->Reset(); mTagEditor->Reset();
mTagEditor->AddStaticOption("[.b][.white]Song name: [/white][.green][/b]" + s.GetShortFilename() + "[/green]"); mTagEditor->AddOption("[.b][.white]Song name: [/white][.green][/b]" + s.GetShortFilename() + "[/green]", 0, 1);
mTagEditor->AddStaticOption("[.b][.white]Location in DB: [/white][.green][/b]" + s.GetDirectory() + "[/green]"); mTagEditor->AddOption("[.b][.white]Location in DB: [/white][.green][/b]" + s.GetDirectory() + "[/green]", 0, 1);
mTagEditor->AddStaticOption(""); mTagEditor->AddOption("", 0, 1);
mTagEditor->AddStaticOption("[.b][.white]Length: [/white][.green][/b]" + s.GetLength() + "[/green]"); mTagEditor->AddOption("[.b][.white]Length: [/white][.green][/b]" + s.GetLength() + "[/green]", 0, 1);
mTagEditor->AddStaticOption("[.b][.white]Bitrate: [/white][.green][/b]" + IntoStr(f.audioProperties()->bitrate()) + " kbps[/green]"); mTagEditor->AddOption("[.b][.white]Bitrate: [/white][.green][/b]" + IntoStr(f.audioProperties()->bitrate()) + " kbps[/green]", 0, 1);
mTagEditor->AddStaticOption("[.b][.white]Sample rate: [/white][.green][/b]" + IntoStr(f.audioProperties()->sampleRate()) + " Hz[/green]"); mTagEditor->AddOption("[.b][.white]Sample rate: [/white][.green][/b]" + IntoStr(f.audioProperties()->sampleRate()) + " Hz[/green]", 0, 1);
mTagEditor->AddStaticOption("[.b][.white]Channels: [/white][.green][/b]" + (string)(f.audioProperties()->channels() == 1 ? "Mono" : "Stereo") + "[/green]"); mTagEditor->AddOption("[.b][.white]Channels: [/white][.green][/b]" + (string)(f.audioProperties()->channels() == 1 ? "Mono" : "Stereo") + "[/green]", 0, 1);
mTagEditor->AddSeparator(); mTagEditor->AddSeparator();