[UI/MOBILE] Handling year in release

This commit is contained in:
emeric
2015-11-22 15:01:00 +01:00
parent fc88cce33e
commit 963e5911e3
4 changed files with 41 additions and 14 deletions
+24
View File
@@ -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
+3
View File
@@ -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;
+8 -6
View File
@@ -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);
} }
} }
+6 -8
View File
@@ -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();
} }