diff options
-rw-r--r-- | src/global.h | 6 | ||||
-rw-r--r-- | src/info.cpp | 12 | ||||
-rw-r--r-- | src/lyrics.cpp | 6 | ||||
-rw-r--r-- | src/ncmpcpp.cpp | 188 | ||||
-rw-r--r-- | src/playlist_editor.cpp | 160 | ||||
-rw-r--r-- | src/playlist_editor.h | 40 | ||||
-rw-r--r-- | src/status_checker.cpp | 5 | ||||
-rw-r--r-- | src/tag_editor.cpp | 2 |
8 files changed, 224 insertions, 195 deletions
diff --git a/src/global.h b/src/global.h index 37affe67..51fb2114 100644 --- a/src/global.h +++ b/src/global.h @@ -54,9 +54,9 @@ namespace Global extern Menu<MPD::Song> *mEditorTags; # endif // HAVE_TAGLIB_H - extern Window *wPlaylistEditorActiveCol; - extern Menu<std::string> *mPlaylistList; - extern Menu<MPD::Song> *mPlaylistEditor; +// extern Window *wPlaylistEditorActiveCol; +// extern Menu<std::string> *mPlaylistList; +// extern Menu<MPD::Song> *myPlaylistEditor->Content; extern Scrollpad *sHelp; extern Scrollpad *sLyrics; diff --git a/src/info.cpp b/src/info.cpp index 371d1827..6dfd7fce 100644 --- a/src/info.cpp +++ b/src/info.cpp @@ -85,7 +85,7 @@ void Info::GetSong() } else if (current_screen == csPlaylistEditor) { - PlaylistEditor::Refresh(); + myPlaylistEditor->Refresh(); } # ifdef HAVE_TAGLIB_H else if (current_screen == csTagEditor) @@ -99,7 +99,7 @@ void Info::GetSong() || (wCurrent == myBrowser->Main() && myBrowser->Main()->Current().type == MPD::itSong) || (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first) || (wCurrent == myLibrary->Songs && !myLibrary->Songs->Empty()) - || (wCurrent == mPlaylistEditor && !mPlaylistEditor->Empty()) + || (wCurrent == myPlaylistEditor->Content && !myPlaylistEditor->Content->Empty()) # ifdef HAVE_TAGLIB_H || (wCurrent == mEditorTags && !mEditorTags->Empty()) # endif // HAVE_TAGLIB_H @@ -122,7 +122,7 @@ void Info::GetSong() s = &myLibrary->Songs->at(id); break; case csPlaylistEditor: - s = &mPlaylistEditor->at(id); + s = &myPlaylistEditor->Content->at(id); break; # ifdef HAVE_TAGLIB_H case csTagEditor: @@ -172,7 +172,7 @@ void Info::GetArtist() } else if (current_screen == csPlaylistEditor) { - PlaylistEditor::Refresh(); + myPlaylistEditor->Refresh(); } # ifdef HAVE_TAGLIB_H else if (current_screen == csTagEditor) @@ -187,7 +187,7 @@ void Info::GetArtist() || (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first) || (wCurrent == myLibrary->Artists && !myLibrary->Artists->Empty()) || (wCurrent == myLibrary->Songs && !myLibrary->Songs->Empty()) - || (wCurrent == mPlaylistEditor && !mPlaylistEditor->Empty()) + || (wCurrent == myPlaylistEditor->Content && !myPlaylistEditor->Content->Empty()) # ifdef HAVE_TAGLIB_H || (wCurrent == mEditorTags && !mEditorTags->Empty()) # endif // HAVE_TAGLIB_H @@ -216,7 +216,7 @@ void Info::GetArtist() *artist = myLibrary->Artists->at(id); break; case csPlaylistEditor: - *artist = mPlaylistEditor->at(id).GetArtist(); + *artist = myPlaylistEditor->Content->at(id).GetArtist(); break; # ifdef HAVE_TAGLIB_H case csTagEditor: diff --git a/src/lyrics.cpp b/src/lyrics.cpp index cf95d2f9..8d866f37 100644 --- a/src/lyrics.cpp +++ b/src/lyrics.cpp @@ -97,7 +97,7 @@ void Lyrics::Get() } else if (current_screen == csPlaylistEditor) { - PlaylistEditor::Refresh(); + myPlaylistEditor->Refresh(); } # ifdef HAVE_TAGLIB_H else if (current_screen == csTagEditor) @@ -112,7 +112,7 @@ void Lyrics::Get() || (wCurrent == myBrowser->Main() && myBrowser->Main()->Current().type == MPD::itSong) || (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first) || (wCurrent == myLibrary->Songs && !myLibrary->Songs->Empty()) - || (wCurrent == mPlaylistEditor && !mPlaylistEditor->Empty()) + || (wCurrent == myPlaylistEditor->Content && !myPlaylistEditor->Content->Empty()) # ifdef HAVE_TAGLIB_H || (wCurrent == mEditorTags && !mEditorTags->Empty()) # endif // HAVE_TAGLIB_H @@ -154,7 +154,7 @@ void Lyrics::Get() s = &myLibrary->Songs->at(id); break; case csPlaylistEditor: - s = &mPlaylistEditor->at(id); + s = &myPlaylistEditor->Content->at(id); break; # ifdef HAVE_TAGLIB_H case csTagEditor: diff --git a/src/ncmpcpp.cpp b/src/ncmpcpp.cpp index bd7263d1..56ae5875 100644 --- a/src/ncmpcpp.cpp +++ b/src/ncmpcpp.cpp @@ -151,7 +151,7 @@ int main(int argc, char *argv[]) myBrowser->Init(); mySearcher->Init(); myLibrary->Init(); - PlaylistEditor::Init(); + myPlaylistEditor->Init(); # ifdef HAVE_TAGLIB_H TinyTagEditor::Init(); @@ -264,7 +264,7 @@ int main(int argc, char *argv[]) screen_title = "Lyrics: "; break; case csPlaylistEditor: - screen_title = "Playlist editor"; + screen_title = myPlaylistEditor->Title(); break; # ifdef ENABLE_CLOCK case csClock: @@ -323,7 +323,7 @@ int main(int argc, char *argv[]) } else if (current_screen == csPlaylistEditor) { - PlaylistEditor::Update(); + myPlaylistEditor->Update(); } else # ifdef HAVE_TAGLIB_H @@ -383,9 +383,9 @@ int main(int argc, char *argv[]) { myLibrary->Songs->Clear(0); } - else if (wCurrent == mPlaylistList) + else if (wCurrent == myPlaylistEditor->List) { - mPlaylistEditor->Clear(0); + myPlaylistEditor->Content->Clear(0); } # ifdef HAVE_TAGLIB_H else if (wCurrent == mEditorLeftCol) @@ -413,7 +413,7 @@ int main(int argc, char *argv[]) { if (!Config.fancy_scrolling && (wCurrent == myLibrary->Artists - || wCurrent == mPlaylistList + || wCurrent == myPlaylistEditor->List # ifdef HAVE_TAGLIB_H || wCurrent == mEditorLeftCol # endif // HAVE_TAGLIB_H @@ -441,7 +441,7 @@ int main(int argc, char *argv[]) { if (!Config.fancy_scrolling && (wCurrent == myLibrary->Artists - || wCurrent == mPlaylistList + || wCurrent == myPlaylistEditor->List # ifdef HAVE_TAGLIB_H || wCurrent == mEditorLeftCol # endif // HAVE_TAGLIB_H @@ -510,7 +510,7 @@ int main(int argc, char *argv[]) myBrowser->Resize(); mySearcher->Resize(); myLibrary->Resize(); - PlaylistEditor::Resize(); + myPlaylistEditor->Resize(); Info::Resize(); Lyrics::Resize(); @@ -543,7 +543,7 @@ int main(int argc, char *argv[]) # endif // HAVE_TAGLIB_H if (current_screen == csPlaylistEditor) { - PlaylistEditor::Refresh(); + myPlaylistEditor->Refresh(); } header_update_status = 1; PlayerState mpd_state = Mpd->GetState(); @@ -597,7 +597,7 @@ int main(int argc, char *argv[]) } case csPlaylistEditor: { - PlaylistEditor::EnterPressed(); + myPlaylistEditor->EnterPressed(); break; } # ifdef HAVE_TAGLIB_H @@ -626,7 +626,7 @@ int main(int argc, char *argv[]) # endif // HAVE_TAGLIB_H || (wCurrent == myBrowser->Main() && ((Menu<Song> *)wCurrent)->Choice() >= (myBrowser->CurrentDir() != "/" ? 1 : 0)) || (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first) || wCurrent == myLibrary->Songs - || wCurrent == mPlaylistEditor) + || wCurrent == myPlaylistEditor->Content) { List *mList = (Menu<Song> *)wCurrent; if (mList->Empty()) @@ -652,7 +652,7 @@ int main(int argc, char *argv[]) } else if (current_screen == csPlaylistEditor) { - PlaylistEditor::SpacePressed(); + myPlaylistEditor->SpacePressed(); } # ifdef HAVE_TAGLIB_H else if (wCurrent == mEditorLeftCol) @@ -680,14 +680,7 @@ int main(int argc, char *argv[]) } else if (current_screen == csPlaylistEditor && input == Key.VolumeUp[0]) { - if (wCurrent == mPlaylistList) - { - CLEAR_FIND_HISTORY; - mPlaylistList->HighlightColor(Config.main_highlight_color); - wCurrent->Refresh(); - wCurrent = wPlaylistEditorActiveCol = mPlaylistEditor; - mPlaylistEditor->HighlightColor(Config.active_column_color); - } + myPlaylistEditor->NextColumn(); } # ifdef HAVE_TAGLIB_H else if (current_screen == csTagEditor && input == Key.VolumeUp[0]) @@ -720,14 +713,7 @@ int main(int argc, char *argv[]) } else if (current_screen == csPlaylistEditor && input == Key.VolumeDown[0]) { - if (wCurrent == mPlaylistEditor) - { - CLEAR_FIND_HISTORY; - mPlaylistEditor->HighlightColor(Config.main_highlight_color); - wCurrent->Refresh(); - wCurrent = wPlaylistEditorActiveCol = mPlaylistList; - mPlaylistList->HighlightColor(Config.active_column_color); - } + myPlaylistEditor->PrevColumn(); } # ifdef HAVE_TAGLIB_H else if (current_screen == csTagEditor && input == Key.VolumeDown[0]) @@ -790,10 +776,10 @@ int main(int argc, char *argv[]) } Mpd->CommitQueue(); } - else if (current_screen == csBrowser || wCurrent == mPlaylistList) + else if (current_screen == csBrowser || wCurrent == myPlaylistEditor->List) { LockStatusbar(); - string name = wCurrent == myBrowser->Main() ? myBrowser->Main()->Current().name : mPlaylistList->Current(); + string name = wCurrent == myBrowser->Main() ? myBrowser->Main()->Current().name : myPlaylistEditor->List->Current(); if (current_screen != csBrowser || myBrowser->Main()->Current().type == itPlaylist) { Statusbar() << "Delete playlist " << name << " ? [y/n] "; @@ -815,41 +801,41 @@ int main(int argc, char *argv[]) else ShowMessage("Aborted!"); curs_set(0); - mPlaylistList->Clear(0); // make playlists list update itself + myPlaylistEditor->List->Clear(0); // make playlists list update itself } UnlockStatusbar(); } - else if (wCurrent == mPlaylistEditor && !mPlaylistEditor->Empty()) + else if (wCurrent == myPlaylistEditor->Content && !myPlaylistEditor->Content->Empty()) { - if (mPlaylistEditor->hasSelected()) + if (myPlaylistEditor->Content->hasSelected()) { vector<size_t> list; - mPlaylistEditor->GetSelected(list); - locale_to_utf(mPlaylistList->Current()); + myPlaylistEditor->Content->GetSelected(list); + locale_to_utf(myPlaylistEditor->List->Current()); for (vector<size_t>::const_reverse_iterator it = list.rbegin(); it != ((const vector<size_t> &)list).rend(); it++) { - Mpd->QueueDeleteFromPlaylist(mPlaylistList->Current(), *it); - mPlaylistEditor->DeleteOption(*it); + Mpd->QueueDeleteFromPlaylist(myPlaylistEditor->List->Current(), *it); + myPlaylistEditor->Content->DeleteOption(*it); } - utf_to_locale(mPlaylistList->Current()); - ShowMessage("Selected items deleted from playlist '%s'!", mPlaylistList->Current().c_str()); + utf_to_locale(myPlaylistEditor->List->Current()); + ShowMessage("Selected items deleted from playlist '%s'!", myPlaylistEditor->List->Current().c_str()); // redraw_screen = 1; } else { - mPlaylistEditor->SetTimeout(50); - locale_to_utf(mPlaylistList->Current()); - while (!mPlaylistEditor->Empty() && Keypressed(input, Key.Delete)) + myPlaylistEditor->Content->SetTimeout(50); + locale_to_utf(myPlaylistEditor->List->Current()); + while (!myPlaylistEditor->Content->Empty() && Keypressed(input, Key.Delete)) { TraceMpdStatus(); timer = time(NULL); - Mpd->QueueDeleteFromPlaylist(mPlaylistList->Current(), mPlaylistEditor->Choice()); - mPlaylistEditor->DeleteOption(mPlaylistEditor->Choice()); - mPlaylistEditor->Refresh(); - mPlaylistEditor->ReadKey(input); + Mpd->QueueDeleteFromPlaylist(myPlaylistEditor->List->Current(), myPlaylistEditor->Content->Choice()); + myPlaylistEditor->Content->DeleteOption(myPlaylistEditor->Content->Choice()); + myPlaylistEditor->Content->Refresh(); + myPlaylistEditor->Content->ReadKey(input); } - utf_to_locale(mPlaylistList->Current()); - mPlaylistEditor->SetTimeout(ncmpcpp_window_timeout); + utf_to_locale(myPlaylistEditor->List->Current()); + myPlaylistEditor->Content->SetTimeout(ncmpcpp_window_timeout); } Mpd->CommitQueue(); } @@ -884,7 +870,7 @@ int main(int argc, char *argv[]) if (Mpd->SavePlaylist(real_playlist_name)) { ShowMessage("Playlist saved as: %s", playlist_name.c_str()); - mPlaylistList->Clear(0); // make playlist's list update itself + myPlaylistEditor->List->Clear(0); // make playlist's list update itself } else { @@ -909,7 +895,7 @@ int main(int argc, char *argv[]) else ShowMessage("Aborted!"); curs_set(0); - mPlaylistList->Clear(0); // make playlist's list update itself + myPlaylistEditor->List->Clear(0); // make playlist's list update itself UnlockStatusbar(); } } @@ -975,13 +961,13 @@ int main(int argc, char *argv[]) } myPlaylist->Main()->SetTimeout(ncmpcpp_window_timeout); } - else if (wCurrent == mPlaylistEditor && !mPlaylistEditor->Empty()) + else if (wCurrent == myPlaylistEditor->Content && !myPlaylistEditor->Content->Empty()) { - mPlaylistEditor->SetTimeout(50); - if (mPlaylistEditor->hasSelected()) + myPlaylistEditor->Content->SetTimeout(50); + if (myPlaylistEditor->Content->hasSelected()) { vector<size_t> list; - mPlaylistEditor->GetSelected(list); + myPlaylistEditor->Content->GetSelected(list); vector<size_t> origs(list); @@ -992,35 +978,35 @@ int main(int argc, char *argv[]) for (vector<size_t>::iterator it = list.begin(); it != list.end(); it++) { (*it)--; - mPlaylistEditor->Swap(*it, (*it)+1); + myPlaylistEditor->Content->Swap(*it, (*it)+1); } - mPlaylistEditor->Highlight(list[(list.size()-1)/2]); - mPlaylistEditor->Refresh(); - mPlaylistEditor->ReadKey(input); + myPlaylistEditor->Content->Highlight(list[(list.size()-1)/2]); + myPlaylistEditor->Content->Refresh(); + myPlaylistEditor->Content->ReadKey(input); } for (size_t i = 0; i < list.size(); i++) if (origs[i] != list[i]) - Mpd->QueueMove(mPlaylistList->Current(), origs[i], list[i]); + Mpd->QueueMove(myPlaylistEditor->List->Current(), origs[i], list[i]); Mpd->CommitQueue(); } else { size_t from, to; - from = to = mPlaylistEditor->Choice(); + from = to = myPlaylistEditor->Content->Choice(); while (Keypressed(input, Key.MvSongUp) && to > 0) { TraceMpdStatus(); timer = time(NULL); to--; - mPlaylistEditor->Swap(to, to+1); - mPlaylistEditor->Scroll(wUp); - mPlaylistEditor->Refresh(); - mPlaylistEditor->ReadKey(input); + myPlaylistEditor->Content->Swap(to, to+1); + myPlaylistEditor->Content->Scroll(wUp); + myPlaylistEditor->Content->Refresh(); + myPlaylistEditor->Content->ReadKey(input); } if (from != to) - Mpd->Move(mPlaylistList->Current(), from, to); + Mpd->Move(myPlaylistEditor->List->Current(), from, to); } - mPlaylistEditor->SetTimeout(ncmpcpp_window_timeout); + myPlaylistEditor->Content->SetTimeout(ncmpcpp_window_timeout); } } else if (Keypressed(input, Key.MvSongDown)) @@ -1079,52 +1065,52 @@ int main(int argc, char *argv[]) myPlaylist->Main()->SetTimeout(ncmpcpp_window_timeout); } - else if (wCurrent == mPlaylistEditor && !mPlaylistEditor->Empty()) + else if (wCurrent == myPlaylistEditor->Content && !myPlaylistEditor->Content->Empty()) { - mPlaylistEditor->SetTimeout(50); - if (mPlaylistEditor->hasSelected()) + myPlaylistEditor->Content->SetTimeout(50); + if (myPlaylistEditor->Content->hasSelected()) { vector<size_t> list; - mPlaylistEditor->GetSelected(list); + myPlaylistEditor->Content->GetSelected(list); vector<size_t> origs(list); - while (Keypressed(input, Key.MvSongDown) && list.back() < mPlaylistEditor->Size()-1) + while (Keypressed(input, Key.MvSongDown) && list.back() < myPlaylistEditor->Content->Size()-1) { TraceMpdStatus(); timer = time(NULL); for (vector<size_t>::reverse_iterator it = list.rbegin(); it != list.rend(); it++) { (*it)++; - mPlaylistEditor->Swap(*it, (*it)-1); + myPlaylistEditor->Content->Swap(*it, (*it)-1); } - mPlaylistEditor->Highlight(list[(list.size()-1)/2]); - mPlaylistEditor->Refresh(); - mPlaylistEditor->ReadKey(input); + myPlaylistEditor->Content->Highlight(list[(list.size()-1)/2]); + myPlaylistEditor->Content->Refresh(); + myPlaylistEditor->Content->ReadKey(input); } for (int i = list.size()-1; i >= 0; i--) if (origs[i] != list[i]) - Mpd->QueueMove(mPlaylistList->Current(), origs[i], list[i]); + Mpd->QueueMove(myPlaylistEditor->List->Current(), origs[i], list[i]); Mpd->CommitQueue(); } else { size_t from, to; - from = to = mPlaylistEditor->Choice(); - while (Keypressed(input, Key.MvSongDown) && to < mPlaylistEditor->Size()-1) + from = to = myPlaylistEditor->Content->Choice(); + while (Keypressed(input, Key.MvSongDown) && to < myPlaylistEditor->Content->Size()-1) { TraceMpdStatus(); timer = time(NULL); to++; - mPlaylistEditor->Swap(to, to-1); - mPlaylistEditor->Scroll(wDown); - mPlaylistEditor->Refresh(); - mPlaylistEditor->ReadKey(input); + myPlaylistEditor->Content->Swap(to, to-1); + myPlaylistEditor->Content->Scroll(wDown); + myPlaylistEditor->Content->Refresh(); + myPlaylistEditor->Content->ReadKey(input); } if (from != to) - Mpd->Move(mPlaylistList->Current(), from, to); + Mpd->Move(myPlaylistEditor->List->Current(), from, to); } - mPlaylistEditor->SetTimeout(ncmpcpp_window_timeout); + myPlaylistEditor->Content->SetTimeout(ncmpcpp_window_timeout); } } else if (Keypressed(input, Key.Add)) @@ -1386,7 +1372,7 @@ int main(int argc, char *argv[]) || (wCurrent == myBrowser->Main() && myBrowser->Main()->Current().type == itSong) || (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first) || (wCurrent == myLibrary->Songs && !myLibrary->Songs->Empty()) - || (wCurrent == mPlaylistEditor && !mPlaylistEditor->Empty()) + || (wCurrent == myPlaylistEditor->Content && !myPlaylistEditor->Content->Empty()) || (wCurrent == mEditorTags && !mEditorTags->Empty())) { List *mList = reinterpret_cast<Menu<Song> *>(wCurrent); @@ -1406,7 +1392,7 @@ int main(int argc, char *argv[]) edited_song = myLibrary->Songs->at(id); break; case csPlaylistEditor: - edited_song = mPlaylistEditor->at(id); + edited_song = myPlaylistEditor->Content->at(id); break; case csTagEditor: edited_song = mEditorTags->at(id); @@ -1488,9 +1474,9 @@ int main(int argc, char *argv[]) ShowMessage("Cannot rename '%s' to '%s'!", old_dir.c_str(), new_dir.c_str()); } } - else if (wCurrent == mPlaylistList || (wCurrent == myBrowser->Main() && myBrowser->Main()->Current().type == itPlaylist)) + else if (wCurrent == myPlaylistEditor->List || (wCurrent == myBrowser->Main() && myBrowser->Main()->Current().type == itPlaylist)) { - string old_name = wCurrent == mPlaylistList ? mPlaylistList->Current() : myBrowser->Main()->Current().name; + string old_name = wCurrent == myPlaylistEditor->List ? myPlaylistEditor->List->Current() : myBrowser->Main()->Current().name; LockStatusbar(); Statusbar() << fmtBold << "Playlist: " << fmtBoldEnd; string new_name = wFooter->GetString(old_name); @@ -1501,7 +1487,7 @@ int main(int argc, char *argv[]) ShowMessage("Playlist '%s' renamed to '%s'", old_name.c_str(), new_name.c_str()); if (!Config.local_browser) myBrowser->GetDirectory("/"); - mPlaylistList->Clear(0); + myPlaylistEditor->List->Clear(0); } } } @@ -1510,7 +1496,7 @@ int main(int argc, char *argv[]) if ((wCurrent == myPlaylist->Main() && !myPlaylist->Main()->Empty()) || (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first) || (wCurrent == myLibrary->Songs && !myLibrary->Songs->Empty()) - || (wCurrent == mPlaylistEditor && !mPlaylistEditor->Empty()) + || (wCurrent == myPlaylistEditor->Content && !myPlaylistEditor->Content->Empty()) # ifdef HAVE_TAGLIB_H || (wCurrent == mEditorTags && !mEditorTags->Empty()) # endif // HAVE_TAGLIB_H @@ -1530,7 +1516,7 @@ int main(int argc, char *argv[]) s = &myLibrary->Songs->at(id); break; case csPlaylistEditor: - s = &mPlaylistEditor->at(id); + s = &myPlaylistEditor->Content->at(id); break; # ifdef HAVE_TAGLIB_H case csTagEditor: @@ -1594,7 +1580,7 @@ int main(int argc, char *argv[]) || wCurrent == myBrowser->Main() || (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first) || wCurrent == myLibrary->Songs - || wCurrent == mPlaylistEditor + || wCurrent == myPlaylistEditor->Content # ifdef HAVE_TAGLIB_H || wCurrent == mEditorTags # endif // HAVE_TAGLIB_H @@ -1619,7 +1605,7 @@ int main(int argc, char *argv[]) || wCurrent == myBrowser->Main() || wCurrent == mySearcher->Main() || wCurrent == myLibrary->Songs - || wCurrent == mPlaylistEditor + || wCurrent == myPlaylistEditor->Content # ifdef HAVE_TAGLIB_H || wCurrent == mEditorTags # endif // HAVE_TAGLIB_H @@ -1640,7 +1626,7 @@ int main(int argc, char *argv[]) && wCurrent != myBrowser->Main() && wCurrent != mySearcher->Main() && wCurrent != myLibrary->Songs - && wCurrent != mPlaylistEditor) + && wCurrent != myPlaylistEditor->Content) continue; List *mList = reinterpret_cast<Menu<Song> *>(wCurrent); @@ -1701,7 +1687,7 @@ int main(int argc, char *argv[]) } case csPlaylistEditor: { - Song *s = new Song(mPlaylistEditor->at(*it)); + Song *s = new Song(myPlaylistEditor->Content->at(*it)); result.push_back(s); break; } @@ -1770,7 +1756,7 @@ int main(int argc, char *argv[]) } else if (current_screen == csPlaylistEditor) { - PlaylistEditor::Refresh(); + myPlaylistEditor->Refresh(); } else wCurrent->Refresh(); @@ -1818,7 +1804,7 @@ int main(int argc, char *argv[]) // refresh playlist's lists if (!Config.local_browser && myBrowser->CurrentDir() == "/") myBrowser->GetDirectory("/"); - mPlaylistList->Clear(0); // make playlist editor update itself + myPlaylistEditor->List->Clear(0); // make playlist editor update itself } timer = time(NULL); delete mDialog; @@ -1927,10 +1913,10 @@ int main(int argc, char *argv[]) name = myLibrary->Songs->at(i).toString(Config.song_library_format); break; case csPlaylistEditor: - if (wCurrent == mPlaylistList) - name = mPlaylistList->at(i); + if (wCurrent == myPlaylistEditor->List) + name = myPlaylistEditor->List->at(i); else - name = mPlaylistEditor->at(i).toString(Config.song_list_format); + name = myPlaylistEditor->Content->at(i).toString(Config.song_list_format); break; # ifdef HAVE_TAGLIB_H case csTagEditor: @@ -2142,7 +2128,7 @@ int main(int argc, char *argv[]) } else if (Keypressed(input, Key.PlaylistEditor)) { - PlaylistEditor::SwitchTo(); + myPlaylistEditor->SwitchTo(); } # ifdef HAVE_TAGLIB_H else if (Keypressed(input, Key.TagEditor)) diff --git a/src/playlist_editor.cpp b/src/playlist_editor.cpp index 1d3c9f04..b6b5e052 100644 --- a/src/playlist_editor.cpp +++ b/src/playlist_editor.cpp @@ -33,56 +33,60 @@ using namespace Global; using namespace MPD; using std::string; -Window *Global::wPlaylistEditorActiveCol; -Menu<string> *Global::mPlaylistList; -Menu<Song> *Global::mPlaylistEditor; +//Window *Global::wPlaylistEditorActiveCol; +//Menu<string> *Global::List; +//Menu<Song> *Global::Content; -namespace PlaylistEditor -{ - size_t left_col_width; - size_t right_col_startx; - size_t right_col_width; -} +PlaylistEditor *myPlaylistEditor = new PlaylistEditor; + +size_t PlaylistEditor::LeftColumnWidth; +size_t PlaylistEditor::RightColumnStartX; +size_t PlaylistEditor::RightColumnWidth; void PlaylistEditor::Init() { - left_col_width = COLS/3-1; - right_col_startx = left_col_width+1; - right_col_width = COLS-left_col_width-1; + LeftColumnWidth = COLS/3-1; + RightColumnStartX = LeftColumnWidth+1; + RightColumnWidth = COLS-LeftColumnWidth-1; - mPlaylistList = new Menu<string>(0, main_start_y, left_col_width, main_height, "Playlists", Config.main_color, brNone); - mPlaylistList->HighlightColor(Config.active_column_color); - mPlaylistList->SetTimeout(ncmpcpp_window_timeout); - mPlaylistList->SetItemDisplayer(Display::Generic); + List = new Menu<string>(0, main_start_y, LeftColumnWidth, main_height, "Playlists", Config.main_color, brNone); + List->HighlightColor(Config.active_column_color); + List->SetTimeout(ncmpcpp_window_timeout); + List->SetItemDisplayer(Display::Generic); - mPlaylistEditor = new Menu<Song>(right_col_startx, main_start_y, right_col_width, main_height, "Playlist's content", Config.main_color, brNone); - mPlaylistEditor->HighlightColor(Config.main_highlight_color); - mPlaylistEditor->SetTimeout(ncmpcpp_window_timeout); - mPlaylistEditor->SetSelectPrefix(&Config.selected_item_prefix); - mPlaylistEditor->SetSelectSuffix(&Config.selected_item_suffix); - mPlaylistEditor->SetItemDisplayer(Display::Songs); - mPlaylistEditor->SetItemDisplayerUserData(&Config.song_list_format); + Content = new Menu<Song>(RightColumnStartX, main_start_y, RightColumnWidth, main_height, "Playlist's content", Config.main_color, brNone); + Content->HighlightColor(Config.main_highlight_color); + Content->SetTimeout(ncmpcpp_window_timeout); + Content->SetSelectPrefix(&Config.selected_item_prefix); + Content->SetSelectSuffix(&Config.selected_item_suffix); + Content->SetItemDisplayer(Display::Songs); + Content->SetItemDisplayerUserData(&Config.song_list_format); - wPlaylistEditorActiveCol = mPlaylistList; + w = List; } void PlaylistEditor::Resize() { - left_col_width = COLS/3-1; - right_col_startx = left_col_width+1; - right_col_width = COLS-left_col_width-1; + LeftColumnWidth = COLS/3-1; + RightColumnStartX = LeftColumnWidth+1; + RightColumnWidth = COLS-LeftColumnWidth-1; - mPlaylistList->Resize(left_col_width, main_height); - mPlaylistEditor->Resize(right_col_width, main_height); + List->Resize(LeftColumnWidth, main_height); + Content->Resize(RightColumnWidth, main_height); - mPlaylistEditor->MoveTo(right_col_startx, main_start_y); + Content->MoveTo(RightColumnStartX, main_start_y); +} + +std::string PlaylistEditor::Title() +{ + return "Playlist editor"; } void PlaylistEditor::Refresh() { - mPlaylistList->Display(); - mvvline(main_start_y, right_col_startx-1, 0, main_height); - mPlaylistEditor->Display(); + List->Display(); + mvvline(main_start_y, RightColumnStartX-1, 0, main_height); + Content->Display(); } void PlaylistEditor::SwitchTo() @@ -101,39 +105,39 @@ void PlaylistEditor::SwitchTo() redraw_header = 1; PlaylistEditor::Refresh(); - wCurrent = wPlaylistEditorActiveCol; + wCurrent = w; current_screen = csPlaylistEditor; - UpdateSongList(mPlaylistEditor); + UpdateSongList(Content); } } void PlaylistEditor::Update() { - if (mPlaylistList->Empty()) + if (List->Empty()) { - mPlaylistEditor->Clear(0); + Content->Clear(0); TagList list; Mpd->GetPlaylists(list); sort(list.begin(), list.end(), CaseInsensitiveSorting()); for (TagList::iterator it = list.begin(); it != list.end(); it++) { utf_to_locale(*it); - mPlaylistList->AddOption(*it); + List->AddOption(*it); } - mPlaylistList->Window::Clear(); - mPlaylistList->Refresh(); + List->Window::Clear(); + List->Refresh(); } - if (!mPlaylistList->Empty() && mPlaylistEditor->Empty()) + if (!List->Empty() && Content->Empty()) { - mPlaylistEditor->Reset(); + Content->Reset(); SongList list; - Mpd->GetPlaylistContent(locale_to_utf_cpy(mPlaylistList->Current()), list); + Mpd->GetPlaylistContent(locale_to_utf_cpy(List->Current()), list); if (!list.empty()) - mPlaylistEditor->SetTitle("Playlist's content (" + IntoStr(list.size()) + " item" + (list.size() == 1 ? ")" : "s)")); + Content->SetTitle("Playlist's content (" + IntoStr(list.size()) + " item" + (list.size() == 1 ? ")" : "s)")); else - mPlaylistEditor->SetTitle("Playlist's content"); + Content->SetTitle("Playlist's content"); bool bold = 0; for (SongList::const_iterator it = list.begin(); it != list.end(); it++) { @@ -145,40 +149,64 @@ void PlaylistEditor::Update() break; } } - mPlaylistEditor->AddOption(**it, bold); + Content->AddOption(**it, bold); bold = 0; } FreeSongList(list); - mPlaylistEditor->Window::Clear(); - mPlaylistEditor->Display(); + Content->Window::Clear(); + Content->Display(); } - if (wCurrent == mPlaylistEditor && mPlaylistEditor->Empty()) + if (wCurrent == Content && Content->Empty()) { - mPlaylistEditor->HighlightColor(Config.main_highlight_color); - mPlaylistList->HighlightColor(Config.active_column_color); - wCurrent = wPlaylistEditorActiveCol = mPlaylistList; + Content->HighlightColor(Config.main_highlight_color); + List->HighlightColor(Config.active_column_color); + wCurrent = w = List; } - if (mPlaylistEditor->Empty()) + if (Content->Empty()) + { + Content->WriteXY(0, 0, 0, "Playlist is empty."); + Content->Refresh(); + } +} + +void PlaylistEditor::NextColumn() +{ + if (w == List) { - mPlaylistEditor->WriteXY(0, 0, 0, "Playlist is empty."); - mPlaylistEditor->Refresh(); + CLEAR_FIND_HISTORY; + List->HighlightColor(Config.main_highlight_color); + w->Refresh(); + wCurrent = w = Content; + Content->HighlightColor(Config.active_column_color); + } +} + +void PlaylistEditor::PrevColumn() +{ + if (w == Content) + { + CLEAR_FIND_HISTORY; + Content->HighlightColor(Config.main_highlight_color); + w->Refresh(); + wCurrent = w = List; + List->HighlightColor(Config.active_column_color); } } -void PlaylistEditor::EnterPressed(bool add_n_play) +void PlaylistEditor::AddToPlaylist(bool add_n_play) { SongList list; - if (wCurrent == mPlaylistList && !mPlaylistList->Empty()) + if (wCurrent == List && !List->Empty()) { - Mpd->GetPlaylistContent(locale_to_utf_cpy(mPlaylistList->Current()), list); + Mpd->GetPlaylistContent(locale_to_utf_cpy(List->Current()), list); for (SongList::const_iterator it = list.begin(); it != list.end(); it++) Mpd->QueueAddSong(**it); if (Mpd->CommitQueue()) { - ShowMessage("Loading playlist %s...", mPlaylistList->Current().c_str()); + ShowMessage("Loading playlist %s...", List->Current().c_str()); Song &s = myPlaylist->Main()->at(myPlaylist->Main()->Size()-list.size()); if (s.GetHash() == list[0]->GetHash()) { @@ -189,14 +217,14 @@ void PlaylistEditor::EnterPressed(bool add_n_play) ShowMessage("%s", message_part_of_songs_added); } } - else if (wCurrent == mPlaylistEditor) + else if (wCurrent == Content) { - if (!mPlaylistEditor->Empty()) + if (!Content->Empty()) { block_item_list_update = 1; - if (Config.ncmpc_like_songs_adding && mPlaylistEditor->isBold()) + if (Config.ncmpc_like_songs_adding && Content->isBold()) { - long long hash = mPlaylistEditor->Current().GetHash(); + long long hash = Content->Current().GetHash(); if (add_n_play) { for (size_t i = 0; i < myPlaylist->Main()->Size(); i++) @@ -221,19 +249,19 @@ void PlaylistEditor::EnterPressed(bool add_n_play) } } Mpd->CommitQueue(); - mPlaylistEditor->BoldOption(mPlaylistEditor->Choice(), 0); + Content->BoldOption(Content->Choice(), 0); } } else { - Song &s = mPlaylistEditor->at(mPlaylistEditor->Choice()); + Song &s = Content->at(Content->Choice()); int id = Mpd->AddSong(s); if (id >= 0) { ShowMessage("Added to playlist: %s", s.toString(Config.song_status_format).c_str()); if (add_n_play) Mpd->PlayID(id); - mPlaylistEditor->BoldOption(mPlaylistEditor->Choice(), 1); + Content->BoldOption(Content->Choice(), 1); } } } diff --git a/src/playlist_editor.h b/src/playlist_editor.h index d493ab6d..ef489768 100644 --- a/src/playlist_editor.h +++ b/src/playlist_editor.h @@ -23,22 +23,36 @@ #include "ncmpcpp.h" -namespace PlaylistEditor +class PlaylistEditor : public Screen<Window> { - void Init(); - void Resize(); - void Refresh(); - void SwitchTo(); - void Update(); + public: + virtual void Init(); + virtual void SwitchTo(); + virtual void Resize(); + + virtual std::string Title(); + + virtual void Refresh(); + virtual void Update(); + + virtual void EnterPressed() { AddToPlaylist(1); } + virtual void SpacePressed() { AddToPlaylist(0); } + + void NextColumn(); + void PrevColumn(); + + Menu<std::string> *List; + Menu<MPD::Song> *Content; - void EnterPressed(bool = 1); - inline void SpacePressed(); -} + protected: + void AddToPlaylist(bool); + + static size_t LeftColumnWidth; + static size_t RightColumnStartX; + static size_t RightColumnWidth; +}; -void PlaylistEditor::SpacePressed() -{ - EnterPressed(0); -} +extern PlaylistEditor *myPlaylistEditor; #endif diff --git a/src/status_checker.cpp b/src/status_checker.cpp index 8d9fe28c..b3501f30 100644 --- a/src/status_checker.cpp +++ b/src/status_checker.cpp @@ -27,6 +27,7 @@ #include "helpers.h" #include "media_library.h" #include "playlist.h" +#include "playlist_editor.h" #include "search_engine.h" #include "settings.h" #include "status_checker.h" @@ -237,7 +238,7 @@ void NcmpcppStatusChanged(Connection *Mpd, StatusChanges changed, void *) } else if (current_screen == csPlaylistEditor) { - UpdateSongList(mPlaylistEditor); + UpdateSongList(myPlaylistEditor->Content); } } } @@ -249,7 +250,7 @@ void NcmpcppStatusChanged(Connection *Mpd, StatusChanges changed, void *) mEditorDirs->Clear(0); # endif // HAVE_TAGLIB_H myLibrary->Artists->Clear(0); - mPlaylistEditor->Clear(0); + myPlaylistEditor->Content->Clear(0); } if (changed.PlayerState) { diff --git a/src/tag_editor.cpp b/src/tag_editor.cpp index 3660d4b7..e5615de2 100644 --- a/src/tag_editor.cpp +++ b/src/tag_editor.cpp @@ -187,7 +187,7 @@ void TinyTagEditor::EnterPressed(Song &s) } else if (current_screen == csPlaylistEditor) { - PlaylistEditor::Refresh(); + myPlaylistEditor->Refresh(); } else if (current_screen == csTagEditor) { |