From 3afa0028e6e425fe4d826cf8c7d7c0ee68406e3d Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Fri, 13 Aug 2010 05:45:34 +0200 Subject: [PATCH] lyrics: some code beautification + Lyrics::SwitchTo() corrections --- src/lyrics.cpp | 79 ++++++++++++++++++++++++-------------------------- src/lyrics.h | 17 +++++------ 2 files changed, 46 insertions(+), 50 deletions(-) diff --git a/src/lyrics.cpp b/src/lyrics.cpp index caf01349..a681a9e1 100644 --- a/src/lyrics.cpp +++ b/src/lyrics.cpp @@ -68,10 +68,10 @@ void Lyrics::Resize() void Lyrics::Update() { # ifdef HAVE_CURL_CURL_H - if (ReadyToTake) + if (isReadyToTake) Take(); - if (DownloadInProgress) + if (isDownloadInProgress) { w->Flush(); w->Refresh(); @@ -104,22 +104,23 @@ void Lyrics::SwitchTo() itsScrollBegin = 0; - myOldScreen = myScreen; - myScreen = this; + // take lyrics if they were downloaded + if (isReadyToTake) + Take(); - // for taking lyrics if they were downloaded - Update(); - - const MPD::Song *s = myOldScreen->CurrentSong(); - if (s && !s->GetArtist().empty() && !s->GetTitle().empty()) + if (const MPD::Song *s = myScreen->CurrentSong()) { - itsSong = *s; - Load(); + myOldScreen = myScreen; + myScreen = this; + + if (!s->GetArtist().empty() && !s->GetTitle().empty()) + { + itsSong = *s; + Load(); + } + + Global::RedrawHeader = 1; } - else - return myOldScreen->SwitchTo(); - - Global::RedrawHeader = 1; } std::basic_string Lyrics::Title() @@ -150,8 +151,8 @@ void *Lyrics::Download() // if one of plugins is selected, try only this one, // otherwise try all of them until one of them succeeds - bool fetcher_defined = Fetcher && *Fetcher; - for (LyricsFetcher **plugin = fetcher_defined ? Fetcher : lyricsPlugins; *plugin != 0; ++plugin) + bool fetcher_defined = itsFetcher && *itsFetcher; + for (LyricsFetcher **plugin = fetcher_defined ? itsFetcher : lyricsPlugins; *plugin != 0; ++plugin) { *w << "Fetching lyrics from " << fmtBold << (*plugin)->name() << fmtBoldEnd << "... "; result = (*plugin)->fetch(artist, title); @@ -174,7 +175,7 @@ void *Lyrics::Download() else *w << "\nLyrics weren't found."; - ReadyToTake = 1; + isReadyToTake = 1; pthread_exit(0); } #endif // HAVE_CURL_CURL_H @@ -182,7 +183,7 @@ void *Lyrics::Download() void Lyrics::Load() { # ifdef HAVE_CURL_CURL_H - if (DownloadInProgress) + if (isDownloadInProgress) return; # endif // HAVE_CURL_CURL_H @@ -192,7 +193,7 @@ void Lyrics::Load() itsSong.Localize(); std::string file = locale_to_utf_cpy(itsSong.GetArtist()) + " - " + locale_to_utf_cpy(itsSong.GetTitle()) + ".txt"; EscapeUnallowedChars(file); - itsFilenamePath = Folder + "/" + file; + itsFilename = Folder + "/" + file; mkdir(Folder.c_str() # ifndef WIN32 @@ -203,7 +204,7 @@ void Lyrics::Load() w->Clear(); w->Reset(); - std::ifstream input(itsFilenamePath.c_str()); + std::ifstream input(itsFilename.c_str()); if (input.is_open()) { bool first = 1; @@ -223,8 +224,8 @@ void Lyrics::Load() else { # ifdef HAVE_CURL_CURL_H - pthread_create(&Downloader, 0, DownloadWrapper, this); - DownloadInProgress = 1; + pthread_create(&itsDownloader, 0, DownloadWrapper, this); + isDownloadInProgress = 1; # else *w << "Local lyrics not found. As ncmpcpp has been compiled without curl support, you can put appropriate lyrics into " << Folder << " directory (file syntax is \"$ARTIST - $TITLE.txt\") or recompile ncmpcpp with curl support."; w->Flush(); @@ -247,7 +248,7 @@ void Lyrics::Edit() if (Config.use_console_editor) { - system(("/bin/sh -c \"" + Config.external_editor + " \\\"" + itsFilenamePath + "\\\"\"").c_str()); + system(("/bin/sh -c \"" + Config.external_editor + " \\\"" + itsFilename + "\\\"\"").c_str()); // below is needed as screen gets cleared, but apparently // ncurses doesn't know about it, so we need to reload main screen endwin(); @@ -255,12 +256,12 @@ void Lyrics::Edit() curs_set(0); } else - system(("nohup " + Config.external_editor + " \"" + itsFilenamePath + "\" > /dev/null 2>&1 &").c_str()); + system(("nohup " + Config.external_editor + " \"" + itsFilename + "\" > /dev/null 2>&1 &").c_str()); } void Lyrics::Save(const std::string &lyrics) { - std::ofstream output(itsFilenamePath.c_str()); + std::ofstream output(itsFilename.c_str()); if (output.is_open()) { output << lyrics; @@ -270,42 +271,38 @@ void Lyrics::Save(const std::string &lyrics) void Lyrics::Refetch() { - std::string file = locale_to_utf_cpy(itsSong.GetArtist()) + " - " + locale_to_utf_cpy(itsSong.GetTitle()) + ".txt"; - EscapeUnallowedChars(file); - std::string path = Folder + "/" + file; - - if (!remove(path.c_str())) + if (!remove(itsFilename.c_str())) { Load(); } else { static const char msg[] = "Couldn't remove \"%s\": %s"; - ShowMessage(msg, Shorten(TO_WSTRING(path), COLS-static_strlen(msg)-25).c_str(), strerror(errno)); + ShowMessage(msg, Shorten(TO_WSTRING(itsFilename), COLS-static_strlen(msg)-25).c_str(), strerror(errno)); } } #ifdef HAVE_CURL_CURL_H void Lyrics::ToggleFetcher() { - if (Fetcher && *Fetcher) - ++Fetcher; + if (itsFetcher && *itsFetcher) + ++itsFetcher; else - Fetcher = &lyricsPlugins[0]; - if (*Fetcher) - ShowMessage("Using lyrics database: %s", (*Fetcher)->name()); + itsFetcher = &lyricsPlugins[0]; + if (*itsFetcher) + ShowMessage("Using lyrics database: %s", (*itsFetcher)->name()); else ShowMessage("Using all lyrics databases"); } void Lyrics::Take() { - assert(ReadyToTake); - pthread_join(Downloader, 0); + assert(isReadyToTake); + pthread_join(itsDownloader, 0); w->Flush(); w->Refresh(); - DownloadInProgress = 0; - ReadyToTake = 0; + isDownloadInProgress = 0; + isReadyToTake = 0; } #endif // HAVE_CURL_CURL_H diff --git a/src/lyrics.h b/src/lyrics.h index 6105c18e..066fdc71 100644 --- a/src/lyrics.h +++ b/src/lyrics.h @@ -31,12 +31,10 @@ class Lyrics : public Screen public: Lyrics() : ReloadNP(0), # ifdef HAVE_CURL_CURL_H - ReadyToTake(0), DownloadInProgress(0), Fetcher(0), + isReadyToTake(0), isDownloadInProgress(0), itsFetcher(0), # endif // HAVE_CURL_CURL_H itsScrollBegin(0) { } - ~Lyrics() { } - virtual void Resize(); virtual void SwitchTo(); @@ -52,7 +50,6 @@ class Lyrics : public Screen virtual List *GetList() { return 0; } void Edit(); - void Save(const std::string &lyrics); void Refetch(); # ifdef HAVE_CURL_CURL_H void ToggleFetcher(); @@ -66,18 +63,20 @@ class Lyrics : public Screen private: void Load(); - std::string itsFilenamePath; + std::string itsFilename; static const std::string Folder; # ifdef HAVE_CURL_CURL_H void *Download(); static void *DownloadWrapper(void *); + void Save(const std::string &lyrics); + void Take(); - bool ReadyToTake; - bool DownloadInProgress; - pthread_t Downloader; - LyricsFetcher **Fetcher; + bool isReadyToTake; + bool isDownloadInProgress; + pthread_t itsDownloader; + LyricsFetcher **itsFetcher; # endif // HAVE_CURL_CURL_H size_t itsScrollBegin;