[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());
|
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
|
} // namespace Database
|
||||||
|
|||||||
@@ -53,6 +53,9 @@ class Release : public Wt::Dbo::Dbo<Release>
|
|||||||
// Create
|
// Create
|
||||||
static pointer create(Wt::Dbo::Session& session, const std::string& name, const std::string& MBID = "");
|
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
|
// MVC models for the user interface
|
||||||
// ID, Release name, year, track counts
|
// ID, Release name, year, track counts
|
||||||
typedef boost::tuple<id_type, std::string, boost::posix_time::ptime, int> UIQueryResult;
|
typedef boost::tuple<id_type, std::string, boost::posix_time::ptime, int> UIQueryResult;
|
||||||
|
|||||||
@@ -36,6 +36,8 @@
|
|||||||
|
|
||||||
#include "MobileAudio.hpp"
|
#include "MobileAudio.hpp"
|
||||||
|
|
||||||
|
#define SEARCH_NB_ITEMS 4
|
||||||
|
|
||||||
namespace UserInterface {
|
namespace UserInterface {
|
||||||
namespace Mobile {
|
namespace Mobile {
|
||||||
|
|
||||||
@@ -93,9 +95,9 @@ Audio::Audio(Wt::WContainerWidget *parent)
|
|||||||
// Song
|
// Song
|
||||||
std::vector<std::string> keywords = splitStrings(edit->text().toUTF8(), " ");;
|
std::vector<std::string> keywords = splitStrings(edit->text().toUTF8(), " ");;
|
||||||
|
|
||||||
releaseSearch->search(SearchFilter::ByName(SearchFilter::Field::Release, keywords), 4);
|
releaseSearch->search(SearchFilter::ByName(SearchFilter::Field::Release, keywords), SEARCH_NB_ITEMS);
|
||||||
artistSearch->search(SearchFilter::ByName(SearchFilter::Field::Artist, keywords), 4);
|
artistSearch->search(SearchFilter::ByName(SearchFilter::Field::Artist, keywords), SEARCH_NB_ITEMS);
|
||||||
trackSearch->search(SearchFilter::ByName(SearchFilter::Field::Track, keywords), 4);
|
trackSearch->search(SearchFilter::ByName(SearchFilter::Field::Track, keywords), SEARCH_NB_ITEMS);
|
||||||
|
|
||||||
artistSearch->show();
|
artistSearch->show();
|
||||||
releaseSearch->show();
|
releaseSearch->show();
|
||||||
@@ -175,9 +177,9 @@ Audio::Audio(Wt::WContainerWidget *parent)
|
|||||||
|
|
||||||
// Initially, populate the widgets using an empty search
|
// Initially, populate the widgets using an empty search
|
||||||
{
|
{
|
||||||
artistSearch->search(SearchFilter(), 3);
|
artistSearch->search(SearchFilter(), SEARCH_NB_ITEMS);
|
||||||
releaseSearch->search(SearchFilter(), 3);
|
releaseSearch->search(SearchFilter(), SEARCH_NB_ITEMS);
|
||||||
trackSearch->search(SearchFilter(), 3);
|
trackSearch->search(SearchFilter(), SEARCH_NB_ITEMS);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,6 +54,10 @@ TrackSearch::TrackSearch(Wt::WContainerWidget *parent)
|
|||||||
_showMore->setTemplateText(Wt::WString::tr("mobile-search-more"));
|
_showMore->setTemplateText(Wt::WString::tr("mobile-search-more"));
|
||||||
_showMore->bindString("text", "Tap to show more results...");
|
_showMore->bindString("text", "Tap to show more results...");
|
||||||
_showMore->hide();
|
_showMore->hide();
|
||||||
|
_showMore->clicked().connect(std::bind([=] {
|
||||||
|
_sigMoreTracksSelected();
|
||||||
|
addResults(20);
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -133,9 +137,9 @@ TrackSearch::addResults(size_t nb)
|
|||||||
cover->setImageLink(Wt::WLink (LmsApplication::instance()->getCoverResource()->getReleaseUrl(release.id(), 512)));
|
cover->setImageLink(Wt::WLink (LmsApplication::instance()->getCoverResource()->getReleaseUrl(release.id(), 512)));
|
||||||
|
|
||||||
releaseContainer->bindWidget("cover", cover);
|
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->bindString("release-name", release->getName(), Wt::PlainText);
|
||||||
releaseContainer->bindInt("year", 2001);
|
releaseContainer->bindInt("year", release->getReleaseYear());
|
||||||
|
|
||||||
_currentTrackContainer = new Wt::WContainerWidget();
|
_currentTrackContainer = new Wt::WContainerWidget();
|
||||||
releaseContainer->bindWidget("track-container", _currentTrackContainer);
|
releaseContainer->bindWidget("track-container", _currentTrackContainer);
|
||||||
@@ -165,13 +169,7 @@ TrackSearch::addResults(size_t nb)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (moreResults)
|
if (moreResults)
|
||||||
{
|
|
||||||
_showMore->clicked().connect(std::bind([=] {
|
|
||||||
_sigMoreTracksSelected();
|
|
||||||
addResults(20);
|
|
||||||
}));
|
|
||||||
_showMore->show();
|
_showMore->show();
|
||||||
}
|
|
||||||
else
|
else
|
||||||
_showMore->hide();
|
_showMore->hide();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user