You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

175 lines
3.4 KiB
C++

#include "common.h"
#include "ctrack.h"
class cTrackCompare
{
public:
cTrackCompare(qint32 sort) : m_sort(sort) {}
bool operator()(cTrack* lpFirst, cTrack* lpSecond)
{
qint16 t1 = 0;
qint16 t2 = 0;
if(!lpFirst->trackNumber().isEmpty())
{
if(lpFirst->trackNumber().contains("/"))
t1 = lpFirst->trackNumber().left(lpFirst->trackNumber().indexOf("/")).toInt();
else
t1 = lpFirst->trackNumber().toInt();
}
if(!lpSecond->trackNumber().isEmpty())
{
if(lpSecond->trackNumber().contains("/"))
t2 = lpSecond->trackNumber().left(lpSecond->trackNumber().indexOf("/")).toInt();
else
t2 = lpSecond->trackNumber().toInt();
}
if(m_sort & SORT_TRACK_ASC)
{
if(t1 < t2)
return(true);
else if(t1 > t2)
return(false);
else
return(false);
}
else if(m_sort & SORT_TRACK_DESC)
{
if(t1 > t2)
return(true);
else if(t1 < t2)
return(false);
else
return(false);
}
else
return(false);
}
private:
qint32 m_sort;
};
cTrack::cTrack(cAlbum* lpAlbum, const QString& szTitle, const QString &szTrackNumber, const QString& szPartOfSet, const QString& szBand, const QString& szLeadArtist, const QString& szComposer, const QDate& recordingTime, const QString& szFileName) :
m_lpAlbum(lpAlbum),
m_szTitle(szTitle),
m_szTrackNumber(szTrackNumber),
m_szPartOfSet(szPartOfSet),
m_szBand(szBand),
m_szLeadArtist(szLeadArtist),
m_szComposer(szComposer),
m_recordingTime(recordingTime),
m_szFileName(szFileName)
{
}
void cTrack::setAlbum(cAlbum* lpAlbum)
{
m_lpAlbum = lpAlbum;
}
cAlbum* cTrack::album()
{
return(m_lpAlbum);
}
void cTrack::setTitle(const QString& szTitle)
{
m_szTitle = szTitle;
}
QString cTrack::title()
{
return(m_szTitle);
}
void cTrack::setTrackNumber(const QString &szTrackNumber)
{
m_szTrackNumber = szTrackNumber;
}
QString cTrack::trackNumber()
{
return(m_szTrackNumber);
}
void cTrack::setPartOfSet(const QString& szPartOfSet)
{
m_szPartOfSet = szPartOfSet;
}
QString cTrack::partOfSet()
{
return(m_szPartOfSet);
}
void cTrack::setBand(const QString& szBand)
{
m_szBand = szBand;
}
QString cTrack::band()
{
return(m_szBand);
}
void cTrack::setComposer(const QString& szComposer)
{
m_szComposer = szComposer;
}
QString cTrack::composer()
{
return(m_szComposer);
}
void cTrack::setRecordingTime(const QDate& recordingTime)
{
m_recordingTime = recordingTime;
}
QDate cTrack::recordingTime()
{
return(m_recordingTime);
}
void cTrack::setFileName(const QString& szFileName)
{
m_szFileName = szFileName;
}
QString cTrack::fileName()
{
return(m_szFileName);
}
cTrack* cTrackList::add(cAlbum* lpAlbum, const QString& szTitle, const QString& szTrackNumber, const QString& szPartOfSet, const QString& szBand, const QString& szLeadArtist, const QString& szComposer, const QDate& recordingTime, const QString& szFileName)
{
QString szTitle1 = szTitle;
QString szBand1 = szBand;
QString szLeadArtist1 = szLeadArtist;
QString szComposer1 = szComposer;
if(szTitle1.isEmpty())
szTitle1 = "*** NO TITLE ***";
if(szBand1.isEmpty())
szBand1 = "*** NO BAND ***";
if(szLeadArtist1.isEmpty())
szLeadArtist1 = "*** NO LEAD ARTIST ***";
if(szComposer1.isEmpty())
szComposer1 = "*** NO COMPOSER ***";
cTrack* lpTrackNew = new cTrack(lpAlbum, szTitle1, szTrackNumber, szPartOfSet, szBand1, szLeadArtist1, szComposer1, recordingTime, szFileName);
append(lpTrackNew);
return(lpTrackNew);
}
void cTrackList::sort(qint32 sort)
{
std::sort(begin(), end(), cTrackCompare(sort));
}