From 226702f23ad526fb327ca81aad5f441aed8aaeab Mon Sep 17 00:00:00 2001 From: unK Date: Wed, 10 Sep 2008 11:06:01 +0200 Subject: [PATCH] simplify adding options in Menu class --- src/helpers.cpp | 2 +- src/menu.h | 58 +++++------------------------------------- src/ncmpcpp.cpp | 4 +-- src/status_checker.cpp | 7 +---- src/tag_editor.cpp | 14 +++++----- 5 files changed, 18 insertions(+), 67 deletions(-) diff --git a/src/helpers.cpp b/src/helpers.cpp index f5f89952..251a086c 100644 --- a/src/helpers.cpp +++ b/src/helpers.cpp @@ -764,7 +764,7 @@ void GetDirectory(string dir, string subdir) break; } } - bold ? mBrowser->AddBoldOption(*it) : mBrowser->AddOption(*it); + mBrowser->AddOption(*it, bold); break; } } diff --git a/src/menu.h b/src/menu.h index b9357911..b4448679 100644 --- a/src/menu.h +++ b/src/menu.h @@ -55,11 +55,8 @@ class Menu : public Window void SetItemDisplayer(ItemDisplayer ptr) { itsItemDisplayer = ptr; } 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); - 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 AddOption(const T &, bool bold = 0, bool is_static = 0, bool separator = 0, Location = lLeft); + void AddSeparator() { AddOption(T(), 0, 1, 1); } void UpdateOption(int, const T &, Location = lLeft, bool separator = 0); void RefreshOption(int option = -1) { NeedsRedraw.push_back(option < 0 ? itsHighlight : option); } void BoldOption(int, bool); @@ -194,61 +191,20 @@ int Menu::count_length(string str) } template -void Menu::AddOption(const T &item, Location location, bool separator) +void Menu::AddOption(const T &item, bool bold, bool is_static, bool separator, Location location) { Option *new_option = new Option; new_option->item = item; - new_option->location = location; - new_option->have_separator = separator; - itsOptions.push_back(new_option); - NeedsRedraw.push_back(itsOptions.size()-1); -} - -template -void Menu::AddBoldOption(const T &item, Location location, bool separator) -{ - Option *new_option = new Option; - 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 -void Menu::AddStaticOption(const T &item, Location location, bool separator) -{ - Option *new_option = new Option; - 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->is_static = 1; - itsOptions.push_back(new_option); - itsStaticsNumber++; - NeedsRedraw.push_back(itsOptions.size()-1); -} - -template -void Menu::AddStaticBoldOption(const T &item, Location location, bool separator) -{ - Option *new_option = new Option; - new_option->item = item; new_option->location = location; - new_option->have_separator = separator; - new_option->is_static = 1; - new_option->is_bold = 1; + if (is_static) + itsStaticsNumber++; itsOptions.push_back(new_option); - itsStaticsNumber++; NeedsRedraw.push_back(itsOptions.size()-1); } -template -void Menu::AddSeparator() -{ - AddStaticOption(T(), lLeft, 1); -} - template void Menu::UpdateOption(int index, const T &item, Location location, bool separator) { diff --git a/src/ncmpcpp.cpp b/src/ncmpcpp.cpp index a7a8e81c..552ee5f0 100644 --- a/src/ncmpcpp.cpp +++ b/src/ncmpcpp.cpp @@ -592,7 +592,7 @@ int main(int argc, char *argv[]) break; } } - bold ? mLibSongs->AddBoldOption(**it) : mLibSongs->AddOption(**it); + mLibSongs->AddOption(**it, bold); bold = 0; } FreeSongList(list); @@ -638,7 +638,7 @@ int main(int argc, char *argv[]) break; } } - bold ? mPlaylistEditor->AddBoldOption(**it) : mPlaylistEditor->AddOption(**it); + mPlaylistEditor->AddOption(**it, bold); bold = 0; } FreeSongList(list); diff --git a/src/status_checker.cpp b/src/status_checker.cpp index 347b917e..d10c33c2 100644 --- a/src/status_checker.cpp +++ b/src/status_checker.cpp @@ -179,12 +179,7 @@ void NcmpcppStatusChanged(MPDConnection *Mpd, MPDStatusChanges changed, void *da Mpd->GetPlaylistChanges(playlist_old_id, list); for (SongList::const_iterator it = list.begin(); it != list.end(); it++) - { - if (now_playing != (*it)->GetPosition()) - mPlaylist->AddOption(**it); - else - mPlaylist->AddBoldOption(**it); - } + mPlaylist->AddOption(**it, now_playing == (*it)->GetPosition()); if (current_screen == csPlaylist) { diff --git a/src/tag_editor.cpp b/src/tag_editor.cpp index fb6ab623..acaec072 100644 --- a/src/tag_editor.cpp +++ b/src/tag_editor.cpp @@ -89,13 +89,13 @@ bool GetSongTags(Song &s) mTagEditor->Clear(); mTagEditor->Reset(); - mTagEditor->AddStaticOption("[.b][.white]Song name: [/white][.green][/b]" + s.GetShortFilename() + "[/green]"); - mTagEditor->AddStaticOption("[.b][.white]Location in DB: [/white][.green][/b]" + s.GetDirectory() + "[/green]"); - mTagEditor->AddStaticOption(""); - mTagEditor->AddStaticOption("[.b][.white]Length: [/white][.green][/b]" + s.GetLength() + "[/green]"); - mTagEditor->AddStaticOption("[.b][.white]Bitrate: [/white][.green][/b]" + IntoStr(f.audioProperties()->bitrate()) + " kbps[/green]"); - mTagEditor->AddStaticOption("[.b][.white]Sample rate: [/white][.green][/b]" + IntoStr(f.audioProperties()->sampleRate()) + " Hz[/green]"); - mTagEditor->AddStaticOption("[.b][.white]Channels: [/white][.green][/b]" + (string)(f.audioProperties()->channels() == 1 ? "Mono" : "Stereo") + "[/green]"); + mTagEditor->AddOption("[.b][.white]Song name: [/white][.green][/b]" + s.GetShortFilename() + "[/green]", 0, 1); + mTagEditor->AddOption("[.b][.white]Location in DB: [/white][.green][/b]" + s.GetDirectory() + "[/green]", 0, 1); + mTagEditor->AddOption("", 0, 1); + mTagEditor->AddOption("[.b][.white]Length: [/white][.green][/b]" + s.GetLength() + "[/green]", 0, 1); + mTagEditor->AddOption("[.b][.white]Bitrate: [/white][.green][/b]" + IntoStr(f.audioProperties()->bitrate()) + " kbps[/green]", 0, 1); + mTagEditor->AddOption("[.b][.white]Sample rate: [/white][.green][/b]" + IntoStr(f.audioProperties()->sampleRate()) + " Hz[/green]", 0, 1); + mTagEditor->AddOption("[.b][.white]Channels: [/white][.green][/b]" + (string)(f.audioProperties()->channels() == 1 ? "Mono" : "Stereo") + "[/green]", 0, 1); mTagEditor->AddSeparator();