From e4f4cd68c0a264c7d262163b3cf4546b888bb51c Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Fri, 31 Aug 2012 09:19:45 +0200 Subject: [PATCH] menu: add value iterator --- src/actions.cpp | 2 +- src/media_library.cpp | 8 ++++---- src/menu.h | 28 ++++++++++++++++++++++------ src/tag_editor.cpp | 2 +- 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/actions.cpp b/src/actions.cpp index 34520266..104cae85 100644 --- a/src/actions.cpp +++ b/src/actions.cpp @@ -2205,7 +2205,7 @@ void ToggleBrowserSortMode::Run() ShowMessage("Sort songs by: Name"); break; } - std::sort(myBrowser->Main()->Begin()+(myBrowser->CurrentDir() != "/"), myBrowser->Main()->End(), CaseInsensitiveSorting()); + std::sort(myBrowser->Main()->BeginV()+(myBrowser->CurrentDir() != "/"), myBrowser->Main()->EndV(), CaseInsensitiveSorting()); } bool ToggleLibraryTagType::canBeRun() const diff --git a/src/media_library.cpp b/src/media_library.cpp index 0435f7b1..37d85fc6 100644 --- a/src/media_library.cpp +++ b/src/media_library.cpp @@ -248,7 +248,7 @@ void MediaLibrary::Update() } utf_to_locale(Artists->Current().value()); if (!Albums->Empty()) - std::sort(Albums->Begin(), Albums->End(), SearchConstraintsSorting()); + std::sort(Albums->BeginV(), Albums->EndV(), SearchConstraintsSorting()); if (Albums->Size() > 1) { Albums->AddSeparator(); @@ -306,7 +306,7 @@ void MediaLibrary::Update() } Mpd.BlockIdle(0); if (!Albums->Empty()) - std::sort(Albums->Begin(), Albums->End(), SearchConstraintsSorting()); + std::sort(Albums->BeginV(), Albums->EndV(), SearchConstraintsSorting()); Albums->Refresh(); } @@ -334,9 +334,9 @@ void MediaLibrary::Update() }); if (Albums->Current().value().Date == AllTracksMarker) - std::sort(Songs->Begin(), Songs->End(), SortAllTracks); + std::sort(Songs->BeginV(), Songs->EndV(), SortAllTracks); else - std::sort(Songs->Begin(), Songs->End(), SortSongsByTrack); + std::sort(Songs->BeginV(), Songs->EndV(), SortSongsByTrack); Songs->Window::Clear(); Songs->Refresh(); diff --git a/src/menu.h b/src/menu.h index e8acfad1..ebffdd1d 100644 --- a/src/menu.h +++ b/src/menu.h @@ -215,16 +215,25 @@ template struct Menu : public Window, public List }; typedef ItemIterator< - T, typename std::vector::iterator + Item, typename std::vector::iterator > Iterator; - typedef ItemIterator< - typename std::add_const::type, typename std::vector::const_iterator + const Item, typename std::vector::const_iterator > ConstIterator; typedef std::reverse_iterator ReverseIterator; typedef std::reverse_iterator ConstReverseIterator; + typedef ItemIterator< + T, typename std::vector::iterator + > ValueIterator; + typedef ItemIterator< + typename std::add_const::type, typename std::vector::const_iterator + > ConstValueIterator; + + typedef std::reverse_iterator ReverseValueIterator; + typedef std::reverse_iterator ConstReverseValueIterator; + /// Constructs an empty menu with given parameters /// @param startx X position of left upper corner of constructed menu /// @param starty Y position of left upper corner of constructed menu @@ -522,15 +531,23 @@ template struct Menu : public Window, public List Iterator Begin() { return Iterator(m_options_ptr->begin()); } ConstIterator Begin() const { return ConstIterator(m_options_ptr->begin()); } - Iterator End() { return Iterator(m_options_ptr->end()); } ConstIterator End() const { return ConstIterator(m_options_ptr->end()); } ReverseIterator Rbegin() { return ReverseIterator(End()); } ConstReverseIterator Rbegin() const { return ConstReverseIterator(End()); } - ReverseIterator Rend() { return ReverseIterator(Begin()); } ConstReverseIterator Rend() const { return ConstReverseIterator(Begin()); } + + ValueIterator BeginV() { return ValueIterator(m_options_ptr->begin()); } + ConstValueIterator BeginV() const { return ConstValueIterator(m_options_ptr->begin()); } + ValueIterator EndV() { return ValueIterator(m_options_ptr->end()); } + ConstValueIterator EndV() const { return ConstValueIterator(m_options_ptr->end()); } + + ReverseValueIterator RbeginV() { return ReverseValueIterator(End()); } + ConstReverseIterator RbeginV() const { return ConstReverseValueIterator(End()); } + ReverseValueIterator RendV() { return ReverseValueIterator(Begin()); } + ConstReverseValueIterator RendV() const { return ConstReverseValueIterator(Begin()); } private: /// Clears filter, filtered data etc. @@ -1063,4 +1080,3 @@ template typename Menu::Item &Menu::operator[](size_t pos) } #endif - diff --git a/src/tag_editor.cpp b/src/tag_editor.cpp index dc657d16..ff306765 100644 --- a/src/tag_editor.cpp +++ b/src/tag_editor.cpp @@ -255,7 +255,7 @@ void TagEditor::Update() Albums->AddItem(std::make_pair(l[0].toString(Config.tag_editor_album_format), *it)); } Mpd.BlockIdle(0); - std::sort(Albums->Begin(), Albums->End(), CaseInsensitiveSorting()); + std::sort(Albums->BeginV(), Albums->EndV(), CaseInsensitiveSorting()); } else {