aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/playlistmodel.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-08-20 19:38:35 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-08-20 19:38:35 +0000
commit80567cfa325311f02a4806f02bf35be1569fe059 (patch)
tree7383215e7f8df1e647b1d1ea4e320f447812cf45 /src/qmmpui/playlistmodel.cpp
parent3cce6c1d844060bdce56fc5dde48b9822658b741 (diff)
downloadqmmp-80567cfa325311f02a4806f02bf35be1569fe059.tar.gz
qmmp-80567cfa325311f02a4806f02bf35be1569fe059.tar.bz2
qmmp-80567cfa325311f02a4806f02bf35be1569fe059.zip
enable sorting functions
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3634 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/playlistmodel.cpp')
-rw-r--r--src/qmmpui/playlistmodel.cpp194
1 files changed, 5 insertions, 189 deletions
diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp
index 304fbd8a5..0eec6c062 100644
--- a/src/qmmpui/playlistmodel.cpp
+++ b/src/qmmpui/playlistmodel.cpp
@@ -623,191 +623,6 @@ void PlayListModel::reverseList()
m_current = m_container->indexOf(m_current_track);
emit listChanged();
}
-/*
-////===============THE BEGINNING OF SORT IMPLEMENTATION =======================////
-
-// 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->value(Qmmp::TITLE), s2->value(Qmmp::TITLE)) < 0;
-}
-
-static bool _titleGreaterComparator(PlayListItem* s1,PlayListItem* s2)
-{
- return QString::localeAwareCompare (s1->value(Qmmp::TITLE), s2->value(Qmmp::TITLE)) > 0;
-}
-
-//by album+disc
-static bool _discnumberLessComparator(PlayListItem* s1,PlayListItem* s2)
-{
- return QString::localeAwareCompare (s1->value(Qmmp::DISCNUMBER), s2->value(Qmmp::DISCNUMBER)) < 0;
-}
-
-static bool _discnumberGreaterComparator(PlayListItem* s1,PlayListItem* s2)
-{
- return QString::localeAwareCompare (s1->value(Qmmp::DISCNUMBER), s2->value(Qmmp::DISCNUMBER)) > 0;
-}
-//by album
-static bool _albumLessComparator(PlayListItem* s1,PlayListItem* s2)
-{
- return QString::localeAwareCompare (s1->value(Qmmp::ALBUM), s2->value(Qmmp::ALBUM)) < 0;
-}
-
-static bool _albumGreaterComparator(PlayListItem* s1,PlayListItem* s2)
-{
- return QString::localeAwareCompare (s1->value(Qmmp::ALBUM), s2->value(Qmmp::ALBUM)) > 0;
-}
-//by artist
-static bool _artistLessComparator(PlayListItem* s1,PlayListItem* s2)
-{
- return QString::localeAwareCompare (s1->value(Qmmp::ARTIST), s2->value(Qmmp::ARTIST)) < 0;
-}
-
-static bool _artistGreaterComparator(PlayListItem* s1,PlayListItem* s2)
-{
- return QString::localeAwareCompare (s1->value(Qmmp::ARTIST), s2->value(Qmmp::ARTIST)) > 0;
-}
-//by path
-static bool _pathAndFilenameLessComparator(PlayListItem* s1,PlayListItem* s2)
-{
- return QString::localeAwareCompare (s1->url(), s2->url()) < 0;
-}
-
-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());
- QFileInfo i_s2(s2->url());
- return QString::localeAwareCompare (i_s1.baseName(), i_s2.baseName()) < 0;
-}
-
-static bool _filenameGreaterComparator(PlayListItem* s1,PlayListItem* s2)
-{
- QFileInfo i_s1(s1->url());
- 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->value(Qmmp::YEAR).toInt() < s2->value(Qmmp::YEAR).toInt();
-}
-
-static bool _dateGreaterComparator(PlayListItem* s1,PlayListItem* s2)
-{
- return s1->value(Qmmp::YEAR).toInt() > s2->value(Qmmp::YEAR).toInt();
-}
-//by track
-static bool _trackLessComparator(PlayListItem* s1,PlayListItem* s2)
-{
- return s1->value(Qmmp::TRACK).toInt() < s2->value(Qmmp::TRACK).toInt();
-}
-
-static bool _trackGreaterComparator(PlayListItem* s1,PlayListItem* s2)
-{
- return s1->value(Qmmp::TRACK).toInt() > s2->value(Qmmp::TRACK).toInt();
-}
-//by file creation date
-static bool _fileCreationDateLessComparator(PlayListItem* s1,PlayListItem* s2)
-{
- return QFileInfo(s1->value(Qmmp::URL)).created() < QFileInfo(s2->value(Qmmp::URL)).created();
-}
-
-static bool _fileCreationDateGreaterComparator(PlayListItem* s1,PlayListItem* s2)
-{
- return QFileInfo(s1->value(Qmmp::URL)).created() > QFileInfo(s2->value(Qmmp::URL)).created();
-}
-//by file modification date
-static bool _fileModificationDateLessComparator(PlayListItem* s1,PlayListItem* s2)
-{
- return QFileInfo(s1->value(Qmmp::URL)).lastModified() < QFileInfo(s2->value(Qmmp::URL)).lastModified();
-}
-
-static bool _fileModificationDateGreaterComparator(PlayListItem* s1,PlayListItem* s2)
-{
- return QFileInfo(s1->value(Qmmp::URL)).lastModified() > QFileInfo(s2->value(Qmmp::URL)).lastModified();
-}*/
-// This is main sort method
-void PlayListModel::doSort(int sort_mode,QList<PlayListItem*>& list_to_sort)
-{
- /* QList<PlayListItem*>::iterator begin;
- QList<PlayListItem*>::iterator end;
-
- begin = list_to_sort.begin();
- end = list_to_sort.end();
-
- bool(*compareLessFunc)(PlayListItem*,PlayListItem*) = 0;
- bool(*compareGreaterFunc)(PlayListItem*,PlayListItem*) = 0;
-
- switch (sort_mode)
- {
- case TITLE:
- compareLessFunc = _titleLessComparator;
- compareGreaterFunc = _titleGreaterComparator;
- break;
- case DISCNUMBER:
- compareLessFunc = _discnumberLessComparator;
- compareGreaterFunc = _discnumberGreaterComparator;
- break;
- case ALBUM:
- compareLessFunc = _albumLessComparator;
- compareGreaterFunc = _albumGreaterComparator;
- break;
- case ARTIST:
- compareLessFunc = _artistLessComparator;
- compareGreaterFunc = _artistGreaterComparator;
- break;
- case FILENAME:
- compareLessFunc = _filenameLessComparator;
- compareGreaterFunc = _filenameGreaterComparator;
- break;
- case PATH_AND_FILENAME:
- compareLessFunc = _pathAndFilenameLessComparator;
- compareGreaterFunc = _pathAndFilenameGreaterComparator;
- break;
- case DATE:
- compareLessFunc = _dateLessComparator;
- compareGreaterFunc = _dateGreaterComparator;
- break;
- //qWarning("TODO Sort by Date: %s\t%d",__FILE__,__LINE__);
- case TRACK:
- compareLessFunc = _trackLessComparator;
- compareGreaterFunc = _trackGreaterComparator;
- break;
- case FILE_CREATION_DATE:
- compareLessFunc = _fileCreationDateLessComparator;
- compareGreaterFunc = _fileCreationDateGreaterComparator;
- break;
- case FILE_MODIFICATION_DATE:
- compareLessFunc = _fileModificationDateLessComparator;
- compareGreaterFunc = _fileModificationDateGreaterComparator;
- break;
- default:
- compareLessFunc = _titleLessComparator;
- compareGreaterFunc = _titleGreaterComparator;
- }
-
- static bool sorted_asc = false;
- if (!sorted_asc)
- {
- qStableSort(begin,end,compareLessFunc);
- sorted_asc = true;
- }
- else
- {
- qStableSort(begin,end,compareGreaterFunc);
- sorted_asc = false;
- }
-
- m_current = m_items.indexOf(m_currentItem);*/
-}
void PlayListModel::sortSelection(int mode)
{
@@ -825,12 +640,13 @@ void PlayListModel::sortSelection(int mode)
void PlayListModel::sort(int mode)
{
- /*doSort(mode,m_items);
- emit listChanged();*/
+ if(m_container->isEmpty())
+ return;
+ m_container->sort(mode);
+ m_current = m_container->indexOf(m_current_track);
+ emit listChanged();
}
-////=============== THE END OF SORT IMPLEMENTATION =======================////
-
void PlayListModel::prepareForShufflePlaying(bool val)
{
if (m_play_state)