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++
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));
|
|
}
|