add playlist mode switcher (and some clean-ups ofc)

This commit is contained in:
unK
2008-09-04 04:34:30 +02:00
parent c2225172fb
commit 3b562d5a37
9 changed files with 49 additions and 28 deletions

View File

@@ -115,6 +115,8 @@
#
#key_toggle_auto_center = 'U'
#
#key_toggle_playlist_display_mode = 'p'
#
#key_go_to_containing_directory = 'G'
#
#key_start_searching = 'y'

View File

@@ -863,9 +863,9 @@ void Search(SongList &result, Song &s)
if (found && !s.GetAlbum().empty())
found = copy.GetAlbum().find(s.GetAlbum()) != string::npos;
if (found && !s.GetYear().empty())
found = atoi(copy.GetYear().c_str()) == atoi(s.GetYear().c_str()) && atoi(s.GetYear().c_str());
found = StrToInt(copy.GetYear()) == StrToInt(s.GetYear()) && StrToInt(s.GetYear());
if (found && !s.GetTrack().empty())
found = atoi(copy.GetTrack().c_str()) == atoi(s.GetTrack().c_str()) && atoi(s.GetTrack().c_str());
found = StrToInt(copy.GetTrack()) == StrToInt(s.GetTrack()) && StrToInt(s.GetTrack());
if (found && !s.GetGenre().empty())
found = copy.GetGenre().find(s.GetGenre()) != string::npos;
if (found && !s.GetComment().empty())
@@ -882,9 +882,9 @@ void Search(SongList &result, Song &s)
if (found && !s.GetAlbum().empty())
found = copy.GetAlbum() == s.GetAlbum();
if (found && !s.GetYear().empty())
found = atoi(copy.GetYear().c_str()) == atoi(s.GetYear().c_str()) && atoi(s.GetYear().c_str());
found = StrToInt(copy.GetYear()) == StrToInt(s.GetYear()) && StrToInt(s.GetYear());
if (found && !s.GetTrack().empty())
found = atoi(copy.GetTrack().c_str()) == atoi(s.GetTrack().c_str()) && atoi(s.GetTrack().c_str());
found = StrToInt(copy.GetTrack()) == StrToInt(s.GetTrack()) && StrToInt(s.GetTrack());
if (found && !s.GetGenre().empty())
found = copy.GetGenre() == s.GetGenre();
if (found && !s.GetComment().empty())

View File

@@ -415,6 +415,9 @@ void Menu<T>::Refresh(bool redraw_whole_window)
if (itsHighlight >= itsOptions.size()-1)
Highlight(itsOptions.size());
while (itsHighlight-itsBeginning > itsHeight-1)
itsBeginning++;
if (redraw_whole_window)
{
Window::Clear();

View File

@@ -288,6 +288,7 @@ int main(int argc, char *argv[])
sHelp->Add(DisplayKeys(Key.Add) + "Add url/file/directory to playlist\n");
sHelp->Add(DisplayKeys(Key.SavePlaylist) + "Save playlist\n");
sHelp->Add(DisplayKeys(Key.GoToNowPlaying) + "Go to currently playing position\n");
sHelp->Add(DisplayKeys(Key.TogglePlaylistDisplayMode) + "Toggle playlist display mode\n");
sHelp->Add(DisplayKeys(Key.ToggleAutoCenter) + "Toggle auto center mode\n\n\n");
sHelp->Add(" [.b]Keys - Browse screen\n -----------------------------------------[/b]\n");
@@ -342,18 +343,18 @@ int main(int argc, char *argv[])
int input;
timer = time(NULL);
sHelp->Timeout(ncmpcpp_window_timeout);
mPlaylist->Timeout(ncmpcpp_window_timeout);
mBrowser->Timeout(ncmpcpp_window_timeout);
mTagEditor->Timeout(ncmpcpp_window_timeout);
mSearcher->Timeout(ncmpcpp_window_timeout);
mLibArtists->Timeout(ncmpcpp_window_timeout);
mLibAlbums->Timeout(ncmpcpp_window_timeout);
mLibSongs->Timeout(ncmpcpp_window_timeout);
sLyrics->Timeout(ncmpcpp_window_timeout);
wFooter->Timeout(ncmpcpp_window_timeout);
mPlaylistList->Timeout(ncmpcpp_window_timeout);
mPlaylistEditor->Timeout(ncmpcpp_window_timeout);
sHelp->SetTimeout(ncmpcpp_window_timeout);
mPlaylist->SetTimeout(ncmpcpp_window_timeout);
mBrowser->SetTimeout(ncmpcpp_window_timeout);
mTagEditor->SetTimeout(ncmpcpp_window_timeout);
mSearcher->SetTimeout(ncmpcpp_window_timeout);
mLibArtists->SetTimeout(ncmpcpp_window_timeout);
mLibAlbums->SetTimeout(ncmpcpp_window_timeout);
mLibSongs->SetTimeout(ncmpcpp_window_timeout);
sLyrics->SetTimeout(ncmpcpp_window_timeout);
wFooter->SetTimeout(ncmpcpp_window_timeout);
mPlaylistList->SetTimeout(ncmpcpp_window_timeout);
mPlaylistEditor->SetTimeout(ncmpcpp_window_timeout);
mPlaylist->HighlightColor(Config.main_highlight_color);
mBrowser->HighlightColor(Config.main_highlight_color);
@@ -721,14 +722,12 @@ int main(int argc, char *argv[])
main_height++;
sHelp->Resize(COLS, main_height);
sHelp->Timeout(ncmpcpp_window_timeout);
mPlaylist->Resize(COLS, main_height);
mPlaylist->SetTitle(Config.columns_in_playlist ? DisplayColumns(Config.song_columns_list_format) : "");
mBrowser->Resize(COLS, main_height);
mTagEditor->Resize(COLS, main_height);
mSearcher->Resize(COLS, main_height);
sLyrics->Resize(COLS, main_height);
sLyrics->Timeout(ncmpcpp_window_timeout);
lib_artist_width = COLS/3-1;
lib_albums_start_x = lib_artist_width+1;
@@ -1412,7 +1411,7 @@ int main(int argc, char *argv[])
{
block_playlist_update = 1;
dont_change_now_playing = 1;
mPlaylist->Timeout(50);
mPlaylist->SetTimeout(50);
while (!mPlaylist->Empty() && Keypressed(input, Key.Delete))
{
TraceMpdStatus();
@@ -1421,7 +1420,7 @@ int main(int argc, char *argv[])
mPlaylist->Refresh();
mPlaylist->ReadKey(input);
}
mPlaylist->Timeout(ncmpcpp_window_timeout);
mPlaylist->SetTimeout(ncmpcpp_window_timeout);
dont_change_now_playing = 0;
}
Mpd->CommitQueue();
@@ -1468,7 +1467,7 @@ int main(int argc, char *argv[])
}
else
{
mPlaylistEditor->Timeout(50);
mPlaylistEditor->SetTimeout(50);
while (!mPlaylistEditor->Empty() && Keypressed(input, Key.Delete))
{
TraceMpdStatus();
@@ -1477,7 +1476,7 @@ int main(int argc, char *argv[])
mPlaylistEditor->Refresh();
mPlaylistEditor->ReadKey(input);
}
mPlaylistEditor->Timeout(ncmpcpp_window_timeout);
mPlaylistEditor->SetTimeout(ncmpcpp_window_timeout);
}
Mpd->CommitQueue();
}
@@ -1711,6 +1710,15 @@ int main(int argc, char *argv[])
block_progressbar_update = 0;
UNLOCK_STATUSBAR;
}
else if (Keypressed(input, Key.TogglePlaylistDisplayMode) && wCurrent == mPlaylist)
{
Config.columns_in_playlist = !Config.columns_in_playlist;
ShowMessage("Playlist display mode: " + string(Config.columns_in_playlist ? "Columns" : "Classic"));
mPlaylist->SetItemDisplayer(Config.columns_in_playlist ? DisplaySongInColumns : DisplaySong);
mPlaylist->SetItemDisplayerUserData(Config.columns_in_playlist ? &Config.song_columns_list_format : &Config.song_list_format);
mPlaylist->SetTitle(Config.columns_in_playlist ? DisplayColumns(Config.song_columns_list_format) : "");
redraw_me = 1;
}
else if (Keypressed(input, Key.ToggleAutoCenter))
{
Config.autocenter_mode = !Config.autocenter_mode;
@@ -1970,7 +1978,7 @@ int main(int argc, char *argv[])
const int dialog_width = COLS*0.8;
const int dialog_height = LINES*0.6;
Menu<string> *mDialog = new Menu<string>((COLS-dialog_width)/2, (LINES-dialog_height)/2, dialog_width, dialog_height, "Add selected items to...", clYellow, brGreen);
mDialog->Timeout(ncmpcpp_window_timeout);
mDialog->SetTimeout(ncmpcpp_window_timeout);
mDialog->AddOption("Current MPD playlist");
mDialog->AddOption("Create new playlist (m3u file)");
@@ -2250,7 +2258,6 @@ int main(int argc, char *argv[])
sLyrics->WriteXY(0, 0, "Fetching lyrics...");
sLyrics->Refresh();
sLyrics->Add(GetLyrics(s->GetArtist(), s->GetTitle()));
sLyrics->Timeout(ncmpcpp_window_timeout);
}
}
}

View File

@@ -106,6 +106,7 @@ void Scrollpad::recreate_win()
{
delwin(itsWindow);
itsWindow = newpad(itsRealHeight, itsWidth);
SetTimeout(itsWindowTimeout);
SetColor(itsBaseColor, itsBgColor);
Write(itsContent.c_str());
}

View File

@@ -80,6 +80,7 @@ void DefaultKeys(ncmpcpp_keys &keys)
keys.GoToContainingDir[0] = 'G';
keys.StartSearching[0] = 'y';
keys.ToggleAutoCenter[0] = 'U';
keys.TogglePlaylistDisplayMode[0] = 'p';
keys.GoToParentDir[0] = 263;
keys.Quit[0] = 'q';
@@ -136,6 +137,7 @@ void DefaultKeys(ncmpcpp_keys &keys)
keys.GoToContainingDir[1] = null_key;
keys.StartSearching[1] = null_key;
keys.ToggleAutoCenter[1] = null_key;
keys.TogglePlaylistDisplayMode[1] = null_key;
keys.GoToParentDir[1] = 127;
keys.Quit[1] = 'Q';
}
@@ -386,6 +388,8 @@ void ReadKeys(ncmpcpp_keys &keys)
GetKeys(*it, keys.GoToNowPlaying);
else if (it->find("key_toggle_auto_center ") != string::npos)
GetKeys(*it, keys.ToggleAutoCenter);
else if (it->find("key_toggle_playlist_display_mode ") != string::npos)
GetKeys(*it, keys.TogglePlaylistDisplayMode);
else if (it->find("key_go_to_containing_directory ") != string::npos)
GetKeys(*it, keys.GoToContainingDir);
else if (it->find("key_start_searching ") != string::npos)

View File

@@ -82,6 +82,7 @@ struct ncmpcpp_keys
int GoToContainingDir[2];
int StartSearching[2];
int ToggleAutoCenter[2];
int TogglePlaylistDisplayMode[2];
int GoToParentDir[2];
int Quit[2];
};

View File

@@ -20,7 +20,7 @@
#include "window.h"
Window::Window(int startx, int starty, int width, int height, string title, Color color, Border border) : itsWindow(0), itsWinBorder(0), itsGetStringHelper(0), itsStartX(startx), itsStartY(starty), itsWidth(width), itsHeight(height), BBEnabled(1), AutoRefreshEnabled(1), itsTitle(title), itsColor(color), itsBaseColor(color), itsBgColor(clDefault), itsBaseBgColor(clDefault), itsBorder(border)
Window::Window(int startx, int starty, int width, int height, string title, Color color, Border border) : itsWindow(0), itsWinBorder(0), itsGetStringHelper(0), itsStartX(startx), itsStartY(starty), itsWidth(width), itsHeight(height), itsWindowTimeout(-1), BBEnabled(1), AutoRefreshEnabled(1), itsTitle(title), itsColor(color), itsBaseColor(color), itsBgColor(clDefault), itsBaseBgColor(clDefault), itsBorder(border)
{
if (itsStartX < 0) itsStartX = 0;
if (itsStartY < 0) itsStartY = 0;
@@ -153,7 +153,8 @@ void Window::recreate_win()
{
delwin(itsWindow);
itsWindow = newwin(itsHeight, itsWidth, itsStartY, itsStartX);
SetColor(itsColor);
SetTimeout(itsWindowTimeout);
SetColor(itsColor, itsBgColor);
}
bool Window::reallocate_win(int newx, int newy)
@@ -265,8 +266,9 @@ void Window::Delay(bool delay) const
nodelay(itsWindow, !delay);
}
void Window::Timeout(int timeout) const
void Window::SetTimeout(int timeout)
{
itsWindowTimeout = timeout;
wtimeout(itsWindow, timeout);
}

View File

@@ -84,7 +84,7 @@ class Window
virtual void Reverse(bool) const;
virtual void AltCharset(bool) const;
virtual void Delay(bool) const;
virtual void Timeout(int) const;
virtual void SetTimeout(int);
virtual void AutoRefresh(bool val) { AutoRefreshEnabled = val; }
virtual void ReadKey(int &) const;
virtual void ReadKey() const;
@@ -142,6 +142,7 @@ class Window
int itsStartY;
int itsWidth;
int itsHeight;
int itsWindowTimeout;
bool BBEnabled;
bool AutoRefreshEnabled;
string itsTitle;