diff --git a/src/libs/services/database/include/services/database/Types.hpp b/src/libs/services/database/include/services/database/Types.hpp index f618e8af..a07ec274 100644 --- a/src/libs/services/database/include/services/database/Types.hpp +++ b/src/libs/services/database/include/services/database/Types.hpp @@ -46,7 +46,7 @@ namespace Database { Range range; std::vector results; - bool moreResults; + bool moreResults{}; RangeResults getSubRange(Range subRange) { diff --git a/src/lms/ui/explore/ArtistCollector.cpp b/src/lms/ui/explore/ArtistCollector.cpp index e05c5eba..fdcd804a 100644 --- a/src/lms/ui/explore/ArtistCollector.cpp +++ b/src/lms/ui/explore/ArtistCollector.cpp @@ -38,9 +38,12 @@ namespace UserInterface Feedback::IFeedbackService& feedbackService{ *Service::get() }; Scrobbling::IScrobblingService& scrobblingService{ *Service::get() }; - range = getActualRange(range); - RangeResults artists; + + range = getActualRange(range); + if (range.size == 0) + return artists; + switch (getMode()) { case Mode::Random: @@ -76,11 +79,11 @@ namespace UserInterface case Mode::Search: { + // do not sort results as we search in both name and sort names, sorting may be very long Artist::FindParameters params; params.setClusters(getFilters().getClusterIds()); params.setKeywords(getSearchKeywords()); params.setLinkType(_linkType); - params.setSortMethod(ArtistSortMethod::BySortName); params.setRange(range); { diff --git a/src/lms/ui/explore/DatabaseCollectorBase.cpp b/src/lms/ui/explore/DatabaseCollectorBase.cpp index 7a161fd7..16afcc7f 100644 --- a/src/lms/ui/explore/DatabaseCollectorBase.cpp +++ b/src/lms/ui/explore/DatabaseCollectorBase.cpp @@ -23,34 +23,35 @@ namespace UserInterface { - DatabaseCollectorBase::DatabaseCollectorBase(Filters& filters, Mode defaultMode, std::size_t maxCount) - : _filters {filters} - , _mode {defaultMode} - , _maxCount {maxCount} - { - } + DatabaseCollectorBase::DatabaseCollectorBase(Filters& filters, Mode defaultMode, std::size_t maxCount) + : _filters{ filters } + , _mode{ defaultMode } + , _maxCount{ maxCount } + { + } - DatabaseCollectorBase::Range - DatabaseCollectorBase::getActualRange(Range range) const - { - assert(range.offset < _maxCount); - range.size = std::min(_maxCount - range.offset, range.size); + DatabaseCollectorBase::Range DatabaseCollectorBase::getActualRange(Range range) const + { + assert(range.size > 0); - return range; - } + if (range.offset < _maxCount) + range.size = std::min(_maxCount - range.offset, range.size); + else + range.size = 0; - std::size_t - DatabaseCollectorBase::getMaxCount() const - { - return _maxCount; - } + return range; + } - void - DatabaseCollectorBase::setSearch(std::string_view searchText) - { - _searchText = searchText; - _searchKeywords = StringUtils::splitString(_searchText, " "); - } + std::size_t DatabaseCollectorBase::getMaxCount() const + { + return _maxCount; + } + + void DatabaseCollectorBase::setSearch(std::string_view searchText) + { + _searchText = searchText; + _searchKeywords = StringUtils::splitString(_searchText, " "); + } } // ns UserInterface diff --git a/src/lms/ui/explore/DatabaseCollectorBase.hpp b/src/lms/ui/explore/DatabaseCollectorBase.hpp index 66732c32..2d654779 100644 --- a/src/lms/ui/explore/DatabaseCollectorBase.hpp +++ b/src/lms/ui/explore/DatabaseCollectorBase.hpp @@ -29,44 +29,43 @@ namespace UserInterface { - class Filters; + class Filters; - class DatabaseCollectorBase - { - public: - using Range = Database::Range; + class DatabaseCollectorBase + { + public: + using Range = Database::Range; - virtual ~DatabaseCollectorBase() {} + virtual ~DatabaseCollectorBase() {} - enum class Mode - { - Random, - Starred, - RecentlyPlayed, - RecentlyAdded, - MostPlayed, - Search, - All - }; + enum class Mode + { + Random, + Starred, + RecentlyPlayed, + RecentlyAdded, + MostPlayed, + Search, + All + }; - DatabaseCollectorBase(Filters& filters, Mode defaultMode, std::size_t maxCount); + DatabaseCollectorBase(Filters& filters, Mode defaultMode, std::size_t maxCount); - Mode getMode() const { return _mode; } - void setMode(Mode mode) { _mode = mode; } - void setSearch(std::string_view search); + Mode getMode() const { return _mode; } + void setMode(Mode mode) { _mode = mode; } + void setSearch(std::string_view search); - protected: - Range getActualRange(Range range) const; - std::size_t getMaxCount() const; - Filters& getFilters() { return _filters; } - const std::vector& getSearchKeywords() const { return _searchKeywords; } + protected: + Range getActualRange(Range range) const; + std::size_t getMaxCount() const; + Filters& getFilters() { return _filters; } + const std::vector& getSearchKeywords() const { return _searchKeywords; } - private: - Filters& _filters; - std::string _searchText; - std::vector _searchKeywords; - Mode _mode; - std::size_t _maxCount; - }; + private: + Filters& _filters; + std::string _searchText; + std::vector _searchKeywords; + Mode _mode; + std::size_t _maxCount; + }; } // ns UserInterface - diff --git a/src/lms/ui/explore/ReleaseCollector.cpp b/src/lms/ui/explore/ReleaseCollector.cpp index 9caea832..3693ad50 100644 --- a/src/lms/ui/explore/ReleaseCollector.cpp +++ b/src/lms/ui/explore/ReleaseCollector.cpp @@ -41,9 +41,11 @@ namespace UserInterface Feedback::IFeedbackService& feedbackService{ *Service::get() }; Scrobbling::IScrobblingService& scrobblingService{ *Service::get() }; - range = getActualRange(range); - RangeResults releases; + range = getActualRange(range); + if (range.size == 0) + return releases; + switch (getMode()) { case Mode::Random: diff --git a/src/lms/ui/explore/SearchView.hpp b/src/lms/ui/explore/SearchView.hpp index bc5c33df..71581760 100644 --- a/src/lms/ui/explore/SearchView.hpp +++ b/src/lms/ui/explore/SearchView.hpp @@ -62,9 +62,9 @@ namespace UserInterface }; static inline std::unordered_map _maxCounts { - {Mode::Artist, 8000}, - {Mode::Release, 4000}, - {Mode::Track, 4000}, + {Mode::Artist, 1000}, + {Mode::Release, 504}, + {Mode::Track, 500}, }; std::size_t getBatchSize(Mode mode) const; std::size_t getMaxCount(Mode mode) const; diff --git a/src/lms/ui/explore/TrackCollector.cpp b/src/lms/ui/explore/TrackCollector.cpp index 596edcd7..3eb5e17e 100644 --- a/src/lms/ui/explore/TrackCollector.cpp +++ b/src/lms/ui/explore/TrackCollector.cpp @@ -41,9 +41,11 @@ namespace UserInterface Feedback::IFeedbackService& feedbackService{*Service::get()}; Scrobbling::IScrobblingService& scrobblingService {*Service::get()}; - range = getActualRange(range); - RangeResults tracks; + range = getActualRange(range); + if (range.size == 0) + return tracks; + switch (getMode()) { case Mode::Random: