From f7611e9fb09166afd38f7ec75051e0f49a531890 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Sat, 30 Aug 2014 15:39:36 +0200 Subject: [PATCH] playlist editor: add data fetch delay after position changes --- src/actions.cpp | 2 ++ src/playlist_editor.cpp | 14 ++++++++++++-- src/playlist_editor.h | 4 ++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/actions.cpp b/src/actions.cpp index 046d7011..be8bb825 100644 --- a/src/actions.cpp +++ b/src/actions.cpp @@ -2798,6 +2798,8 @@ void listsChangeFinisher() else if (myScreen->isActiveWindow(myPlaylistEditor->Playlists)) { myPlaylistEditor->Content.clear(); + myPlaylistEditor->Content.refresh(); + myPlaylistEditor->updateTimer(); } # ifdef HAVE_TAGLIB_H else if (myScreen->activeWindow() == myTagEditor->Dirs) diff --git a/src/playlist_editor.cpp b/src/playlist_editor.cpp index 7a5c5255..009eedd9 100644 --- a/src/playlist_editor.cpp +++ b/src/playlist_editor.cpp @@ -42,7 +42,9 @@ using Global::MainStartY; PlaylistEditor *myPlaylistEditor; -namespace {// +namespace { + +const auto fetch_delay = boost::posix_time::milliseconds(500); size_t LeftColumnStartX; size_t LeftColumnWidth; @@ -56,6 +58,7 @@ bool SongEntryMatcher(const boost::regex &rx, const MPD::Song &s); } PlaylistEditor::PlaylistEditor() +: m_timer(boost::posix_time::from_time_t(0)) { LeftColumnWidth = COLS/3-1; RightColumnStartX = LeftColumnWidth+1; @@ -152,7 +155,9 @@ void PlaylistEditor::update() Playlists.refresh(); } - if (!Playlists.empty() && (Content.reallyEmpty() || m_content_update_requested)) + if (!Playlists.empty() + && ((Content.reallyEmpty() && Global::Timer - m_timer > fetch_delay) || m_content_update_requested) + ) { m_content_update_requested = false; Content.clearSearchResults(); @@ -535,6 +540,11 @@ void PlaylistEditor::nextColumn() /***********************************************************************/ +void PlaylistEditor::updateTimer() +{ + m_timer = Global::Timer; +} + void PlaylistEditor::Locate(const std::string &name) { update(); diff --git a/src/playlist_editor.h b/src/playlist_editor.h index 9dbeaa03..0183a01e 100644 --- a/src/playlist_editor.h +++ b/src/playlist_editor.h @@ -69,6 +69,8 @@ struct PlaylistEditor: Screen, Filterable, HasColumns, HasSongs, S virtual void nextColumn() OVERRIDE; // private members + void updateTimer(); + void requestPlaylistsUpdate() { m_playlists_update_requested = true; } void requestContentsUpdate() { m_content_update_requested = true; } @@ -87,6 +89,8 @@ private: bool m_playlists_update_requested; bool m_content_update_requested; + + boost::posix_time::ptime m_timer; }; extern PlaylistEditor *myPlaylistEditor;