summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/global.h6
-rw-r--r--src/info.cpp12
-rw-r--r--src/lyrics.cpp6
-rw-r--r--src/ncmpcpp.cpp188
-rw-r--r--src/playlist_editor.cpp160
-rw-r--r--src/playlist_editor.h40
-rw-r--r--src/status_checker.cpp5
-rw-r--r--src/tag_editor.cpp2
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)
{