From 1a525a9e252bb5c0d88075547fe7ff358fe335dd Mon Sep 17 00:00:00 2001 From: emeric Date: Tue, 21 Jan 2025 17:01:22 +0100 Subject: [PATCH] Added new sort method 'recently modified', ref #571 --- approot/explore.xml | 1 + src/lms/ui/explore/ArtistCollector.cpp | 17 +++++++++++++++++ src/lms/ui/explore/DatabaseCollectorBase.hpp | 1 + src/lms/ui/explore/ReleaseCollector.cpp | 16 ++++++++++++++++ src/lms/ui/explore/SortModeSelector.hpp | 1 + src/lms/ui/explore/TrackCollector.cpp | 16 ++++++++++++++++ 6 files changed, 52 insertions(+) diff --git a/approot/explore.xml b/approot/explore.xml index 21d93199..d3dc2f81 100644 --- a/approot/explore.xml +++ b/approot/explore.xml @@ -63,6 +63,7 @@
  • ${recently-played class="dropdown-item"}
  • ${most-played class="dropdown-item"}
  • ${recently-added class="dropdown-item"}
  • +
  • ${recently-modified class="dropdown-item"}
  • ${all class="dropdown-item"}
  • diff --git a/src/lms/ui/explore/ArtistCollector.cpp b/src/lms/ui/explore/ArtistCollector.cpp index dd2ff253..6b7a165f 100644 --- a/src/lms/ui/explore/ArtistCollector.cpp +++ b/src/lms/ui/explore/ArtistCollector.cpp @@ -109,6 +109,23 @@ namespace lms::ui break; } + case Mode::RecentlyModified: + { + Artist::FindParameters params; + params.setClusters(filters.getClusters()); + params.setKeywords(getSearchKeywords()); + params.setMediaLibrary(filters.getMediaLibrary()); + params.setLinkType(_linkType); + params.setSortMethod(ArtistSortMethod::LastWrittenDesc); + params.setRange(range); + + { + auto transaction{ LmsApp->getDbSession().createReadTransaction() }; + artists = Artist::findIds(LmsApp->getDbSession(), params); + } + break; + } + case Mode::All: { Artist::FindParameters params; diff --git a/src/lms/ui/explore/DatabaseCollectorBase.hpp b/src/lms/ui/explore/DatabaseCollectorBase.hpp index 956abbe8..5bc756ae 100644 --- a/src/lms/ui/explore/DatabaseCollectorBase.hpp +++ b/src/lms/ui/explore/DatabaseCollectorBase.hpp @@ -43,6 +43,7 @@ namespace lms::ui Starred, RecentlyPlayed, RecentlyAdded, + RecentlyModified, MostPlayed, All }; diff --git a/src/lms/ui/explore/ReleaseCollector.cpp b/src/lms/ui/explore/ReleaseCollector.cpp index 8ff416c5..df5e52fe 100644 --- a/src/lms/ui/explore/ReleaseCollector.cpp +++ b/src/lms/ui/explore/ReleaseCollector.cpp @@ -102,6 +102,22 @@ namespace lms::ui break; } + case Mode::RecentlyModified: + { + Release::FindParameters params; + params.setClusters(getFilters().getClusters()); + params.setMediaLibrary(getFilters().getMediaLibrary()); + params.setKeywords(getSearchKeywords()); + params.setSortMethod(ReleaseSortMethod::LastWrittenDesc); + params.setRange(range); + + { + auto transaction{ LmsApp->getDbSession().createReadTransaction() }; + releases = Release::findIds(LmsApp->getDbSession(), params); + } + break; + } + case Mode::All: { Release::FindParameters params; diff --git a/src/lms/ui/explore/SortModeSelector.hpp b/src/lms/ui/explore/SortModeSelector.hpp index a160f20c..2c79e77f 100644 --- a/src/lms/ui/explore/SortModeSelector.hpp +++ b/src/lms/ui/explore/SortModeSelector.hpp @@ -36,6 +36,7 @@ namespace lms::ui bindItem("recently-played", Wt::WString::tr("Lms.Explore.recently-played"), DatabaseCollectorBase::Mode::RecentlyPlayed); bindItem("most-played", Wt::WString::tr("Lms.Explore.most-played"), DatabaseCollectorBase::Mode::MostPlayed); bindItem("recently-added", Wt::WString::tr("Lms.Explore.recently-added"), DatabaseCollectorBase::Mode::RecentlyAdded); + bindItem("recently-modified", Wt::WString::tr("Lms.Explore.recently-modified"), DatabaseCollectorBase::Mode::RecentlyModified); bindItem("all", Wt::WString::tr("Lms.Explore.all"), DatabaseCollectorBase::Mode::All); } }; diff --git a/src/lms/ui/explore/TrackCollector.cpp b/src/lms/ui/explore/TrackCollector.cpp index 66b321bd..7e5500c9 100644 --- a/src/lms/ui/explore/TrackCollector.cpp +++ b/src/lms/ui/explore/TrackCollector.cpp @@ -103,6 +103,22 @@ namespace lms::ui break; } + case Mode::RecentlyModified: + { + Track::FindParameters params; + params.setClusters(getFilters().getClusters()); + params.setMediaLibrary(getFilters().getMediaLibrary()); + params.setKeywords(getSearchKeywords()); + params.setSortMethod(TrackSortMethod::LastWrittenDesc); + params.setRange(range); + + { + auto transaction{ LmsApp->getDbSession().createReadTransaction() }; + tracks = Track::findIds(LmsApp->getDbSession(), params); + } + break; + } + case Mode::All: { Track::FindParameters params;