This commit is contained in:
Herwig Birke
2018-03-08 17:15:56 +01:00
parent 553d8cd9b0
commit 83080b71cd
6 changed files with 93 additions and 5 deletions
+11 -1
View File
@@ -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);
}
}
+2
View File
@@ -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
View File
@@ -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);
}
}
}
+12
View File
@@ -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
View File
@@ -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));
}
+1
View File
@@ -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