.
This commit is contained in:
+11
-1
@@ -124,6 +124,11 @@ cTrackList cAlbum::trackList()
|
||||
return(m_trackList);
|
||||
}
|
||||
|
||||
void cAlbum::sortTracks(qint32 sort)
|
||||
{
|
||||
m_trackList.sort(sort);
|
||||
}
|
||||
|
||||
cAlbum* cAlbumList::add(const QString& szAlbum, const QString& szBand)
|
||||
{
|
||||
QString szAlbum1 = szAlbum;
|
||||
@@ -147,6 +152,11 @@ cAlbum* cAlbumList::add(const QString& szAlbum, const QString& szBand)
|
||||
|
||||
void cAlbumList::sort(qint32 sort)
|
||||
{
|
||||
// std::sort(begin(), end(), compare);
|
||||
std::sort(begin(), end(), cAlbumCompare(sort));
|
||||
|
||||
if(sort & SORT_TRACK_ASC || sort & SORT_TRACK_DESC)
|
||||
{
|
||||
for(int x = 0;x < count();x++)
|
||||
at(x)->sortTracks(sort);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,6 +25,8 @@ public:
|
||||
|
||||
cTrack* addTrack(const QString& szTitle, const QString& szTrackNumber, const QString& szPartOfSet, const QString& szBand, const QString& szComposer, const QDate& recordingTime);
|
||||
cTrackList trackList();
|
||||
|
||||
void sortTracks(qint32 sort);
|
||||
private:
|
||||
QString m_szAlbum;
|
||||
QString m_szBand;
|
||||
|
||||
+9
-4
@@ -219,7 +219,7 @@ void cMainWindow::displayDB()
|
||||
{
|
||||
m_lpMusicListModel->clear();
|
||||
|
||||
m_albumList.sort(SORT_ALBUM_ASC | SORT_BAND_ASC);
|
||||
m_albumList.sort(SORT_ALBUM_ASC | SORT_BAND_ASC | SORT_TRACK_ASC);
|
||||
|
||||
QStringList header;
|
||||
header << "Original";
|
||||
@@ -243,6 +243,8 @@ void cMainWindow::displayDB()
|
||||
|
||||
lpBandItem.clear();
|
||||
lpBandItem.append(new QStandardItem(szOldBand));
|
||||
lpBandItem[0]->setData(USERROLE_TYPE_BAND, USERROLE_TYPE);
|
||||
lpBandItem[0]->setData(QVariant::fromValue(lpAlbum), USERROLE_VALUE);
|
||||
|
||||
m_lpMusicListModel->appendRow(lpBandItem);
|
||||
}
|
||||
@@ -253,10 +255,11 @@ void cMainWindow::displayDB()
|
||||
|
||||
lpAlbumItem.clear();
|
||||
lpAlbumItem.append(new QStandardItem(szOldAlbum));
|
||||
lpAlbumItem.at(0)->setData(QVariant::fromValue(lpAlbum), Qt::UserRole+MUSICLIST_ORI_ALBUM);
|
||||
lpAlbumItem[0]->setData(USERROLE_TYPE_ALBUM, USERROLE_TYPE);
|
||||
lpAlbumItem[0]->setData(QVariant::fromValue(lpAlbum), USERROLE_VALUE);
|
||||
lpAlbumItem.append(new QStandardItem(szOldAlbum));
|
||||
|
||||
lpBandItem.at(0)->appendRow(lpAlbumItem);
|
||||
lpBandItem[0]->appendRow(lpAlbumItem);
|
||||
}
|
||||
|
||||
cTrackList trackList = lpAlbum->trackList();
|
||||
@@ -266,7 +269,9 @@ void cMainWindow::displayDB()
|
||||
|
||||
QList<QStandardItem*> lpTrackItem;
|
||||
lpTrackItem.append(new QStandardItem(lpTrack->title()));
|
||||
lpAlbumItem.at(0)->appendRow(lpTrackItem);
|
||||
lpTrackItem[0]->setData(USERROLE_TYPE_TRACK, USERROLE_TYPE);
|
||||
lpTrackItem[0]->setData(QVariant::fromValue(lpTrack), USERROLE_VALUE);
|
||||
lpAlbumItem[0]->appendRow(lpTrackItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,18 @@
|
||||
#define SORT_BAND_ASC 0x0004
|
||||
#define SORT_BAND_DESC 0x0008
|
||||
|
||||
#define SORT_TRACK_ASC 0x0010
|
||||
#define SORT_TRACK_DESC 0x0020
|
||||
|
||||
|
||||
#define USERROLE_TYPE (Qt::UserRole+1)
|
||||
#define USERROLE_VALUE (Qt::UserRole+2)
|
||||
|
||||
#define USERROLE_TYPE_BAND 1
|
||||
#define USERROLE_TYPE_ALBUM 2
|
||||
#define USERROLE_TYPE_TRACK 3
|
||||
|
||||
|
||||
#define myDebug qDebug() << __FILE__ << "(" << __LINE__ << ") - " << __PRETTY_FUNCTION__ << ":"
|
||||
|
||||
|
||||
|
||||
+58
@@ -1,6 +1,59 @@
|
||||
#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& szComposer, const QDate& recordingTime) :
|
||||
m_lpAlbum(lpAlbum),
|
||||
m_szTitle(szTitle),
|
||||
@@ -99,3 +152,8 @@ cTrack* cTrackList::add(cAlbum* lpAlbum, const QString& szTitle, const QString
|
||||
append(lpTrackNew);
|
||||
return(lpTrackNew);
|
||||
}
|
||||
|
||||
void cTrackList::sort(qint32 sort)
|
||||
{
|
||||
std::sort(begin(), end(), cTrackCompare(sort));
|
||||
}
|
||||
|
||||
@@ -52,6 +52,7 @@ class cTrackList : public QList<cTrack*>
|
||||
{
|
||||
public:
|
||||
cTrack* add(cAlbum* lpAlbum, const QString& szTitle, const QString& szTrackNumber, const QString& szPartOfSet, const QString& szBand, const QString& szComposer, const QDate& recordingTime);
|
||||
void sort(qint32 sort);
|
||||
};
|
||||
|
||||
#endif // CTRACK_H
|
||||
|
||||
Reference in New Issue
Block a user