change namespace MediaLibrary into class
This commit is contained in:
@@ -39,10 +39,10 @@ namespace Global
|
|||||||
// extern Menu<MPD::Item> *myBrowser->Main();
|
// extern Menu<MPD::Item> *myBrowser->Main();
|
||||||
// extern Menu< std::pair<Buffer *, MPD::Song *> > *mSearcher;
|
// extern Menu< std::pair<Buffer *, MPD::Song *> > *mSearcher;
|
||||||
|
|
||||||
extern Window *wLibActiveCol;
|
// extern Window *wLibActiveCol;
|
||||||
extern Menu<std::string> *mLibArtists;
|
// extern Menu<std::string> *myLibrary->Artists;
|
||||||
extern Menu<string_pair> *mLibAlbums;
|
// extern Menu<string_pair> *myLibrary->Albums;
|
||||||
extern Menu<MPD::Song> *mLibSongs;
|
// extern Menu<MPD::Song> *myLibrary->Songs;
|
||||||
|
|
||||||
# ifdef HAVE_TAGLIB_H
|
# ifdef HAVE_TAGLIB_H
|
||||||
extern Window *wTagEditorActiveCol;
|
extern Window *wTagEditorActiveCol;
|
||||||
|
|||||||
14
src/info.cpp
14
src/info.cpp
@@ -81,7 +81,7 @@ void Info::GetSong()
|
|||||||
redraw_header = 1;
|
redraw_header = 1;
|
||||||
if (current_screen == csLibrary)
|
if (current_screen == csLibrary)
|
||||||
{
|
{
|
||||||
MediaLibrary::Refresh();
|
myLibrary->Refresh();
|
||||||
}
|
}
|
||||||
else if (current_screen == csPlaylistEditor)
|
else if (current_screen == csPlaylistEditor)
|
||||||
{
|
{
|
||||||
@@ -98,7 +98,7 @@ void Info::GetSong()
|
|||||||
(wCurrent == myPlaylist->Main() && !myPlaylist->Main()->Empty())
|
(wCurrent == myPlaylist->Main() && !myPlaylist->Main()->Empty())
|
||||||
|| (wCurrent == myBrowser->Main() && myBrowser->Main()->Current().type == MPD::itSong)
|
|| (wCurrent == myBrowser->Main() && myBrowser->Main()->Current().type == MPD::itSong)
|
||||||
|| (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first)
|
|| (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first)
|
||||||
|| (wCurrent == mLibSongs && !mLibSongs->Empty())
|
|| (wCurrent == myLibrary->Songs && !myLibrary->Songs->Empty())
|
||||||
|| (wCurrent == mPlaylistEditor && !mPlaylistEditor->Empty())
|
|| (wCurrent == mPlaylistEditor && !mPlaylistEditor->Empty())
|
||||||
# ifdef HAVE_TAGLIB_H
|
# ifdef HAVE_TAGLIB_H
|
||||||
|| (wCurrent == mEditorTags && !mEditorTags->Empty())
|
|| (wCurrent == mEditorTags && !mEditorTags->Empty())
|
||||||
@@ -119,7 +119,7 @@ void Info::GetSong()
|
|||||||
s = mySearcher->Main()->at(id).second;
|
s = mySearcher->Main()->at(id).second;
|
||||||
break;
|
break;
|
||||||
case csLibrary:
|
case csLibrary:
|
||||||
s = &mLibSongs->at(id);
|
s = &myLibrary->Songs->at(id);
|
||||||
break;
|
break;
|
||||||
case csPlaylistEditor:
|
case csPlaylistEditor:
|
||||||
s = &mPlaylistEditor->at(id);
|
s = &mPlaylistEditor->at(id);
|
||||||
@@ -168,7 +168,7 @@ void Info::GetArtist()
|
|||||||
redraw_header = 1;
|
redraw_header = 1;
|
||||||
if (current_screen == csLibrary)
|
if (current_screen == csLibrary)
|
||||||
{
|
{
|
||||||
MediaLibrary::Refresh();
|
myLibrary->Refresh();
|
||||||
}
|
}
|
||||||
else if (current_screen == csPlaylistEditor)
|
else if (current_screen == csPlaylistEditor)
|
||||||
{
|
{
|
||||||
@@ -185,8 +185,8 @@ void Info::GetArtist()
|
|||||||
(wCurrent == myPlaylist->Main() && !myPlaylist->Main()->Empty())
|
(wCurrent == myPlaylist->Main() && !myPlaylist->Main()->Empty())
|
||||||
|| (wCurrent == myBrowser->Main() && myBrowser->Main()->Current().type == MPD::itSong)
|
|| (wCurrent == myBrowser->Main() && myBrowser->Main()->Current().type == MPD::itSong)
|
||||||
|| (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first)
|
|| (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first)
|
||||||
|| (wCurrent == mLibArtists && !mLibArtists->Empty())
|
|| (wCurrent == myLibrary->Artists && !myLibrary->Artists->Empty())
|
||||||
|| (wCurrent == mLibSongs && !mLibSongs->Empty())
|
|| (wCurrent == myLibrary->Songs && !myLibrary->Songs->Empty())
|
||||||
|| (wCurrent == mPlaylistEditor && !mPlaylistEditor->Empty())
|
|| (wCurrent == mPlaylistEditor && !mPlaylistEditor->Empty())
|
||||||
# ifdef HAVE_TAGLIB_H
|
# ifdef HAVE_TAGLIB_H
|
||||||
|| (wCurrent == mEditorTags && !mEditorTags->Empty())
|
|| (wCurrent == mEditorTags && !mEditorTags->Empty())
|
||||||
@@ -213,7 +213,7 @@ void Info::GetArtist()
|
|||||||
*artist = mySearcher->Main()->at(id).second->GetArtist();
|
*artist = mySearcher->Main()->at(id).second->GetArtist();
|
||||||
break;
|
break;
|
||||||
case csLibrary:
|
case csLibrary:
|
||||||
*artist = mLibArtists->at(id);
|
*artist = myLibrary->Artists->at(id);
|
||||||
break;
|
break;
|
||||||
case csPlaylistEditor:
|
case csPlaylistEditor:
|
||||||
*artist = mPlaylistEditor->at(id).GetArtist();
|
*artist = mPlaylistEditor->at(id).GetArtist();
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ void Lyrics::Get()
|
|||||||
redraw_header = 1;
|
redraw_header = 1;
|
||||||
if (current_screen == csLibrary)
|
if (current_screen == csLibrary)
|
||||||
{
|
{
|
||||||
MediaLibrary::Refresh();
|
myLibrary->Refresh();
|
||||||
}
|
}
|
||||||
else if (current_screen == csPlaylistEditor)
|
else if (current_screen == csPlaylistEditor)
|
||||||
{
|
{
|
||||||
@@ -111,7 +111,7 @@ void Lyrics::Get()
|
|||||||
|| (wCurrent == myPlaylist->Main() && !myPlaylist->Main()->Empty())
|
|| (wCurrent == myPlaylist->Main() && !myPlaylist->Main()->Empty())
|
||||||
|| (wCurrent == myBrowser->Main() && myBrowser->Main()->Current().type == MPD::itSong)
|
|| (wCurrent == myBrowser->Main() && myBrowser->Main()->Current().type == MPD::itSong)
|
||||||
|| (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first)
|
|| (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first)
|
||||||
|| (wCurrent == mLibSongs && !mLibSongs->Empty())
|
|| (wCurrent == myLibrary->Songs && !myLibrary->Songs->Empty())
|
||||||
|| (wCurrent == mPlaylistEditor && !mPlaylistEditor->Empty())
|
|| (wCurrent == mPlaylistEditor && !mPlaylistEditor->Empty())
|
||||||
# ifdef HAVE_TAGLIB_H
|
# ifdef HAVE_TAGLIB_H
|
||||||
|| (wCurrent == mEditorTags && !mEditorTags->Empty())
|
|| (wCurrent == mEditorTags && !mEditorTags->Empty())
|
||||||
@@ -151,7 +151,7 @@ void Lyrics::Get()
|
|||||||
s = mySearcher->Main()->at(id).second;
|
s = mySearcher->Main()->at(id).second;
|
||||||
break;
|
break;
|
||||||
case csLibrary:
|
case csLibrary:
|
||||||
s = &mLibSongs->at(id);
|
s = &myLibrary->Songs->at(id);
|
||||||
break;
|
break;
|
||||||
case csPlaylistEditor:
|
case csPlaylistEditor:
|
||||||
s = &mPlaylistEditor->at(id);
|
s = &mPlaylistEditor->at(id);
|
||||||
|
|||||||
@@ -34,76 +34,70 @@ using namespace MPD;
|
|||||||
using namespace Global;
|
using namespace Global;
|
||||||
using std::string;
|
using std::string;
|
||||||
|
|
||||||
Window *Global::wLibActiveCol;
|
MediaLibrary *myLibrary = new MediaLibrary;
|
||||||
Menu<string> *Global::mLibArtists;
|
|
||||||
Menu<string_pair> *Global::mLibAlbums;
|
|
||||||
Menu<Song> *Global::mLibSongs;
|
|
||||||
|
|
||||||
namespace MediaLibrary
|
size_t MediaLibrary::itsLeftColWidth;
|
||||||
{
|
size_t MediaLibrary::itsMiddleColWidth;
|
||||||
size_t left_col_width;
|
size_t MediaLibrary::itsMiddleColStartX;
|
||||||
size_t middle_col_width;
|
size_t MediaLibrary::itsRightColWidth;
|
||||||
size_t middle_col_startx;
|
size_t MediaLibrary::itsRightColStartX;
|
||||||
size_t right_col_width;
|
|
||||||
size_t right_col_startx;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MediaLibrary::Init()
|
void MediaLibrary::Init()
|
||||||
{
|
{
|
||||||
left_col_width = COLS/3-1;
|
itsLeftColWidth = COLS/3-1;
|
||||||
middle_col_width = COLS/3;
|
itsMiddleColWidth = COLS/3;
|
||||||
middle_col_startx = left_col_width+1;
|
itsMiddleColStartX = itsLeftColWidth+1;
|
||||||
right_col_width = COLS-COLS/3*2-1;
|
itsRightColWidth = COLS-COLS/3*2-1;
|
||||||
right_col_startx = left_col_width+middle_col_width+2;
|
itsRightColStartX = itsLeftColWidth+itsMiddleColWidth+2;
|
||||||
|
|
||||||
mLibArtists = new Menu<string>(0, main_start_y, left_col_width, main_height, IntoStr(Config.media_lib_primary_tag) + "s", Config.main_color, brNone);
|
Artists = new Menu<string>(0, main_start_y, itsLeftColWidth, main_height, IntoStr(Config.media_lib_primary_tag) + "s", Config.main_color, brNone);
|
||||||
mLibArtists->HighlightColor(Config.active_column_color);
|
Artists->HighlightColor(Config.active_column_color);
|
||||||
mLibArtists->SetTimeout(ncmpcpp_window_timeout);
|
Artists->SetTimeout(ncmpcpp_window_timeout);
|
||||||
mLibArtists->SetItemDisplayer(Display::Generic);
|
Artists->SetItemDisplayer(Display::Generic);
|
||||||
|
|
||||||
mLibAlbums = new Menu<string_pair>(middle_col_startx, main_start_y, middle_col_width, main_height, "Albums", Config.main_color, brNone);
|
Albums = new Menu<string_pair>(itsMiddleColStartX, main_start_y, itsMiddleColWidth, main_height, "Albums", Config.main_color, brNone);
|
||||||
mLibAlbums->HighlightColor(Config.main_highlight_color);
|
Albums->HighlightColor(Config.main_highlight_color);
|
||||||
mLibAlbums->SetTimeout(ncmpcpp_window_timeout);
|
Albums->SetTimeout(ncmpcpp_window_timeout);
|
||||||
mLibAlbums->SetItemDisplayer(Display::StringPairs);
|
Albums->SetItemDisplayer(Display::StringPairs);
|
||||||
|
|
||||||
mLibSongs = new Menu<Song>(right_col_startx, main_start_y, right_col_width, main_height, "Songs", Config.main_color, brNone);
|
Songs = new Menu<Song>(itsRightColStartX, main_start_y, itsRightColWidth, main_height, "Songs", Config.main_color, brNone);
|
||||||
mLibSongs->HighlightColor(Config.main_highlight_color);
|
Songs->HighlightColor(Config.main_highlight_color);
|
||||||
mLibSongs->SetTimeout(ncmpcpp_window_timeout);
|
Songs->SetTimeout(ncmpcpp_window_timeout);
|
||||||
mLibSongs->SetSelectPrefix(&Config.selected_item_prefix);
|
Songs->SetSelectPrefix(&Config.selected_item_prefix);
|
||||||
mLibSongs->SetSelectSuffix(&Config.selected_item_suffix);
|
Songs->SetSelectSuffix(&Config.selected_item_suffix);
|
||||||
mLibSongs->SetItemDisplayer(Display::Songs);
|
Songs->SetItemDisplayer(Display::Songs);
|
||||||
mLibSongs->SetItemDisplayerUserData(&Config.song_library_format);
|
Songs->SetItemDisplayerUserData(&Config.song_library_format);
|
||||||
|
|
||||||
wLibActiveCol = mLibArtists;
|
w = Artists;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MediaLibrary::Resize()
|
void MediaLibrary::Resize()
|
||||||
{
|
{
|
||||||
left_col_width = COLS/3-1;
|
itsLeftColWidth = COLS/3-1;
|
||||||
middle_col_startx = left_col_width+1;
|
itsMiddleColStartX = itsLeftColWidth+1;
|
||||||
middle_col_width = COLS/3;
|
itsMiddleColWidth = COLS/3;
|
||||||
right_col_startx = left_col_width+middle_col_width+2;
|
itsRightColStartX = itsLeftColWidth+itsMiddleColWidth+2;
|
||||||
right_col_width = COLS-COLS/3*2-1;
|
itsRightColWidth = COLS-COLS/3*2-1;
|
||||||
|
|
||||||
mLibArtists->Resize(left_col_width, main_height);
|
Artists->Resize(itsLeftColWidth, main_height);
|
||||||
mLibAlbums->Resize(middle_col_width, main_height);
|
Albums->Resize(itsMiddleColWidth, main_height);
|
||||||
mLibSongs->Resize(right_col_width, main_height);
|
Songs->Resize(itsRightColWidth, main_height);
|
||||||
|
|
||||||
mLibAlbums->MoveTo(middle_col_startx, main_start_y);
|
Albums->MoveTo(itsMiddleColStartX, main_start_y);
|
||||||
mLibSongs->MoveTo(right_col_startx, main_start_y);
|
Songs->MoveTo(itsRightColStartX, main_start_y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MediaLibrary::Refresh()
|
void MediaLibrary::Refresh()
|
||||||
{
|
{
|
||||||
mLibArtists->Display();
|
Artists->Display();
|
||||||
mvvline(main_start_y, middle_col_startx-1, 0, main_height);
|
mvvline(main_start_y, itsMiddleColStartX-1, 0, main_height);
|
||||||
mLibAlbums->Display();
|
Albums->Display();
|
||||||
mvvline(main_start_y, right_col_startx-1, 0, main_height);
|
mvvline(main_start_y, itsRightColStartX-1, 0, main_height);
|
||||||
mLibSongs->Display();
|
Songs->Display();
|
||||||
if (mLibAlbums->Empty())
|
if (Albums->Empty())
|
||||||
{
|
{
|
||||||
mLibAlbums->WriteXY(0, 0, 0, "No albums found.");
|
Albums->WriteXY(0, 0, 0, "No albums found.");
|
||||||
mLibAlbums->Refresh();
|
Albums->Refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,22 +116,27 @@ void MediaLibrary::SwitchTo()
|
|||||||
// redraw_screen = 1;
|
// redraw_screen = 1;
|
||||||
redraw_header = 1;
|
redraw_header = 1;
|
||||||
MediaLibrary::Refresh();
|
MediaLibrary::Refresh();
|
||||||
|
|
||||||
wCurrent = wLibActiveCol;
|
wCurrent = w;
|
||||||
current_screen = csLibrary;
|
current_screen = csLibrary;
|
||||||
|
|
||||||
UpdateSongList(mLibSongs);
|
UpdateSongList(Songs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string MediaLibrary::Title()
|
||||||
|
{
|
||||||
|
return "Media library";
|
||||||
|
}
|
||||||
|
|
||||||
void MediaLibrary::Update()
|
void MediaLibrary::Update()
|
||||||
{
|
{
|
||||||
if (mLibArtists->Empty())
|
if (Artists->Empty())
|
||||||
{
|
{
|
||||||
CLEAR_FIND_HISTORY;
|
CLEAR_FIND_HISTORY;
|
||||||
TagList list;
|
TagList list;
|
||||||
mLibAlbums->Clear(0);
|
Albums->Clear(0);
|
||||||
mLibSongs->Clear(0);
|
Songs->Clear(0);
|
||||||
Mpd->GetList(list, Config.media_lib_primary_tag);
|
Mpd->GetList(list, Config.media_lib_primary_tag);
|
||||||
sort(list.begin(), list.end(), CaseInsensitiveSorting());
|
sort(list.begin(), list.end(), CaseInsensitiveSorting());
|
||||||
for (TagList::iterator it = list.begin(); it != list.end(); it++)
|
for (TagList::iterator it = list.begin(); it != list.end(); it++)
|
||||||
@@ -145,25 +144,25 @@ void MediaLibrary::Update()
|
|||||||
if (!it->empty())
|
if (!it->empty())
|
||||||
{
|
{
|
||||||
utf_to_locale(*it);
|
utf_to_locale(*it);
|
||||||
mLibArtists->AddOption(*it);
|
Artists->AddOption(*it);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mLibArtists->Window::Clear();
|
Artists->Window::Clear();
|
||||||
mLibArtists->Refresh();
|
Artists->Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mLibArtists->Empty() && mLibAlbums->Empty() && mLibSongs->Empty())
|
if (!Artists->Empty() && Albums->Empty() && Songs->Empty())
|
||||||
{
|
{
|
||||||
mLibAlbums->Reset();
|
Albums->Reset();
|
||||||
TagList list;
|
TagList list;
|
||||||
std::map<string, string, CaseInsensitiveSorting> maplist;
|
std::map<string, string, CaseInsensitiveSorting> maplist;
|
||||||
locale_to_utf(mLibArtists->Current());
|
locale_to_utf(Artists->Current());
|
||||||
if (Config.media_lib_primary_tag == MPD_TAG_ITEM_ARTIST)
|
if (Config.media_lib_primary_tag == MPD_TAG_ITEM_ARTIST)
|
||||||
Mpd->GetAlbums(mLibArtists->Current(), list);
|
Mpd->GetAlbums(Artists->Current(), list);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Mpd->StartSearch(1);
|
Mpd->StartSearch(1);
|
||||||
Mpd->AddSearch(Config.media_lib_primary_tag, mLibArtists->Current());
|
Mpd->AddSearch(Config.media_lib_primary_tag, Artists->Current());
|
||||||
Mpd->StartFieldSearch(MPD_TAG_ITEM_ALBUM);
|
Mpd->StartFieldSearch(MPD_TAG_ITEM_ALBUM);
|
||||||
Mpd->CommitSearch(list);
|
Mpd->CommitSearch(list);
|
||||||
}
|
}
|
||||||
@@ -173,11 +172,11 @@ void MediaLibrary::Update()
|
|||||||
{
|
{
|
||||||
SongList noalbum_list;
|
SongList noalbum_list;
|
||||||
Mpd->StartSearch(1);
|
Mpd->StartSearch(1);
|
||||||
Mpd->AddSearch(Config.media_lib_primary_tag, mLibArtists->Current());
|
Mpd->AddSearch(Config.media_lib_primary_tag, Artists->Current());
|
||||||
Mpd->AddSearch(MPD_TAG_ITEM_ALBUM, "");
|
Mpd->AddSearch(MPD_TAG_ITEM_ALBUM, "");
|
||||||
Mpd->CommitSearch(noalbum_list);
|
Mpd->CommitSearch(noalbum_list);
|
||||||
if (!noalbum_list.empty())
|
if (!noalbum_list.empty())
|
||||||
mLibAlbums->AddOption(std::make_pair("<no album>", ""));
|
Albums->AddOption(std::make_pair("<no album>", ""));
|
||||||
FreeSongList(noalbum_list);
|
FreeSongList(noalbum_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -185,7 +184,7 @@ void MediaLibrary::Update()
|
|||||||
{
|
{
|
||||||
SongList l;
|
SongList l;
|
||||||
Mpd->StartSearch(1);
|
Mpd->StartSearch(1);
|
||||||
Mpd->AddSearch(Config.media_lib_primary_tag, mLibArtists->Current());
|
Mpd->AddSearch(Config.media_lib_primary_tag, Artists->Current());
|
||||||
Mpd->AddSearch(MPD_TAG_ITEM_ALBUM, *it);
|
Mpd->AddSearch(MPD_TAG_ITEM_ALBUM, *it);
|
||||||
Mpd->CommitSearch(l);
|
Mpd->CommitSearch(l);
|
||||||
if (!l.empty() && !l[0]->GetAlbum().empty())
|
if (!l.empty() && !l[0]->GetAlbum().empty())
|
||||||
@@ -196,35 +195,35 @@ void MediaLibrary::Update()
|
|||||||
}
|
}
|
||||||
FreeSongList(l);
|
FreeSongList(l);
|
||||||
}
|
}
|
||||||
utf_to_locale(mLibArtists->Current());
|
utf_to_locale(Artists->Current());
|
||||||
for (std::map<string, string>::const_iterator it = maplist.begin(); it != maplist.end(); it++)
|
for (std::map<string, string>::const_iterator it = maplist.begin(); it != maplist.end(); it++)
|
||||||
mLibAlbums->AddOption(make_pair(it->first, it->second));
|
Albums->AddOption(make_pair(it->first, it->second));
|
||||||
mLibAlbums->Window::Clear();
|
Albums->Window::Clear();
|
||||||
mLibAlbums->Refresh();
|
Albums->Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mLibArtists->Empty() && wCurrent == mLibAlbums && mLibAlbums->Empty())
|
if (!Artists->Empty() && wCurrent == Albums && Albums->Empty())
|
||||||
{
|
{
|
||||||
mLibAlbums->HighlightColor(Config.main_highlight_color);
|
Albums->HighlightColor(Config.main_highlight_color);
|
||||||
mLibArtists->HighlightColor(Config.active_column_color);
|
Artists->HighlightColor(Config.active_column_color);
|
||||||
wCurrent = wLibActiveCol = mLibArtists;
|
wCurrent = w = Artists;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mLibArtists->Empty() && mLibSongs->Empty())
|
if (!Artists->Empty() && Songs->Empty())
|
||||||
{
|
{
|
||||||
mLibSongs->Reset();
|
Songs->Reset();
|
||||||
SongList list;
|
SongList list;
|
||||||
|
|
||||||
mLibSongs->Clear(0);
|
Songs->Clear(0);
|
||||||
Mpd->StartSearch(1);
|
Mpd->StartSearch(1);
|
||||||
Mpd->AddSearch(Config.media_lib_primary_tag, locale_to_utf_cpy(mLibArtists->Current()));
|
Mpd->AddSearch(Config.media_lib_primary_tag, locale_to_utf_cpy(Artists->Current()));
|
||||||
if (mLibAlbums->Empty()) // left for compatibility with <mpd-0.14
|
if (Albums->Empty()) // left for compatibility with <mpd-0.14
|
||||||
{
|
{
|
||||||
mLibAlbums->WriteXY(0, 0, 0, "No albums found.");
|
Albums->WriteXY(0, 0, 0, "No albums found.");
|
||||||
mLibAlbums->Refresh();
|
Albums->Refresh();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
Mpd->AddSearch(MPD_TAG_ITEM_ALBUM, locale_to_utf_cpy(mLibAlbums->Current().second));
|
Mpd->AddSearch(MPD_TAG_ITEM_ALBUM, locale_to_utf_cpy(Albums->Current().second));
|
||||||
Mpd->CommitSearch(list);
|
Mpd->CommitSearch(list);
|
||||||
|
|
||||||
sort(list.begin(), list.end(), SortSongsByTrack);
|
sort(list.begin(), list.end(), SortSongsByTrack);
|
||||||
@@ -240,23 +239,67 @@ void MediaLibrary::Update()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mLibSongs->AddOption(**it, bold);
|
Songs->AddOption(**it, bold);
|
||||||
bold = 0;
|
bold = 0;
|
||||||
}
|
}
|
||||||
FreeSongList(list);
|
FreeSongList(list);
|
||||||
mLibSongs->Window::Clear();
|
Songs->Window::Clear();
|
||||||
mLibSongs->Refresh();
|
Songs->Refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MediaLibrary::EnterPressed(bool add_n_play)
|
void MediaLibrary::NextColumn()
|
||||||
|
{
|
||||||
|
CLEAR_FIND_HISTORY;
|
||||||
|
if (w == Artists)
|
||||||
|
{
|
||||||
|
if (Songs->Empty())
|
||||||
|
return;
|
||||||
|
Artists->HighlightColor(Config.main_highlight_color);
|
||||||
|
w->Refresh();
|
||||||
|
wCurrent = w = Albums;
|
||||||
|
Albums->HighlightColor(Config.active_column_color);
|
||||||
|
if (!Albums->Empty())
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (w == Albums && !Songs->Empty())
|
||||||
|
{
|
||||||
|
Albums->HighlightColor(Config.main_highlight_color);
|
||||||
|
w->Refresh();
|
||||||
|
wCurrent = w = Songs;
|
||||||
|
Songs->HighlightColor(Config.active_column_color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MediaLibrary::PrevColumn()
|
||||||
|
{
|
||||||
|
CLEAR_FIND_HISTORY;
|
||||||
|
if (w == Songs)
|
||||||
|
{
|
||||||
|
Songs->HighlightColor(Config.main_highlight_color);
|
||||||
|
w->Refresh();
|
||||||
|
wCurrent = w = Albums;
|
||||||
|
Albums->HighlightColor(Config.active_column_color);
|
||||||
|
if (!Albums->Empty())
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (w == Albums)
|
||||||
|
{
|
||||||
|
Albums->HighlightColor(Config.main_highlight_color);
|
||||||
|
w->Refresh();
|
||||||
|
wCurrent = w = Artists;
|
||||||
|
Artists->HighlightColor(Config.active_column_color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MediaLibrary::AddToPlaylist(bool add_n_play)
|
||||||
{
|
{
|
||||||
SongList list;
|
SongList list;
|
||||||
|
|
||||||
if (!mLibArtists->Empty() && wCurrent == mLibArtists)
|
if (!Artists->Empty() && wCurrent == Artists)
|
||||||
{
|
{
|
||||||
Mpd->StartSearch(1);
|
Mpd->StartSearch(1);
|
||||||
Mpd->AddSearch(Config.media_lib_primary_tag, locale_to_utf_cpy(mLibArtists->Current()));
|
Mpd->AddSearch(Config.media_lib_primary_tag, locale_to_utf_cpy(Artists->Current()));
|
||||||
Mpd->CommitSearch(list);
|
Mpd->CommitSearch(list);
|
||||||
for (SongList::const_iterator it = list.begin(); it != list.end(); it++)
|
for (SongList::const_iterator it = list.begin(); it != list.end(); it++)
|
||||||
Mpd->QueueAddSong(**it);
|
Mpd->QueueAddSong(**it);
|
||||||
@@ -264,7 +307,7 @@ void MediaLibrary::EnterPressed(bool add_n_play)
|
|||||||
{
|
{
|
||||||
string tag_type = IntoStr(Config.media_lib_primary_tag);
|
string tag_type = IntoStr(Config.media_lib_primary_tag);
|
||||||
ToLower(tag_type);
|
ToLower(tag_type);
|
||||||
ShowMessage("Adding songs of %s \"%s\"", tag_type.c_str(), mLibArtists->Current().c_str());
|
ShowMessage("Adding songs of %s \"%s\"", tag_type.c_str(), Artists->Current().c_str());
|
||||||
Song *s = &myPlaylist->Main()->at(myPlaylist->Main()->Size()-list.size());
|
Song *s = &myPlaylist->Main()->at(myPlaylist->Main()->Size()-list.size());
|
||||||
if (s->GetHash() == list[0]->GetHash())
|
if (s->GetHash() == list[0]->GetHash())
|
||||||
{
|
{
|
||||||
@@ -275,15 +318,15 @@ void MediaLibrary::EnterPressed(bool add_n_play)
|
|||||||
ShowMessage("%s", message_part_of_songs_added);
|
ShowMessage("%s", message_part_of_songs_added);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (wCurrent == mLibAlbums)
|
else if (wCurrent == Albums)
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < mLibSongs->Size(); i++)
|
for (size_t i = 0; i < Songs->Size(); i++)
|
||||||
Mpd->QueueAddSong(mLibSongs->at(i));
|
Mpd->QueueAddSong(Songs->at(i));
|
||||||
if (Mpd->CommitQueue())
|
if (Mpd->CommitQueue())
|
||||||
{
|
{
|
||||||
ShowMessage("Adding songs from album \"%s\"", mLibAlbums->Current().second.c_str());
|
ShowMessage("Adding songs from album \"%s\"", Albums->Current().second.c_str());
|
||||||
Song *s = &myPlaylist->Main()->at(myPlaylist->Main()->Size()-mLibSongs->Size());
|
Song *s = &myPlaylist->Main()->at(myPlaylist->Main()->Size()-Songs->Size());
|
||||||
if (s->GetHash() == mLibSongs->at(0).GetHash())
|
if (s->GetHash() == Songs->at(0).GetHash())
|
||||||
{
|
{
|
||||||
if (add_n_play)
|
if (add_n_play)
|
||||||
Mpd->PlayID(s->GetID());
|
Mpd->PlayID(s->GetID());
|
||||||
@@ -292,14 +335,14 @@ void MediaLibrary::EnterPressed(bool add_n_play)
|
|||||||
ShowMessage("%s", message_part_of_songs_added);
|
ShowMessage("%s", message_part_of_songs_added);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (wCurrent == mLibSongs)
|
else if (wCurrent == Songs)
|
||||||
{
|
{
|
||||||
if (!mLibSongs->Empty())
|
if (!Songs->Empty())
|
||||||
{
|
{
|
||||||
block_item_list_update = 1;
|
block_item_list_update = 1;
|
||||||
if (Config.ncmpc_like_songs_adding && mLibSongs->isBold())
|
if (Config.ncmpc_like_songs_adding && Songs->isBold())
|
||||||
{
|
{
|
||||||
long long hash = mLibSongs->Current().GetHash();
|
long long hash = Songs->Current().GetHash();
|
||||||
if (add_n_play)
|
if (add_n_play)
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < myPlaylist->Main()->Size(); i++)
|
for (size_t i = 0; i < myPlaylist->Main()->Size(); i++)
|
||||||
@@ -324,19 +367,19 @@ void MediaLibrary::EnterPressed(bool add_n_play)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Mpd->CommitQueue();
|
Mpd->CommitQueue();
|
||||||
mLibSongs->BoldOption(mLibSongs->Choice(), 0);
|
Songs->BoldOption(Songs->Choice(), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Song &s = mLibSongs->Current();
|
Song &s = Songs->Current();
|
||||||
int id = Mpd->AddSong(s);
|
int id = Mpd->AddSong(s);
|
||||||
if (id >= 0)
|
if (id >= 0)
|
||||||
{
|
{
|
||||||
ShowMessage("Added to playlist: %s", s.toString(Config.song_status_format).c_str());
|
ShowMessage("Added to playlist: %s", s.toString(Config.song_status_format).c_str());
|
||||||
if (add_n_play)
|
if (add_n_play)
|
||||||
Mpd->PlayID(id);
|
Mpd->PlayID(id);
|
||||||
mLibSongs->BoldOption(mLibSongs->Choice(), 1);
|
Songs->BoldOption(Songs->Choice(), 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -345,13 +388,13 @@ void MediaLibrary::EnterPressed(bool add_n_play)
|
|||||||
if (!add_n_play)
|
if (!add_n_play)
|
||||||
{
|
{
|
||||||
wCurrent->Scroll(wDown);
|
wCurrent->Scroll(wDown);
|
||||||
if (wCurrent == mLibArtists)
|
if (wCurrent == Artists)
|
||||||
{
|
{
|
||||||
mLibAlbums->Clear(0);
|
Albums->Clear(0);
|
||||||
mLibSongs->Clear(0);
|
Songs->Clear(0);
|
||||||
}
|
}
|
||||||
else if (wCurrent == mLibAlbums)
|
else if (wCurrent == Albums)
|
||||||
mLibSongs->Clear(0);
|
Songs->Clear(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,23 +22,41 @@
|
|||||||
#define _H_MEDIA_LIBRARY
|
#define _H_MEDIA_LIBRARY
|
||||||
|
|
||||||
#include "ncmpcpp.h"
|
#include "ncmpcpp.h"
|
||||||
|
#include "screen.h"
|
||||||
|
|
||||||
namespace MediaLibrary
|
class MediaLibrary : public Screen<Window>
|
||||||
{
|
{
|
||||||
void Init();
|
public:
|
||||||
void Resize();
|
virtual void Init();
|
||||||
void Refresh();
|
virtual void SwitchTo();
|
||||||
void SwitchTo();
|
virtual void Resize();
|
||||||
void Update();
|
|
||||||
|
virtual std::string Title();
|
||||||
void EnterPressed(bool = 1);
|
|
||||||
inline void SpacePressed();
|
virtual void Refresh();
|
||||||
}
|
virtual void Update();
|
||||||
|
|
||||||
|
virtual void EnterPressed() { AddToPlaylist(1); }
|
||||||
|
virtual void SpacePressed() { AddToPlaylist(0); }
|
||||||
|
|
||||||
|
void NextColumn();
|
||||||
|
void PrevColumn();
|
||||||
|
|
||||||
|
Menu<std::string> *Artists;
|
||||||
|
Menu<string_pair> *Albums;
|
||||||
|
Menu<MPD::Song> *Songs;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void AddToPlaylist(bool);
|
||||||
|
|
||||||
|
static size_t itsLeftColWidth;
|
||||||
|
static size_t itsMiddleColWidth;
|
||||||
|
static size_t itsMiddleColStartX;
|
||||||
|
static size_t itsRightColWidth;
|
||||||
|
static size_t itsRightColStartX;
|
||||||
|
};
|
||||||
|
|
||||||
void MediaLibrary::SpacePressed()
|
extern MediaLibrary *myLibrary;
|
||||||
{
|
|
||||||
EnterPressed(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
136
src/ncmpcpp.cpp
136
src/ncmpcpp.cpp
@@ -150,7 +150,7 @@ int main(int argc, char *argv[])
|
|||||||
myPlaylist->Init();
|
myPlaylist->Init();
|
||||||
myBrowser->Init();
|
myBrowser->Init();
|
||||||
mySearcher->Init();
|
mySearcher->Init();
|
||||||
MediaLibrary::Init();
|
myLibrary->Init();
|
||||||
PlaylistEditor::Init();
|
PlaylistEditor::Init();
|
||||||
|
|
||||||
# ifdef HAVE_TAGLIB_H
|
# ifdef HAVE_TAGLIB_H
|
||||||
@@ -258,7 +258,7 @@ int main(int argc, char *argv[])
|
|||||||
screen_title = mySearcher->Title();
|
screen_title = mySearcher->Title();
|
||||||
break;
|
break;
|
||||||
case csLibrary:
|
case csLibrary:
|
||||||
screen_title = "Media library";
|
screen_title = myLibrary->Title();
|
||||||
break;
|
break;
|
||||||
case csLyrics:
|
case csLyrics:
|
||||||
screen_title = "Lyrics: ";
|
screen_title = "Lyrics: ";
|
||||||
@@ -319,7 +319,7 @@ int main(int argc, char *argv[])
|
|||||||
|| current_screen == csBrowser);
|
|| current_screen == csBrowser);
|
||||||
else if (current_screen == csLibrary)
|
else if (current_screen == csLibrary)
|
||||||
{
|
{
|
||||||
MediaLibrary::Update();
|
myLibrary->Update();
|
||||||
}
|
}
|
||||||
else if (current_screen == csPlaylistEditor)
|
else if (current_screen == csPlaylistEditor)
|
||||||
{
|
{
|
||||||
@@ -374,14 +374,14 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
if (Keypressed(input, Key.Up) || Keypressed(input, Key.Down) || Keypressed(input, Key.PageUp) || Keypressed(input, Key.PageDown) || Keypressed(input, Key.Home) || Keypressed(input, Key.End) || Keypressed(input, Key.FindForward) || Keypressed(input, Key.FindBackward) || Keypressed(input, Key.NextFoundPosition) || Keypressed(input, Key.PrevFoundPosition))
|
if (Keypressed(input, Key.Up) || Keypressed(input, Key.Down) || Keypressed(input, Key.PageUp) || Keypressed(input, Key.PageDown) || Keypressed(input, Key.Home) || Keypressed(input, Key.End) || Keypressed(input, Key.FindForward) || Keypressed(input, Key.FindBackward) || Keypressed(input, Key.NextFoundPosition) || Keypressed(input, Key.PrevFoundPosition))
|
||||||
{
|
{
|
||||||
if (wCurrent == mLibArtists)
|
if (wCurrent == myLibrary->Artists)
|
||||||
{
|
{
|
||||||
mLibAlbums->Clear(0);
|
myLibrary->Albums->Clear(0);
|
||||||
mLibSongs->Clear(0);
|
myLibrary->Songs->Clear(0);
|
||||||
}
|
}
|
||||||
else if (wCurrent == mLibAlbums)
|
else if (wCurrent == myLibrary->Albums)
|
||||||
{
|
{
|
||||||
mLibSongs->Clear(0);
|
myLibrary->Songs->Clear(0);
|
||||||
}
|
}
|
||||||
else if (wCurrent == mPlaylistList)
|
else if (wCurrent == mPlaylistList)
|
||||||
{
|
{
|
||||||
@@ -412,7 +412,7 @@ int main(int argc, char *argv[])
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (!Config.fancy_scrolling
|
if (!Config.fancy_scrolling
|
||||||
&& (wCurrent == mLibArtists
|
&& (wCurrent == myLibrary->Artists
|
||||||
|| wCurrent == mPlaylistList
|
|| wCurrent == mPlaylistList
|
||||||
# ifdef HAVE_TAGLIB_H
|
# ifdef HAVE_TAGLIB_H
|
||||||
|| wCurrent == mEditorLeftCol
|
|| wCurrent == mEditorLeftCol
|
||||||
@@ -440,7 +440,7 @@ int main(int argc, char *argv[])
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (!Config.fancy_scrolling
|
if (!Config.fancy_scrolling
|
||||||
&& (wCurrent == mLibArtists
|
&& (wCurrent == myLibrary->Artists
|
||||||
|| wCurrent == mPlaylistList
|
|| wCurrent == mPlaylistList
|
||||||
# ifdef HAVE_TAGLIB_H
|
# ifdef HAVE_TAGLIB_H
|
||||||
|| wCurrent == mEditorLeftCol
|
|| wCurrent == mEditorLeftCol
|
||||||
@@ -509,7 +509,7 @@ int main(int argc, char *argv[])
|
|||||||
myPlaylist->Resize();
|
myPlaylist->Resize();
|
||||||
myBrowser->Resize();
|
myBrowser->Resize();
|
||||||
mySearcher->Resize();
|
mySearcher->Resize();
|
||||||
MediaLibrary::Resize();
|
myLibrary->Resize();
|
||||||
PlaylistEditor::Resize();
|
PlaylistEditor::Resize();
|
||||||
Info::Resize();
|
Info::Resize();
|
||||||
Lyrics::Resize();
|
Lyrics::Resize();
|
||||||
@@ -533,7 +533,7 @@ int main(int argc, char *argv[])
|
|||||||
# ifdef HAVE_TAGLIB_H
|
# ifdef HAVE_TAGLIB_H
|
||||||
if (current_screen == csLibrary)
|
if (current_screen == csLibrary)
|
||||||
{
|
{
|
||||||
MediaLibrary::Refresh();
|
myLibrary->Refresh();
|
||||||
}
|
}
|
||||||
else if (current_screen == csTagEditor)
|
else if (current_screen == csTagEditor)
|
||||||
{
|
{
|
||||||
@@ -592,7 +592,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
case csLibrary:
|
case csLibrary:
|
||||||
{
|
{
|
||||||
MediaLibrary::EnterPressed();
|
myLibrary->EnterPressed();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case csPlaylistEditor:
|
case csPlaylistEditor:
|
||||||
@@ -625,7 +625,7 @@ int main(int argc, char *argv[])
|
|||||||
|| wCurrent == mEditorTags
|
|| wCurrent == mEditorTags
|
||||||
# endif // HAVE_TAGLIB_H
|
# endif // HAVE_TAGLIB_H
|
||||||
|| (wCurrent == myBrowser->Main() && ((Menu<Song> *)wCurrent)->Choice() >= (myBrowser->CurrentDir() != "/" ? 1 : 0)) || (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first)
|
|| (wCurrent == myBrowser->Main() && ((Menu<Song> *)wCurrent)->Choice() >= (myBrowser->CurrentDir() != "/" ? 1 : 0)) || (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first)
|
||||||
|| wCurrent == mLibSongs
|
|| wCurrent == myLibrary->Songs
|
||||||
|| wCurrent == mPlaylistEditor)
|
|| wCurrent == mPlaylistEditor)
|
||||||
{
|
{
|
||||||
List *mList = (Menu<Song> *)wCurrent;
|
List *mList = (Menu<Song> *)wCurrent;
|
||||||
@@ -648,7 +648,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
else if (current_screen == csLibrary)
|
else if (current_screen == csLibrary)
|
||||||
{
|
{
|
||||||
MediaLibrary::SpacePressed();
|
myLibrary->SpacePressed();
|
||||||
}
|
}
|
||||||
else if (current_screen == csPlaylistEditor)
|
else if (current_screen == csPlaylistEditor)
|
||||||
{
|
{
|
||||||
@@ -676,25 +676,7 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
if (current_screen == csLibrary && input == Key.VolumeUp[0])
|
if (current_screen == csLibrary && input == Key.VolumeUp[0])
|
||||||
{
|
{
|
||||||
CLEAR_FIND_HISTORY;
|
myLibrary->NextColumn();
|
||||||
if (wCurrent == mLibArtists)
|
|
||||||
{
|
|
||||||
if (mLibSongs->Empty())
|
|
||||||
continue;
|
|
||||||
mLibArtists->HighlightColor(Config.main_highlight_color);
|
|
||||||
wCurrent->Refresh();
|
|
||||||
wCurrent = wLibActiveCol = mLibAlbums;
|
|
||||||
mLibAlbums->HighlightColor(Config.active_column_color);
|
|
||||||
if (!mLibAlbums->Empty())
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (wCurrent == mLibAlbums && !mLibSongs->Empty())
|
|
||||||
{
|
|
||||||
mLibAlbums->HighlightColor(Config.main_highlight_color);
|
|
||||||
wCurrent->Refresh();
|
|
||||||
wCurrent = wLibActiveCol = mLibSongs;
|
|
||||||
mLibSongs->HighlightColor(Config.active_column_color);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (current_screen == csPlaylistEditor && input == Key.VolumeUp[0])
|
else if (current_screen == csPlaylistEditor && input == Key.VolumeUp[0])
|
||||||
{
|
{
|
||||||
@@ -734,23 +716,7 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
if (current_screen == csLibrary && input == Key.VolumeDown[0])
|
if (current_screen == csLibrary && input == Key.VolumeDown[0])
|
||||||
{
|
{
|
||||||
CLEAR_FIND_HISTORY;
|
myLibrary->PrevColumn();
|
||||||
if (wCurrent == mLibSongs)
|
|
||||||
{
|
|
||||||
mLibSongs->HighlightColor(Config.main_highlight_color);
|
|
||||||
wCurrent->Refresh();
|
|
||||||
wCurrent = wLibActiveCol = mLibAlbums;
|
|
||||||
mLibAlbums->HighlightColor(Config.active_column_color);
|
|
||||||
if (!mLibAlbums->Empty())
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (wCurrent == mLibAlbums)
|
|
||||||
{
|
|
||||||
mLibAlbums->HighlightColor(Config.main_highlight_color);
|
|
||||||
wCurrent->Refresh();
|
|
||||||
wCurrent = wLibActiveCol = mLibArtists;
|
|
||||||
mLibArtists->HighlightColor(Config.active_column_color);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (current_screen == csPlaylistEditor && input == Key.VolumeDown[0])
|
else if (current_screen == csPlaylistEditor && input == Key.VolumeDown[0])
|
||||||
{
|
{
|
||||||
@@ -1340,19 +1306,19 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
CHECK_MPD_MUSIC_DIR;
|
CHECK_MPD_MUSIC_DIR;
|
||||||
# ifdef HAVE_TAGLIB_H
|
# ifdef HAVE_TAGLIB_H
|
||||||
if (wCurrent == mLibArtists)
|
if (wCurrent == myLibrary->Artists)
|
||||||
{
|
{
|
||||||
LockStatusbar();
|
LockStatusbar();
|
||||||
Statusbar() << fmtBold << IntoStr(Config.media_lib_primary_tag) << fmtBoldEnd << ": ";
|
Statusbar() << fmtBold << IntoStr(Config.media_lib_primary_tag) << fmtBoldEnd << ": ";
|
||||||
string new_tag = wFooter->GetString(mLibArtists->Current());
|
string new_tag = wFooter->GetString(myLibrary->Artists->Current());
|
||||||
UnlockStatusbar();
|
UnlockStatusbar();
|
||||||
if (!new_tag.empty() && new_tag != mLibArtists->Current())
|
if (!new_tag.empty() && new_tag != myLibrary->Artists->Current())
|
||||||
{
|
{
|
||||||
bool success = 1;
|
bool success = 1;
|
||||||
SongList list;
|
SongList list;
|
||||||
ShowMessage("Updating tags...");
|
ShowMessage("Updating tags...");
|
||||||
Mpd->StartSearch(1);
|
Mpd->StartSearch(1);
|
||||||
Mpd->AddSearch(Config.media_lib_primary_tag, locale_to_utf_cpy(mLibArtists->Current()));
|
Mpd->AddSearch(Config.media_lib_primary_tag, locale_to_utf_cpy(myLibrary->Artists->Current()));
|
||||||
Mpd->CommitSearch(list);
|
Mpd->CommitSearch(list);
|
||||||
SongSetFunction set = IntoSetFunction(Config.media_lib_primary_tag);
|
SongSetFunction set = IntoSetFunction(Config.media_lib_primary_tag);
|
||||||
if (!set)
|
if (!set)
|
||||||
@@ -1378,39 +1344,39 @@ int main(int argc, char *argv[])
|
|||||||
FreeSongList(list);
|
FreeSongList(list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (wCurrent == mLibAlbums)
|
else if (wCurrent == myLibrary->Albums)
|
||||||
{
|
{
|
||||||
LockStatusbar();
|
LockStatusbar();
|
||||||
Statusbar() << fmtBold << "Album: " << fmtBoldEnd;
|
Statusbar() << fmtBold << "Album: " << fmtBoldEnd;
|
||||||
string new_album = wFooter->GetString(mLibAlbums->Current().second);
|
string new_album = wFooter->GetString(myLibrary->Albums->Current().second);
|
||||||
UnlockStatusbar();
|
UnlockStatusbar();
|
||||||
if (!new_album.empty() && new_album != mLibAlbums->Current().second)
|
if (!new_album.empty() && new_album != myLibrary->Albums->Current().second)
|
||||||
{
|
{
|
||||||
bool success = 1;
|
bool success = 1;
|
||||||
ShowMessage("Updating tags...");
|
ShowMessage("Updating tags...");
|
||||||
for (size_t i = 0; i < mLibSongs->Size(); i++)
|
for (size_t i = 0; i < myLibrary->Songs->Size(); i++)
|
||||||
{
|
{
|
||||||
(*mLibSongs)[i].Localize();
|
(*myLibrary->Songs)[i].Localize();
|
||||||
ShowMessage("Updating tags in '%s'...", (*mLibSongs)[i].GetName().c_str());
|
ShowMessage("Updating tags in '%s'...", (*myLibrary->Songs)[i].GetName().c_str());
|
||||||
string path = Config.mpd_music_dir + (*mLibSongs)[i].GetFile();
|
string path = Config.mpd_music_dir + (*myLibrary->Songs)[i].GetFile();
|
||||||
TagLib::FileRef f(path.c_str());
|
TagLib::FileRef f(path.c_str());
|
||||||
if (f.isNull())
|
if (f.isNull())
|
||||||
{
|
{
|
||||||
ShowMessage("Error opening file '%s'!", (*mLibSongs)[i].GetFile().c_str());
|
ShowMessage("Error opening file '%s'!", (*myLibrary->Songs)[i].GetFile().c_str());
|
||||||
success = 0;
|
success = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
f.tag()->setAlbum(ToWString(new_album));
|
f.tag()->setAlbum(ToWString(new_album));
|
||||||
if (!f.save())
|
if (!f.save())
|
||||||
{
|
{
|
||||||
ShowMessage("Error writing tags in '%s'!", (*mLibSongs)[i].GetFile().c_str());
|
ShowMessage("Error writing tags in '%s'!", (*myLibrary->Songs)[i].GetFile().c_str());
|
||||||
success = 0;
|
success = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (success)
|
if (success)
|
||||||
{
|
{
|
||||||
Mpd->UpdateDirectory(FindSharedDir(mLibSongs));
|
Mpd->UpdateDirectory(FindSharedDir(myLibrary->Songs));
|
||||||
ShowMessage("Tags updated succesfully!");
|
ShowMessage("Tags updated succesfully!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1419,7 +1385,7 @@ int main(int argc, char *argv[])
|
|||||||
(wCurrent == myPlaylist->Main() && !myPlaylist->Main()->Empty())
|
(wCurrent == myPlaylist->Main() && !myPlaylist->Main()->Empty())
|
||||||
|| (wCurrent == myBrowser->Main() && myBrowser->Main()->Current().type == itSong)
|
|| (wCurrent == myBrowser->Main() && myBrowser->Main()->Current().type == itSong)
|
||||||
|| (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first)
|
|| (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first)
|
||||||
|| (wCurrent == mLibSongs && !mLibSongs->Empty())
|
|| (wCurrent == myLibrary->Songs && !myLibrary->Songs->Empty())
|
||||||
|| (wCurrent == mPlaylistEditor && !mPlaylistEditor->Empty())
|
|| (wCurrent == mPlaylistEditor && !mPlaylistEditor->Empty())
|
||||||
|| (wCurrent == mEditorTags && !mEditorTags->Empty()))
|
|| (wCurrent == mEditorTags && !mEditorTags->Empty()))
|
||||||
{
|
{
|
||||||
@@ -1437,7 +1403,7 @@ int main(int argc, char *argv[])
|
|||||||
edited_song = *mySearcher->Main()->at(id).second;
|
edited_song = *mySearcher->Main()->at(id).second;
|
||||||
break;
|
break;
|
||||||
case csLibrary:
|
case csLibrary:
|
||||||
edited_song = mLibSongs->at(id);
|
edited_song = myLibrary->Songs->at(id);
|
||||||
break;
|
break;
|
||||||
case csPlaylistEditor:
|
case csPlaylistEditor:
|
||||||
edited_song = mPlaylistEditor->at(id);
|
edited_song = mPlaylistEditor->at(id);
|
||||||
@@ -1543,7 +1509,7 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
if ((wCurrent == myPlaylist->Main() && !myPlaylist->Main()->Empty())
|
if ((wCurrent == myPlaylist->Main() && !myPlaylist->Main()->Empty())
|
||||||
|| (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first)
|
|| (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first)
|
||||||
|| (wCurrent == mLibSongs && !mLibSongs->Empty())
|
|| (wCurrent == myLibrary->Songs && !myLibrary->Songs->Empty())
|
||||||
|| (wCurrent == mPlaylistEditor && !mPlaylistEditor->Empty())
|
|| (wCurrent == mPlaylistEditor && !mPlaylistEditor->Empty())
|
||||||
# ifdef HAVE_TAGLIB_H
|
# ifdef HAVE_TAGLIB_H
|
||||||
|| (wCurrent == mEditorTags && !mEditorTags->Empty())
|
|| (wCurrent == mEditorTags && !mEditorTags->Empty())
|
||||||
@@ -1561,7 +1527,7 @@ int main(int argc, char *argv[])
|
|||||||
s = mySearcher->Main()->at(id).second;
|
s = mySearcher->Main()->at(id).second;
|
||||||
break;
|
break;
|
||||||
case csLibrary:
|
case csLibrary:
|
||||||
s = &mLibSongs->at(id);
|
s = &myLibrary->Songs->at(id);
|
||||||
break;
|
break;
|
||||||
case csPlaylistEditor:
|
case csPlaylistEditor:
|
||||||
s = &mPlaylistEditor->at(id);
|
s = &mPlaylistEditor->at(id);
|
||||||
@@ -1627,7 +1593,7 @@ int main(int argc, char *argv[])
|
|||||||
if (wCurrent == myPlaylist->Main()
|
if (wCurrent == myPlaylist->Main()
|
||||||
|| wCurrent == myBrowser->Main()
|
|| wCurrent == myBrowser->Main()
|
||||||
|| (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first)
|
|| (wCurrent == mySearcher->Main() && !mySearcher->Main()->Current().first)
|
||||||
|| wCurrent == mLibSongs
|
|| wCurrent == myLibrary->Songs
|
||||||
|| wCurrent == mPlaylistEditor
|
|| wCurrent == mPlaylistEditor
|
||||||
# ifdef HAVE_TAGLIB_H
|
# ifdef HAVE_TAGLIB_H
|
||||||
|| wCurrent == mEditorTags
|
|| wCurrent == mEditorTags
|
||||||
@@ -1652,7 +1618,7 @@ int main(int argc, char *argv[])
|
|||||||
if (wCurrent == myPlaylist->Main()
|
if (wCurrent == myPlaylist->Main()
|
||||||
|| wCurrent == myBrowser->Main()
|
|| wCurrent == myBrowser->Main()
|
||||||
|| wCurrent == mySearcher->Main()
|
|| wCurrent == mySearcher->Main()
|
||||||
|| wCurrent == mLibSongs
|
|| wCurrent == myLibrary->Songs
|
||||||
|| wCurrent == mPlaylistEditor
|
|| wCurrent == mPlaylistEditor
|
||||||
# ifdef HAVE_TAGLIB_H
|
# ifdef HAVE_TAGLIB_H
|
||||||
|| wCurrent == mEditorTags
|
|| wCurrent == mEditorTags
|
||||||
@@ -1673,7 +1639,7 @@ int main(int argc, char *argv[])
|
|||||||
if (wCurrent != myPlaylist->Main()
|
if (wCurrent != myPlaylist->Main()
|
||||||
&& wCurrent != myBrowser->Main()
|
&& wCurrent != myBrowser->Main()
|
||||||
&& wCurrent != mySearcher->Main()
|
&& wCurrent != mySearcher->Main()
|
||||||
&& wCurrent != mLibSongs
|
&& wCurrent != myLibrary->Songs
|
||||||
&& wCurrent != mPlaylistEditor)
|
&& wCurrent != mPlaylistEditor)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -1729,7 +1695,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
case csLibrary:
|
case csLibrary:
|
||||||
{
|
{
|
||||||
Song *s = new Song(mLibSongs->at(*it));
|
Song *s = new Song(myLibrary->Songs->at(*it));
|
||||||
result.push_back(s);
|
result.push_back(s);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1800,7 +1766,7 @@ int main(int argc, char *argv[])
|
|||||||
// redraw_screen = 1;
|
// redraw_screen = 1;
|
||||||
if (current_screen == csLibrary)
|
if (current_screen == csLibrary)
|
||||||
{
|
{
|
||||||
MediaLibrary::Refresh();
|
myLibrary->Refresh();
|
||||||
}
|
}
|
||||||
else if (current_screen == csPlaylistEditor)
|
else if (current_screen == csPlaylistEditor)
|
||||||
{
|
{
|
||||||
@@ -1953,12 +1919,12 @@ int main(int argc, char *argv[])
|
|||||||
name = mySearcher->Main()->at(i).second->toString(Config.song_list_format);
|
name = mySearcher->Main()->at(i).second->toString(Config.song_list_format);
|
||||||
break;
|
break;
|
||||||
case csLibrary:
|
case csLibrary:
|
||||||
if (wCurrent == mLibArtists)
|
if (wCurrent == myLibrary->Artists)
|
||||||
name = mLibArtists->at(i);
|
name = myLibrary->Artists->at(i);
|
||||||
else if (wCurrent == mLibAlbums)
|
else if (wCurrent == myLibrary->Albums)
|
||||||
name = mLibAlbums->at(i).first;
|
name = myLibrary->Albums->at(i).first;
|
||||||
else
|
else
|
||||||
name = mLibSongs->at(i).toString(Config.song_library_format);
|
name = myLibrary->Songs->at(i).toString(Config.song_library_format);
|
||||||
break;
|
break;
|
||||||
case csPlaylistEditor:
|
case csPlaylistEditor:
|
||||||
if (wCurrent == mPlaylistList)
|
if (wCurrent == mPlaylistList)
|
||||||
@@ -2105,7 +2071,7 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
myBrowser->ChangeBrowseMode();
|
myBrowser->ChangeBrowseMode();
|
||||||
}
|
}
|
||||||
else if (wCurrent == mLibArtists)
|
else if (wCurrent == myLibrary->Artists)
|
||||||
{
|
{
|
||||||
LockStatusbar();
|
LockStatusbar();
|
||||||
Statusbar() << "Tag type ? [" << fmtBold << 'a' << fmtBoldEnd << "rtist/" << fmtBold << 'y' << fmtBoldEnd << "ear/" << fmtBold << 'g' << fmtBoldEnd << "enre/" << fmtBold << 'c' << fmtBoldEnd << "omposer/" << fmtBold << 'p' << fmtBoldEnd << "erformer] ";
|
Statusbar() << "Tag type ? [" << fmtBold << 'a' << fmtBoldEnd << "rtist/" << fmtBold << 'y' << fmtBoldEnd << "ear/" << fmtBold << 'g' << fmtBoldEnd << "enre/" << fmtBold << 'c' << fmtBoldEnd << "omposer/" << fmtBold << 'p' << fmtBoldEnd << "erformer] ";
|
||||||
@@ -2124,10 +2090,10 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
Config.media_lib_primary_tag = new_tagitem;
|
Config.media_lib_primary_tag = new_tagitem;
|
||||||
string item_type = IntoStr(Config.media_lib_primary_tag);
|
string item_type = IntoStr(Config.media_lib_primary_tag);
|
||||||
mLibArtists->SetTitle(item_type + "s");
|
myLibrary->Artists->SetTitle(item_type + "s");
|
||||||
mLibArtists->Reset();
|
myLibrary->Artists->Reset();
|
||||||
mLibArtists->Clear(0);
|
myLibrary->Artists->Clear(0);
|
||||||
mLibArtists->Display();
|
myLibrary->Artists->Display();
|
||||||
ToLower(item_type);
|
ToLower(item_type);
|
||||||
ShowMessage("Switched to list of %s tag", item_type.c_str());
|
ShowMessage("Switched to list of %s tag", item_type.c_str());
|
||||||
}
|
}
|
||||||
@@ -2172,7 +2138,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
else if (Keypressed(input, Key.MediaLibrary))
|
else if (Keypressed(input, Key.MediaLibrary))
|
||||||
{
|
{
|
||||||
MediaLibrary::SwitchTo();
|
myLibrary->SwitchTo();
|
||||||
}
|
}
|
||||||
else if (Keypressed(input, Key.PlaylistEditor))
|
else if (Keypressed(input, Key.PlaylistEditor))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
#include "charset.h"
|
#include "charset.h"
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "helpers.h"
|
#include "helpers.h"
|
||||||
|
#include "media_library.h"
|
||||||
#include "playlist.h"
|
#include "playlist.h"
|
||||||
#include "search_engine.h"
|
#include "search_engine.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
@@ -232,7 +233,7 @@ void NcmpcppStatusChanged(Connection *Mpd, StatusChanges changed, void *)
|
|||||||
}
|
}
|
||||||
else if (current_screen == csLibrary)
|
else if (current_screen == csLibrary)
|
||||||
{
|
{
|
||||||
UpdateSongList(mLibSongs);
|
UpdateSongList(myLibrary->Songs);
|
||||||
}
|
}
|
||||||
else if (current_screen == csPlaylistEditor)
|
else if (current_screen == csPlaylistEditor)
|
||||||
{
|
{
|
||||||
@@ -247,7 +248,7 @@ void NcmpcppStatusChanged(Connection *Mpd, StatusChanges changed, void *)
|
|||||||
mEditorAlbums->Clear(0);
|
mEditorAlbums->Clear(0);
|
||||||
mEditorDirs->Clear(0);
|
mEditorDirs->Clear(0);
|
||||||
# endif // HAVE_TAGLIB_H
|
# endif // HAVE_TAGLIB_H
|
||||||
mLibArtists->Clear(0);
|
myLibrary->Artists->Clear(0);
|
||||||
mPlaylistEditor->Clear(0);
|
mPlaylistEditor->Clear(0);
|
||||||
}
|
}
|
||||||
if (changed.PlayerState)
|
if (changed.PlayerState)
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ void TinyTagEditor::EnterPressed(Song &s)
|
|||||||
redraw_header = 1;
|
redraw_header = 1;
|
||||||
if (current_screen == csLibrary)
|
if (current_screen == csLibrary)
|
||||||
{
|
{
|
||||||
MediaLibrary::Refresh();
|
myLibrary->Refresh();
|
||||||
}
|
}
|
||||||
else if (current_screen == csPlaylistEditor)
|
else if (current_screen == csPlaylistEditor)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user