aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/playlistmodel.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-10-19 09:57:29 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-10-19 09:57:29 +0000
commit22ef61fd612f3a2fab3032163f2fd6dc2df1adfd (patch)
tree34f3de519eb6b54ad4a63f3b60696ec285c1fd9b /src/qmmpui/playlistmodel.cpp
parent32eba374070af24a78351d99eaa7ff0ec2eb32e1 (diff)
downloadqmmp-22ef61fd612f3a2fab3032163f2fd6dc2df1adfd.tar.gz
qmmp-22ef61fd612f3a2fab3032163f2fd6dc2df1adfd.tar.bz2
qmmp-22ef61fd612f3a2fab3032163f2fd6dc2df1adfd.zip
added sorting by artist and album
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1325 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/playlistmodel.cpp')
-rw-r--r--src/qmmpui/playlistmodel.cpp36
1 files changed, 33 insertions, 3 deletions
diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp
index 909f0399d..c4e8bda54 100644
--- a/src/qmmpui/playlistmodel.cpp
+++ b/src/qmmpui/playlistmodel.cpp
@@ -711,6 +711,8 @@ void PlayListModel::reverseList()
// First we'll implement bundle of static compare procedures
// to sort items in different ways
+
+//by title
static bool _titleLessComparator(PlayListItem* s1,PlayListItem* s2)
{
return QString::localeAwareCompare (s1->title(), s2->title()) < 0;
@@ -720,7 +722,27 @@ static bool _titleGreaterComparator(PlayListItem* s1,PlayListItem* s2)
{
return QString::localeAwareCompare (s1->title(), s2->title()) > 0;
}
+//by album
+static bool _albumLessComparator(PlayListItem* s1,PlayListItem* s2)
+{
+ return QString::localeAwareCompare (s1->album(), s2->album()) < 0;
+}
+
+static bool _albumGreaterComparator(PlayListItem* s1,PlayListItem* s2)
+{
+ return QString::localeAwareCompare (s1->album(), s2->album()) > 0;
+}
+//by artist
+static bool _artistLessComparator(PlayListItem* s1,PlayListItem* s2)
+{
+ return QString::localeAwareCompare (s1->artist(), s2->artist()) < 0;
+}
+static bool _artistGreaterComparator(PlayListItem* s1,PlayListItem* s2)
+{
+ return QString::localeAwareCompare (s1->artist(), s2->artist()) > 0;
+}
+//by path
static bool _pathAndFilenameLessComparator(PlayListItem* s1,PlayListItem* s2)
{
return QString::localeAwareCompare (s1->url(), s2->url()) < 0;
@@ -730,7 +752,7 @@ static bool _pathAndFilenameGreaterComparator(PlayListItem* s1,PlayListItem* s2)
{
return QString::localeAwareCompare (s1->url(), s2->url()) > 0;
}
-
+//by file name
static bool _filenameLessComparator(PlayListItem* s1,PlayListItem* s2)
{
QFileInfo i_s1(s1->url());
@@ -744,7 +766,7 @@ static bool _filenameGreaterComparator(PlayListItem* s1,PlayListItem* s2)
QFileInfo i_s2(s2->url());
return QString::localeAwareCompare (i_s1.baseName(), i_s2.baseName()) > 0;
}
-
+//by date
static bool _dateLessComparator(PlayListItem* s1,PlayListItem* s2)
{
return s1->year().toInt() < s2->year().toInt();
@@ -754,7 +776,7 @@ static bool _dateGreaterComparator(PlayListItem* s1,PlayListItem* s2)
{
return s1->year().toInt() > s2->year().toInt();
}
-
+//by track
static bool _trackLessComparator(PlayListItem* s1,PlayListItem* s2)
{
return s1->track().toInt() < s2->track().toInt();
@@ -783,6 +805,14 @@ void PlayListModel::doSort(int sort_mode,QList<PlayListItem*>& list_to_sort)
compareLessFunc = _titleLessComparator;
compareGreaterFunc = _titleGreaterComparator;
break;
+ case ALBUM:
+ compareLessFunc = _albumLessComparator;
+ compareGreaterFunc = _albumGreaterComparator;
+ break;
+ case ARTIST:
+ compareLessFunc = _artistLessComparator;
+ compareGreaterFunc = _artistGreaterComparator;
+ break;
case FILENAME:
compareLessFunc = _filenameLessComparator;
compareGreaterFunc = _filenameGreaterComparator;