[UI/MOBILE] Display disc number only if necessary
This commit is contained in:
@@ -526,9 +526,15 @@ Updater::processAudioFile( const boost::filesystem::path& file, Stats& stats)
|
||||
if (items.find(MetaData::Type::TrackNumber) != items.end())
|
||||
track.modify()->setTrackNumber( boost::any_cast<std::size_t>(items[MetaData::Type::TrackNumber]) );
|
||||
|
||||
if (items.find(MetaData::Type::TotalTrack) != items.end())
|
||||
track.modify()->setTotalTrackNumber( boost::any_cast<std::size_t>(items[MetaData::Type::TotalTrack]) );
|
||||
|
||||
if (items.find(MetaData::Type::DiscNumber) != items.end())
|
||||
track.modify()->setDiscNumber( boost::any_cast<std::size_t>(items[MetaData::Type::DiscNumber]) );
|
||||
|
||||
if (items.find(MetaData::Type::TotalDisc) != items.end())
|
||||
track.modify()->setTotalDiscNumber( boost::any_cast<std::size_t>(items[MetaData::Type::TotalDisc]) );
|
||||
|
||||
if (items.find(MetaData::Type::Date) != items.end())
|
||||
track.modify()->setDate( boost::any_cast<boost::posix_time::ptime>(items[MetaData::Type::Date]) );
|
||||
|
||||
|
||||
@@ -30,7 +30,9 @@ namespace Database {
|
||||
Track::Track(const boost::filesystem::path& p)
|
||||
:
|
||||
_trackNumber(0),
|
||||
_totalTrackNumber(0),
|
||||
_discNumber(0),
|
||||
_totalDiscNumber(0),
|
||||
_filePath( p.string() ),
|
||||
_coverType(CoverType::None)
|
||||
{
|
||||
|
||||
@@ -136,7 +136,9 @@ class Track
|
||||
|
||||
// Accessors
|
||||
void setTrackNumber(int num) { _trackNumber = num; }
|
||||
void setTotalTrackNumber(int num) { _totalTrackNumber = num; }
|
||||
void setDiscNumber(int num) { _discNumber = num; }
|
||||
void setTotalDiscNumber(int num) { _totalDiscNumber = num; }
|
||||
void setName(const std::string& name) { _name = std::string(name, 0, _maxNameLength); }
|
||||
void setDuration(boost::posix_time::time_duration duration) { _duration = duration; }
|
||||
void setLastWriteTime(boost::posix_time::ptime time) { _fileLastWrite = time; }
|
||||
@@ -146,13 +148,15 @@ class Track
|
||||
void setOriginalDate(const boost::posix_time::ptime& date) { _originalDate = date; }
|
||||
void setGenres(const std::string& genreList) { _genreList = genreList; }
|
||||
void setCoverType(CoverType coverType) { _coverType = coverType; }
|
||||
void setMBID(const std::string& MBID) { _MBID = MBID; }
|
||||
void setMBID(const std::string& MBID) { _MBID = MBID; }
|
||||
void setArtist(Wt::Dbo::ptr<Artist> artist) { _artist = artist; }
|
||||
void setRelease(Wt::Dbo::ptr<Release> release) { _release = release; }
|
||||
void setGenres(std::vector<Genre::pointer> genres);
|
||||
|
||||
int getTrackNumber(void) const { return _trackNumber; }
|
||||
int getTotalTrackNumber(void) const { return _totalTrackNumber; }
|
||||
int getDiscNumber(void) const { return _discNumber; }
|
||||
int getTotalDiscNumber(void) const { return _totalDiscNumber; }
|
||||
std::string getName(void) const { return _name; }
|
||||
boost::filesystem::path getPath(void) const { return _filePath; }
|
||||
boost::posix_time::time_duration getDuration(void) const { return _duration; }
|
||||
@@ -172,7 +176,9 @@ class Track
|
||||
void persist(Action& a)
|
||||
{
|
||||
Wt::Dbo::field(a, _trackNumber, "track_number");
|
||||
Wt::Dbo::field(a, _totalTrackNumber, "total_track_number");
|
||||
Wt::Dbo::field(a, _discNumber, "disc_number");
|
||||
Wt::Dbo::field(a, _totalDiscNumber, "total_disc_number");
|
||||
Wt::Dbo::field(a, _name, "name");
|
||||
Wt::Dbo::field(a, _duration, "duration");
|
||||
Wt::Dbo::field(a, _date, "date");
|
||||
@@ -197,7 +203,9 @@ class Track
|
||||
static const std::size_t _maxNameLength = 128;
|
||||
|
||||
int _trackNumber;
|
||||
int _totalTrackNumber;
|
||||
int _discNumber;
|
||||
int _totalDiscNumber;
|
||||
std::string _name;
|
||||
std::string _artistName;
|
||||
std::string _releaseName;
|
||||
|
||||
@@ -114,16 +114,43 @@ AvFormat::parse(const boost::filesystem::path& p, Items& items)
|
||||
items.insert( std::make_pair(MetaData::Type::Album, stringTrim( stringToUTF8(it->second)) ));
|
||||
else if (boost::iequals(it->first, "title"))
|
||||
items.insert( std::make_pair(MetaData::Type::Title, stringTrim( stringToUTF8(it->second)) ));
|
||||
else if (boost::iequals(it->first, "track")) {
|
||||
std::size_t number;
|
||||
if (readAs<std::size_t>(it->second, number))
|
||||
items.insert( std::make_pair(MetaData::Type::TrackNumber, number ));
|
||||
else if (boost::iequals(it->first, "track"))
|
||||
{
|
||||
// Expecting 'Number/Total'
|
||||
auto strings = splitString(it->second, "/");
|
||||
|
||||
if (strings.size() > 0)
|
||||
{
|
||||
std::size_t number;
|
||||
if (readAs<std::size_t>(strings[0], number))
|
||||
items.insert( std::make_pair(MetaData::Type::TrackNumber, number ));
|
||||
|
||||
if (strings.size() > 1)
|
||||
{
|
||||
std::size_t totalNumber;
|
||||
if (readAs<std::size_t>(strings[1], totalNumber))
|
||||
items.insert( std::make_pair(MetaData::Type::TotalTrack, totalNumber ));
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (boost::iequals(it->first, "disc"))
|
||||
{
|
||||
std::size_t number;
|
||||
if (readAs<std::size_t>(it->second, number))
|
||||
items.insert( std::make_pair(MetaData::Type::DiscNumber, number ));
|
||||
// Expecting 'Number/Total'
|
||||
auto strings = splitString(it->second, "/");
|
||||
|
||||
if (strings.size() > 0)
|
||||
{
|
||||
std::size_t number;
|
||||
if (readAs<std::size_t>(strings[0], number))
|
||||
items.insert( std::make_pair(MetaData::Type::DiscNumber, number ));
|
||||
|
||||
if (strings.size() > 1)
|
||||
{
|
||||
std::size_t totalNumber;
|
||||
if (readAs<std::size_t>(strings[1], totalNumber))
|
||||
items.insert( std::make_pair(MetaData::Type::TotalDisc, totalNumber ));
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (boost::iequals(it->first, "date")
|
||||
|| boost::iequals(it->first, "year")
|
||||
|
||||
@@ -37,6 +37,8 @@ namespace MetaData
|
||||
Duration, // boost::posix_time::time_duration
|
||||
TrackNumber, // size_t
|
||||
DiscNumber, // size_t
|
||||
TotalTrack, // size_t
|
||||
TotalDisc, // size_t
|
||||
Date, // boost::posix_time::ptime
|
||||
OriginalDate, // boost::posix_time::ptime
|
||||
HasCover, // bool
|
||||
|
||||
@@ -93,7 +93,7 @@ Audio::Audio(Wt::WContainerWidget *parent)
|
||||
// Artist
|
||||
// Release
|
||||
// Song
|
||||
std::vector<std::string> keywords = splitStrings(edit->text().toUTF8(), " ");;
|
||||
auto keywords = splitString(edit->text().toUTF8(), " ");;
|
||||
|
||||
releaseSearch->search(SearchFilter::ByName(SearchFilter::Field::Release, keywords), SEARCH_NB_ITEMS);
|
||||
artistSearch->search(SearchFilter::ByName(SearchFilter::Field::Artist, keywords), SEARCH_NB_ITEMS);
|
||||
|
||||
@@ -167,7 +167,7 @@ TrackSearch::addResults(size_t nb)
|
||||
trackRes->setCondition("if-has-track-num", true);
|
||||
trackRes->bindInt("track-num", track->getTrackNumber());
|
||||
|
||||
if (track->getDiscNumber() > 0)
|
||||
if (track->getDiscNumber() > 0 && track->getTotalDiscNumber() > 1)
|
||||
{ trackRes->setCondition("if-has-disc-num", true);
|
||||
trackRes->bindInt("disc-num", track->getDiscNumber());
|
||||
}
|
||||
|
||||
+1
-1
@@ -90,7 +90,7 @@ durationToString(boost::posix_time::time_duration duration, std::string format)
|
||||
}
|
||||
|
||||
std::vector<std::string>
|
||||
splitStrings(std::string string, std::string separators)
|
||||
splitString(std::string string, std::string separators)
|
||||
{
|
||||
std::vector<std::string> res;
|
||||
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ std::string
|
||||
durationToString(boost::posix_time::time_duration duration, std::string format);
|
||||
|
||||
std::vector<std::string>
|
||||
splitStrings(std::string string, std::string separators);
|
||||
splitString(std::string string, std::string separators);
|
||||
|
||||
std::string
|
||||
stringTrim(const std::string& str, const std::string& whitespace = " \t");
|
||||
|
||||
Reference in New Issue
Block a user