[UI/MOBILE] Handling year in release
This commit is contained in:
@@ -140,4 +140,28 @@ Release::getByFilter(Wt::Dbo::Session& session, SearchFilter filter, int offset,
|
||||
return std::vector<pointer>(res.begin(), res.end());
|
||||
}
|
||||
|
||||
int
|
||||
Release::getReleaseYear(bool original) const
|
||||
{
|
||||
assert(session());
|
||||
|
||||
// TODO something better
|
||||
auto tracks = Track::getByFilter(*session(), SearchFilter::ById(SearchFilter::Field::Release, this->id()), -1, 1);
|
||||
|
||||
if (tracks.empty())
|
||||
return 0;
|
||||
|
||||
boost::gregorian::date date;
|
||||
|
||||
if (original)
|
||||
date = tracks.front()->getOriginalDate().date();
|
||||
else
|
||||
date = tracks.front()->getDate().date();
|
||||
|
||||
if (date.is_special())
|
||||
return 0;
|
||||
|
||||
return date.year();
|
||||
}
|
||||
|
||||
} // namespace Database
|
||||
|
||||
@@ -53,6 +53,9 @@ class Release : public Wt::Dbo::Dbo<Release>
|
||||
// Create
|
||||
static pointer create(Wt::Dbo::Session& session, const std::string& name, const std::string& MBID = "");
|
||||
|
||||
// Utility functions
|
||||
int getReleaseYear(bool originalDate = false) const; // 0 if unknown or various
|
||||
|
||||
// MVC models for the user interface
|
||||
// ID, Release name, year, track counts
|
||||
typedef boost::tuple<id_type, std::string, boost::posix_time::ptime, int> UIQueryResult;
|
||||
|
||||
@@ -36,6 +36,8 @@
|
||||
|
||||
#include "MobileAudio.hpp"
|
||||
|
||||
#define SEARCH_NB_ITEMS 4
|
||||
|
||||
namespace UserInterface {
|
||||
namespace Mobile {
|
||||
|
||||
@@ -93,9 +95,9 @@ Audio::Audio(Wt::WContainerWidget *parent)
|
||||
// Song
|
||||
std::vector<std::string> keywords = splitStrings(edit->text().toUTF8(), " ");;
|
||||
|
||||
releaseSearch->search(SearchFilter::ByName(SearchFilter::Field::Release, keywords), 4);
|
||||
artistSearch->search(SearchFilter::ByName(SearchFilter::Field::Artist, keywords), 4);
|
||||
trackSearch->search(SearchFilter::ByName(SearchFilter::Field::Track, keywords), 4);
|
||||
releaseSearch->search(SearchFilter::ByName(SearchFilter::Field::Release, keywords), SEARCH_NB_ITEMS);
|
||||
artistSearch->search(SearchFilter::ByName(SearchFilter::Field::Artist, keywords), SEARCH_NB_ITEMS);
|
||||
trackSearch->search(SearchFilter::ByName(SearchFilter::Field::Track, keywords), SEARCH_NB_ITEMS);
|
||||
|
||||
artistSearch->show();
|
||||
releaseSearch->show();
|
||||
@@ -175,9 +177,9 @@ Audio::Audio(Wt::WContainerWidget *parent)
|
||||
|
||||
// Initially, populate the widgets using an empty search
|
||||
{
|
||||
artistSearch->search(SearchFilter(), 3);
|
||||
releaseSearch->search(SearchFilter(), 3);
|
||||
trackSearch->search(SearchFilter(), 3);
|
||||
artistSearch->search(SearchFilter(), SEARCH_NB_ITEMS);
|
||||
releaseSearch->search(SearchFilter(), SEARCH_NB_ITEMS);
|
||||
trackSearch->search(SearchFilter(), SEARCH_NB_ITEMS);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -54,6 +54,10 @@ TrackSearch::TrackSearch(Wt::WContainerWidget *parent)
|
||||
_showMore->setTemplateText(Wt::WString::tr("mobile-search-more"));
|
||||
_showMore->bindString("text", "Tap to show more results...");
|
||||
_showMore->hide();
|
||||
_showMore->clicked().connect(std::bind([=] {
|
||||
_sigMoreTracksSelected();
|
||||
addResults(20);
|
||||
}));
|
||||
}
|
||||
|
||||
void
|
||||
@@ -133,9 +137,9 @@ TrackSearch::addResults(size_t nb)
|
||||
cover->setImageLink(Wt::WLink (LmsApplication::instance()->getCoverResource()->getReleaseUrl(release.id(), 512)));
|
||||
|
||||
releaseContainer->bindWidget("cover", cover);
|
||||
releaseContainer->bindString("artist-name", getArtistNameFromRelease(release));
|
||||
releaseContainer->bindString("artist-name", getArtistNameFromRelease(release), Wt::PlainText);
|
||||
releaseContainer->bindString("release-name", release->getName(), Wt::PlainText);
|
||||
releaseContainer->bindInt("year", 2001);
|
||||
releaseContainer->bindInt("year", release->getReleaseYear());
|
||||
|
||||
_currentTrackContainer = new Wt::WContainerWidget();
|
||||
releaseContainer->bindWidget("track-container", _currentTrackContainer);
|
||||
@@ -165,13 +169,7 @@ TrackSearch::addResults(size_t nb)
|
||||
}
|
||||
|
||||
if (moreResults)
|
||||
{
|
||||
_showMore->clicked().connect(std::bind([=] {
|
||||
_sigMoreTracksSelected();
|
||||
addResults(20);
|
||||
}));
|
||||
_showMore->show();
|
||||
}
|
||||
else
|
||||
_showMore->hide();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user