diff options
Diffstat (limited to 'src/qmmpui/playlistmodel.cpp')
| -rw-r--r-- | src/qmmpui/playlistmodel.cpp | 194 |
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) |
