tag editor: remove albums view
This commit is contained in:
1 parent
5f637103a6
commit
69bd1bac97
8 files changed
+49
-148
No files matched your search
@@ -321,8 +321,6 @@
|
||||
#
|
||||
#default_space_mode = "add" (add/select)
|
||||
#
|
||||
#default_tag_editor_left_col = "albums" (albums/dirs)
|
||||
#
|
||||
#default_tag_editor_pattern = "%n - %t"
|
||||
#
|
||||
#header_visibility = "yes"
|
||||
|
||||
@@ -243,9 +243,6 @@ If set to "wrapped", going from last found position to next will take you to the
|
||||
.B default_space_mode = select/add
|
||||
If set to "select", space will select items instead of adding them to playlist (although selecting by space is default and the only one action for space in Playlist).
|
||||
.TP
|
||||
.B default_tag_editor_left_col = albums/dirs
|
||||
If set to "albums", tag editor will display list of all albums from database, otherwise it'll allow you to browse the database.
|
||||
.TP
|
||||
.B incremental_seeking = yes/no
|
||||
If enabled, seek time will increment by one each second of seeking.
|
||||
.TP
|
||||
|
||||
+2
-2
@@ -398,7 +398,7 @@ void Action::ListsChangeFinisher()
|
||||
myPlaylistEditor->Content->clear();
|
||||
}
|
||||
# ifdef HAVE_TAGLIB_H
|
||||
else if (myScreen->ActiveWindow() == myTagEditor->LeftColumn)
|
||||
else if (myScreen->ActiveWindow() == myTagEditor->Dirs)
|
||||
{
|
||||
myTagEditor->Tags->clear();
|
||||
}
|
||||
@@ -1202,7 +1202,7 @@ void UpdateDatabase::Run()
|
||||
if (myScreen == myBrowser)
|
||||
Mpd.UpdateDirectory(locale_to_utf_cpy(myBrowser->CurrentDir()));
|
||||
# ifdef HAVE_TAGLIB_H
|
||||
else if (myScreen == myTagEditor && !Config.albums_in_tag_editor)
|
||||
else if (myScreen == myTagEditor)
|
||||
Mpd.UpdateDirectory(myTagEditor->CurrentDir());
|
||||
# endif // HAVE_TAGLIB_H
|
||||
else
|
||||
|
||||
@@ -354,7 +354,6 @@ void Configuration::SetDefaults()
|
||||
wrapped_search = true;
|
||||
space_selects = false;
|
||||
ncmpc_like_songs_adding = false;
|
||||
albums_in_tag_editor = false;
|
||||
incremental_seeking = true;
|
||||
now_playing_lyrics = false;
|
||||
fetch_lyrics_in_background = false;
|
||||
@@ -826,10 +825,6 @@ void Configuration::Read()
|
||||
{
|
||||
space_selects = v == "select";
|
||||
}
|
||||
else if (name == "default_tag_editor_left_col")
|
||||
{
|
||||
albums_in_tag_editor = v == "albums";
|
||||
}
|
||||
else if (name == "incremental_seeking")
|
||||
{
|
||||
incremental_seeking = v == "yes";
|
||||
|
||||
@@ -171,7 +171,6 @@ struct Configuration
|
||||
bool wrapped_search;
|
||||
bool space_selects;
|
||||
bool ncmpc_like_songs_adding;
|
||||
bool albums_in_tag_editor;
|
||||
bool incremental_seeking;
|
||||
bool now_playing_lyrics;
|
||||
bool fetch_lyrics_in_background;
|
||||
|
||||
@@ -294,7 +294,6 @@ void NcmpcppStatusChanged(MPD::Connection *, MPD::StatusChanges changed, void *)
|
||||
# ifdef HAVE_TAGLIB_H
|
||||
if (myTagEditor->Main())
|
||||
{
|
||||
myTagEditor->Albums->clear();
|
||||
myTagEditor->Dirs->clear();
|
||||
}
|
||||
# endif // HAVE_TAGLIB_H
|
||||
|
||||
+47
-132
@@ -90,7 +90,6 @@ std::string ParseFilename(MPD::MutableSong &s, std::string mask, bool preview);
|
||||
|
||||
std::string SongToString(const MPD::MutableSong &s);
|
||||
bool DirEntryMatcher(const Regex &rx, const std::pair<std::string, std::string> &dir, bool filter);
|
||||
bool AlbumEntryMatcher(const Regex &rx, const std::pair<std::string, std::string> &dir);
|
||||
bool SongEntryMatcher(const Regex &rx, const MPD::MutableSong &s);
|
||||
|
||||
}
|
||||
@@ -100,20 +99,12 @@ void TagEditor::Init()
|
||||
PatternsFile = Config.ncmpcpp_directory + "patterns.list";
|
||||
SetDimensions(0, COLS);
|
||||
|
||||
Albums = new NC::Menu< std::pair<std::string, std::string> >(0, MainStartY, LeftColumnWidth, MainHeight, Config.titles_visibility ? "Albums" : "", Config.main_color, NC::brNone);
|
||||
Albums->setHighlightColor(Config.active_column_color);
|
||||
Albums->cyclicScrolling(Config.use_cyclic_scrolling);
|
||||
Albums->centeredCursor(Config.centered_cursor);
|
||||
Albums->setItemDisplayer(Display::Pair<std::string, std::string>);
|
||||
|
||||
Dirs = new NC::Menu< std::pair<std::string, std::string> >(0, MainStartY, LeftColumnWidth, MainHeight, Config.titles_visibility ? "Directories" : "", Config.main_color, NC::brNone);
|
||||
Dirs->setHighlightColor(Config.active_column_color);
|
||||
Dirs->cyclicScrolling(Config.use_cyclic_scrolling);
|
||||
Dirs->centeredCursor(Config.centered_cursor);
|
||||
Dirs->setItemDisplayer(Display::Pair<std::string, std::string>);
|
||||
|
||||
LeftColumn = Config.albums_in_tag_editor ? Albums : Dirs;
|
||||
|
||||
TagTypes = new NC::Menu<std::string>(MiddleColumnStartX, MainStartY, MiddleColumnWidth, MainHeight, Config.titles_visibility ? "Tag types" : "", Config.main_color, NC::brNone);
|
||||
TagTypes->setHighlightColor(Config.main_highlight_color);
|
||||
TagTypes->cyclicScrolling(Config.use_cyclic_scrolling);
|
||||
@@ -160,7 +151,7 @@ void TagEditor::Init()
|
||||
|
||||
FParserPreview = new NC::Scrollpad((COLS-FParserWidth)/2+FParserWidthOne, (MainHeight-FParserHeight)/2+MainStartY, FParserWidthTwo, FParserHeight, "Preview", Config.main_color, Config.window_border);
|
||||
|
||||
w = LeftColumn;
|
||||
w = Dirs;
|
||||
isInitialized = 1;
|
||||
}
|
||||
|
||||
@@ -187,7 +178,6 @@ void TagEditor::Resize()
|
||||
GetWindowResizeParams(x_offset, width);
|
||||
SetDimensions(x_offset, width);
|
||||
|
||||
Albums->resize(LeftColumnWidth, MainHeight);
|
||||
Dirs->resize(LeftColumnWidth, MainHeight);
|
||||
TagTypes->resize(MiddleColumnWidth, MainHeight);
|
||||
Tags->resize(RightColumnWidth, MainHeight);
|
||||
@@ -196,7 +186,6 @@ void TagEditor::Resize()
|
||||
FParserLegend->resize(FParserWidthTwo, FParserHeight);
|
||||
FParserPreview->resize(FParserWidthTwo, FParserHeight);
|
||||
|
||||
Albums->moveTo(LeftColumnStartX, MainStartY);
|
||||
Dirs->moveTo(LeftColumnStartX, MainStartY);
|
||||
TagTypes->moveTo(MiddleColumnStartX, MainStartY);
|
||||
Tags->moveTo(RightColumnStartX, MainStartY);
|
||||
@@ -242,7 +231,6 @@ void TagEditor::SwitchTo()
|
||||
|
||||
void TagEditor::Refresh()
|
||||
{
|
||||
LeftColumn->display();
|
||||
mvvline(MainStartY, MiddleColumnStartX-1, 0, MainHeight);
|
||||
TagTypes->display();
|
||||
mvvline(MainStartY, RightColumnStartX-1, 0, MainHeight);
|
||||
@@ -261,77 +249,43 @@ void TagEditor::Refresh()
|
||||
|
||||
void TagEditor::Update()
|
||||
{
|
||||
if (LeftColumn->reallyEmpty())
|
||||
if (Dirs->reallyEmpty())
|
||||
{
|
||||
LeftColumn->Window::clear();
|
||||
Dirs->Window::clear();
|
||||
Tags->clear();
|
||||
if (Config.albums_in_tag_editor)
|
||||
|
||||
int highlightme = -1;
|
||||
auto dirs = Mpd.GetDirectories(itsBrowsedDir);
|
||||
std::sort(dirs.begin(), dirs.end(), CaseInsensitiveSorting());
|
||||
if (itsBrowsedDir != "/")
|
||||
{
|
||||
*Albums << NC::XY(0, 0) << "Fetching albums...";
|
||||
Albums->Window::refresh();
|
||||
Mpd.BlockIdle(true); // for the same reason as in media library
|
||||
auto albums = Mpd.GetList(MPD_TAG_ALBUM);
|
||||
for (auto album = albums.begin(); album != albums.end(); ++album)
|
||||
{
|
||||
Mpd.StartSearch(1);
|
||||
Mpd.AddSearch(MPD_TAG_ALBUM, *album);
|
||||
auto songs = Mpd.CommitSearchSongs();
|
||||
if (!songs.empty())
|
||||
Albums->addItem(std::make_pair(songs[0].toString(Config.tag_editor_album_format), *album));
|
||||
}
|
||||
Mpd.BlockIdle(false);
|
||||
std::sort(Albums->beginV(), Albums->endV(), CaseInsensitiveSorting());
|
||||
size_t slash = itsBrowsedDir.rfind("/");
|
||||
std::string parent = slash != std::string::npos ? itsBrowsedDir.substr(0, slash) : "/";
|
||||
Dirs->addItem(make_pair("..", parent));
|
||||
}
|
||||
else
|
||||
Dirs->addItem(std::make_pair(".", "/"));
|
||||
for (auto dir = dirs.begin(); dir != dirs.end(); ++dir)
|
||||
{
|
||||
int highlightme = -1;
|
||||
auto dirs = Mpd.GetDirectories(itsBrowsedDir);
|
||||
std::sort(dirs.begin(), dirs.end(), CaseInsensitiveSorting());
|
||||
if (itsBrowsedDir != "/")
|
||||
{
|
||||
size_t slash = itsBrowsedDir.rfind("/");
|
||||
std::string parent = slash != std::string::npos ? itsBrowsedDir.substr(0, slash) : "/";
|
||||
Dirs->addItem(make_pair("..", parent));
|
||||
}
|
||||
else
|
||||
Dirs->addItem(std::make_pair(".", "/"));
|
||||
for (auto dir = dirs.begin(); dir != dirs.end(); ++dir)
|
||||
{
|
||||
size_t slash = dir->rfind("/");
|
||||
std::string to_display = slash != std::string::npos ? dir->substr(slash+1) : *dir;
|
||||
Dirs->addItem(make_pair(to_display, *dir));
|
||||
if (*dir == itsHighlightedDir)
|
||||
highlightme = Dirs->size()-1;
|
||||
}
|
||||
if (highlightme != -1)
|
||||
Dirs->highlight(highlightme);
|
||||
size_t slash = dir->rfind("/");
|
||||
std::string to_display = slash != std::string::npos ? dir->substr(slash+1) : *dir;
|
||||
Dirs->addItem(make_pair(to_display, *dir));
|
||||
if (*dir == itsHighlightedDir)
|
||||
highlightme = Dirs->size()-1;
|
||||
}
|
||||
LeftColumn->display();
|
||||
TagTypes->refresh();
|
||||
if (highlightme != -1)
|
||||
Dirs->highlight(highlightme);
|
||||
|
||||
Dirs->display();
|
||||
}
|
||||
|
||||
if (Tags->reallyEmpty())
|
||||
{
|
||||
Tags->reset();
|
||||
if (Config.albums_in_tag_editor)
|
||||
{
|
||||
if (!Albums->empty())
|
||||
{
|
||||
Mpd.StartSearch(1);
|
||||
Mpd.AddSearch(MPD_TAG_ALBUM, Albums->current().value().second);
|
||||
auto albums = Mpd.CommitSearchSongs();
|
||||
std::sort(albums.begin(), albums.end(), CaseInsensitiveSorting());
|
||||
for (auto album = albums.begin(); album != albums.end(); ++album)
|
||||
Tags->addItem(*album);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
auto songs = Mpd.GetSongs(Dirs->current().value().second);
|
||||
std::sort(songs.begin(), songs.end(), CaseInsensitiveSorting());
|
||||
for (auto s = songs.begin(); s != songs.end(); ++s)
|
||||
Tags->addItem(*s);
|
||||
}
|
||||
auto songs = Mpd.GetSongs(Dirs->current().value().second);
|
||||
std::sort(songs.begin(), songs.end(), CaseInsensitiveSorting());
|
||||
for (auto s = songs.begin(); s != songs.end(); ++s)
|
||||
Tags->addItem(*s);
|
||||
Tags->refresh();
|
||||
}
|
||||
|
||||
@@ -352,16 +306,16 @@ void TagEditor::EnterPressed()
|
||||
|
||||
if (w == Dirs)
|
||||
{
|
||||
auto dirs = Mpd.GetDirectories(LeftColumn->current().value().second);
|
||||
auto dirs = Mpd.GetDirectories(Dirs->current().value().second);
|
||||
if (!dirs.empty())
|
||||
{
|
||||
itsHighlightedDir = itsBrowsedDir;
|
||||
itsBrowsedDir = LeftColumn->current().value().second;
|
||||
LeftColumn->clear();
|
||||
LeftColumn->reset();
|
||||
itsBrowsedDir = Dirs->current().value().second;
|
||||
Dirs->clear();
|
||||
Dirs->reset();
|
||||
}
|
||||
else
|
||||
ShowMessage("No subdirs found");
|
||||
ShowMessage("No subdirectories found");
|
||||
}
|
||||
else if (w == FParserDialog)
|
||||
{
|
||||
@@ -652,8 +606,8 @@ void TagEditor::EnterPressed()
|
||||
TagTypes->setHighlightColor(Config.main_highlight_color);
|
||||
TagTypes->reset();
|
||||
w->refresh();
|
||||
w = LeftColumn;
|
||||
LeftColumn->setHighlightColor(Config.active_column_color);
|
||||
w = Dirs;
|
||||
Dirs->setHighlightColor(Config.active_column_color);
|
||||
Mpd.UpdateDirectory(getSharedDirectory(Tags->beginV(), Tags->endV()));
|
||||
}
|
||||
else
|
||||
@@ -668,16 +622,7 @@ void TagEditor::SpacePressed()
|
||||
{
|
||||
Tags->current().setSelected(!Tags->current().isSelected());
|
||||
w->scroll(NC::wDown);
|
||||
return;
|
||||
}
|
||||
if (w != LeftColumn)
|
||||
return;
|
||||
|
||||
Config.albums_in_tag_editor = !Config.albums_in_tag_editor;
|
||||
w = LeftColumn = Config.albums_in_tag_editor ? Albums : Dirs;
|
||||
ShowMessage("Switched to %s view", Config.albums_in_tag_editor ? "albums" : "directories");
|
||||
LeftColumn->display();
|
||||
Tags->clear();
|
||||
}
|
||||
|
||||
void TagEditor::MouseButtonPressed(MEVENT me)
|
||||
@@ -718,16 +663,16 @@ void TagEditor::MouseButtonPressed(MEVENT me)
|
||||
ScrollpadMouseButtonPressed(FParserHelper, me);
|
||||
}
|
||||
}
|
||||
else if (!LeftColumn->empty() && LeftColumn->hasCoords(me.x, me.y))
|
||||
else if (!Dirs->empty() && Dirs->hasCoords(me.x, me.y))
|
||||
{
|
||||
if (w != LeftColumn)
|
||||
if (w != Dirs)
|
||||
{
|
||||
PrevColumn();
|
||||
PrevColumn();
|
||||
}
|
||||
if (size_t(me.y) < LeftColumn->size() && (me.bstate & (BUTTON1_PRESSED | BUTTON3_PRESSED)))
|
||||
if (size_t(me.y) < Dirs->size() && (me.bstate & (BUTTON1_PRESSED | BUTTON3_PRESSED)))
|
||||
{
|
||||
LeftColumn->Goto(me.y);
|
||||
Dirs->Goto(me.y);
|
||||
if (me.bstate & BUTTON1_PRESSED)
|
||||
EnterPressed();
|
||||
else
|
||||
@@ -740,7 +685,7 @@ void TagEditor::MouseButtonPressed(MEVENT me)
|
||||
else if (!TagTypes->empty() && TagTypes->hasCoords(me.x, me.y))
|
||||
{
|
||||
if (w != TagTypes)
|
||||
w == LeftColumn ? NextColumn() : PrevColumn();
|
||||
w == Dirs ? NextColumn() : PrevColumn();
|
||||
if (size_t(me.y) < TagTypes->size() && (me.bstate & (BUTTON1_PRESSED | BUTTON3_PRESSED)))
|
||||
{
|
||||
if (!TagTypes->Goto(me.y))
|
||||
@@ -776,7 +721,7 @@ void TagEditor::MouseButtonPressed(MEVENT me)
|
||||
|
||||
bool TagEditor::allowsFiltering()
|
||||
{
|
||||
return w == LeftColumn || w == Tags;
|
||||
return w == Dirs || w == Tags;
|
||||
}
|
||||
|
||||
std::string TagEditor::currentFilter()
|
||||
@@ -784,8 +729,6 @@ std::string TagEditor::currentFilter()
|
||||
std::string filter;
|
||||
if (w == Dirs)
|
||||
filter = RegexFilter< std::pair<std::string, std::string> >::currentFilter(*Dirs);
|
||||
else if (w == Albums)
|
||||
filter = RegexFilter< std::pair<std::string, std::string> >::currentFilter(*Albums);
|
||||
else if (w == Tags)
|
||||
filter = RegexFilter<MPD::MutableSong>::currentFilter(*Tags);
|
||||
return filter;
|
||||
@@ -800,12 +743,6 @@ void TagEditor::applyFilter(const std::string &filter)
|
||||
auto rx = RegexFilter< std::pair<std::string, std::string> >(filter, Config.regex_type, fun);
|
||||
Dirs->filter(Dirs->begin(), Dirs->end(), rx);
|
||||
}
|
||||
else if (w == Albums)
|
||||
{
|
||||
Albums->showAll();
|
||||
auto rx = RegexFilter< std::pair<std::string, std::string> >(filter, Config.regex_type, AlbumEntryMatcher);
|
||||
Albums->filter(Albums->begin(), Albums->end(), rx);
|
||||
}
|
||||
else if (w == Tags)
|
||||
{
|
||||
Tags->showAll();
|
||||
@@ -818,7 +755,7 @@ void TagEditor::applyFilter(const std::string &filter)
|
||||
|
||||
bool TagEditor::allowsSearching()
|
||||
{
|
||||
return w == LeftColumn || w == Tags;
|
||||
return w == Dirs || w == Tags;
|
||||
}
|
||||
|
||||
bool TagEditor::search(const std::string &constraint)
|
||||
@@ -830,11 +767,6 @@ bool TagEditor::search(const std::string &constraint)
|
||||
auto rx = RegexFilter< std::pair<std::string, std::string> >(constraint, Config.regex_type, fun);
|
||||
result = Dirs->search(Dirs->begin(), Dirs->end(), rx);
|
||||
}
|
||||
else if (w == Albums)
|
||||
{
|
||||
auto rx = RegexFilter< std::pair<std::string, std::string> >(constraint, Config.regex_type, AlbumEntryMatcher);
|
||||
result = Albums->search(Albums->begin(), Albums->end(), rx);
|
||||
}
|
||||
else if (w == Tags)
|
||||
{
|
||||
auto rx = RegexFilter<MPD::MutableSong>(constraint, Config.regex_type, SongEntryMatcher);
|
||||
@@ -847,8 +779,6 @@ void TagEditor::nextFound(bool wrap)
|
||||
{
|
||||
if (w == Dirs)
|
||||
Dirs->nextFound(wrap);
|
||||
else if (w == Albums)
|
||||
Albums->nextFound(wrap);
|
||||
else if (w == Tags)
|
||||
Tags->nextFound(wrap);
|
||||
}
|
||||
@@ -857,8 +787,6 @@ void TagEditor::prevFound(bool wrap)
|
||||
{
|
||||
if (w == Dirs)
|
||||
Dirs->prevFound(wrap);
|
||||
else if (w == Albums)
|
||||
Albums->prevFound(wrap);
|
||||
else if (w == Tags)
|
||||
Tags->prevFound(wrap);
|
||||
}
|
||||
@@ -905,7 +833,7 @@ MPD::SongList TagEditor::getSelectedSongs()
|
||||
|
||||
bool TagEditor::isNextColumnAvailable()
|
||||
{
|
||||
if (w == LeftColumn)
|
||||
if (w == Dirs)
|
||||
{
|
||||
if (!TagTypes->reallyEmpty() && !Tags->reallyEmpty())
|
||||
return true;
|
||||
@@ -924,9 +852,9 @@ bool TagEditor::isNextColumnAvailable()
|
||||
|
||||
bool TagEditor::NextColumn()
|
||||
{
|
||||
if (w == LeftColumn)
|
||||
if (w == Dirs)
|
||||
{
|
||||
LeftColumn->setHighlightColor(Config.main_highlight_color);
|
||||
Dirs->setHighlightColor(Config.main_highlight_color);
|
||||
w->refresh();
|
||||
w = TagTypes;
|
||||
TagTypes->setHighlightColor(Config.active_column_color);
|
||||
@@ -956,12 +884,12 @@ bool TagEditor::isPrevColumnAvailable()
|
||||
{
|
||||
if (w == Tags)
|
||||
{
|
||||
if (!TagTypes->reallyEmpty() && !LeftColumn->reallyEmpty())
|
||||
if (!TagTypes->reallyEmpty() && !Dirs->reallyEmpty())
|
||||
return true;
|
||||
}
|
||||
else if (w == TagTypes)
|
||||
{
|
||||
if (!LeftColumn->reallyEmpty())
|
||||
if (!Dirs->reallyEmpty())
|
||||
return true;
|
||||
}
|
||||
else if (w == FParserHelper)
|
||||
@@ -985,8 +913,8 @@ bool TagEditor::PrevColumn()
|
||||
{
|
||||
TagTypes->setHighlightColor(Config.main_highlight_color);
|
||||
w->refresh();
|
||||
w = LeftColumn;
|
||||
LeftColumn->setHighlightColor(Config.active_column_color);
|
||||
w = Dirs;
|
||||
Dirs->setHighlightColor(Config.active_column_color);
|
||||
return true;
|
||||
}
|
||||
else if (w == FParserHelper)
|
||||
@@ -1009,14 +937,6 @@ void TagEditor::LocateSong(const MPD::Song &s)
|
||||
if (s.getDirectory().empty())
|
||||
return;
|
||||
|
||||
if (LeftColumn == Albums)
|
||||
{
|
||||
Config.albums_in_tag_editor = false;
|
||||
if (w == LeftColumn)
|
||||
w = Dirs;
|
||||
LeftColumn = Dirs;
|
||||
}
|
||||
|
||||
if (Global::myScreen != this)
|
||||
SwitchTo();
|
||||
|
||||
@@ -1394,11 +1314,6 @@ bool DirEntryMatcher(const Regex &rx, const std::pair<std::string, std::string>
|
||||
return rx.match(dir.first);
|
||||
}
|
||||
|
||||
bool AlbumEntryMatcher(const Regex &rx, const std::pair<std::string, std::string> &dir)
|
||||
{
|
||||
return rx.match(dir.first);
|
||||
}
|
||||
|
||||
bool SongEntryMatcher(const Regex &rx, const MPD::MutableSong &s)
|
||||
{
|
||||
return rx.match(SongToString(s));
|
||||
|
||||
@@ -78,8 +78,6 @@ class TagEditor : public Screen<NC::Window>, public Filterable, public HasSongs,
|
||||
|
||||
void LocateSong(const MPD::Song &s);
|
||||
|
||||
NC::Menu< std::pair<std::string, std::string> > *LeftColumn;
|
||||
NC::Menu< std::pair<std::string, std::string> > *Albums;
|
||||
NC::Menu< std::pair<std::string, std::string> > *Dirs;
|
||||
NC::Menu<std::string> *TagTypes;
|
||||
NC::Menu<MPD::MutableSong> *Tags;
|
||||
|
||||
Reference in new issue
Block a user