diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-08-23 08:29:29 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-08-23 08:29:29 +0000 |
| commit | a49bf86a45f691e14296bc2420dafbf565cf7248 (patch) | |
| tree | c8d5bac223bddddaa328cb5337baa9a7a0267ef0 /src | |
| parent | 73b5f5312a00236f264403e995d268641212b61f (diff) | |
| download | qmmp-a49bf86a45f691e14296bc2420dafbf565cf7248.tar.gz qmmp-a49bf86a45f691e14296bc2420dafbf565cf7248.tar.bz2 qmmp-a49bf86a45f691e14296bc2420dafbf565cf7248.zip | |
added sorting by group
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3649 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
| -rw-r--r-- | src/plugins/Ui/skinned/playlist.cpp | 8 | ||||
| -rw-r--r-- | src/qmmpui/groupedcontainer.cpp | 3 | ||||
| -rw-r--r-- | src/qmmpui/playlistcontainer.cpp | 15 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.h | 3 |
4 files changed, 27 insertions, 2 deletions
diff --git a/src/plugins/Ui/skinned/playlist.cpp b/src/plugins/Ui/skinned/playlist.cpp index 6f95f2e8f..3e5388dce 100644 --- a/src/plugins/Ui/skinned/playlist.cpp +++ b/src/plugins/Ui/skinned/playlist.cpp @@ -243,6 +243,10 @@ void PlayList::createActions() connect (fileCreationDateAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); signalMapper->setMapping (fileCreationDateAct, PlayListModel::FILE_CREATION_DATE); + QAction* groupAct = sort_mode_menu->addAction (tr("By Group")); + connect (groupAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); + signalMapper->setMapping (groupAct, PlayListModel::GROUP); + connect (signalMapper, SIGNAL (mapped (int)), m_pl_manager, SLOT (sort (int))); m_sortMenu->addMenu (sort_mode_menu); @@ -286,6 +290,10 @@ void PlayList::createActions() connect (fileCreationDateAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); signalMapper->setMapping (fileCreationDateAct, PlayListModel::FILE_CREATION_DATE); + groupAct = sort_mode_menu->addAction (tr("By Group")); + connect (groupAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); + signalMapper->setMapping (groupAct, PlayListModel::GROUP); + connect (signalMapper, SIGNAL (mapped (int)), m_pl_manager, SLOT (sortSelection (int))); m_sortMenu->addMenu (sort_mode_menu); diff --git a/src/qmmpui/groupedcontainer.cpp b/src/qmmpui/groupedcontainer.cpp index c789a3fd9..c30b08fce 100644 --- a/src/qmmpui/groupedcontainer.cpp +++ b/src/qmmpui/groupedcontainer.cpp @@ -299,7 +299,8 @@ void GroupedContainer::randomizeList() void GroupedContainer::sort(int mode) { - if(mode == PlayListModel::ARTIST || mode == PlayListModel::ALBUM || mode == PlayListModel::DATE) + if(mode == PlayListModel::ARTIST || mode == PlayListModel::ALBUM + || mode == PlayListModel::DATE || mode == PlayListModel::GROUP) { QList<PlayListTrack *> tracks = takeAllTracks(); doSort(mode, tracks, m_reverted); diff --git a/src/qmmpui/playlistcontainer.cpp b/src/qmmpui/playlistcontainer.cpp index cb774726c..1ca4d79dc 100644 --- a/src/qmmpui/playlistcontainer.cpp +++ b/src/qmmpui/playlistcontainer.cpp @@ -140,6 +140,17 @@ static bool _fileModificationDateGreaterComparator(PlayListTrack* s1,PlayListTra return QFileInfo(s1->value(Qmmp::URL)).lastModified() > QFileInfo(s2->value(Qmmp::URL)).lastModified(); } +//by group +static bool _groupLessComparator(PlayListTrack* s1,PlayListTrack* s2) +{ + return QString::localeAwareCompare (s1->groupName(), s2->groupName()) < 0; +} + +static bool _groupGreaterComparator(PlayListTrack* s1,PlayListTrack* s2) +{ + return QString::localeAwareCompare (s1->groupName(), s2->groupName()) > 0; +} + void PlayListContainer::doSort(int sort_mode, QList<PlayListTrack*>& list_to_sort, bool reverted) { QList<PlayListTrack*>::iterator begin; @@ -193,6 +204,10 @@ void PlayListContainer::doSort(int sort_mode, QList<PlayListTrack*>& list_to_sor compareLessFunc = _fileModificationDateLessComparator; compareGreaterFunc = _fileModificationDateGreaterComparator; break; + case PlayListModel::GROUP: + compareLessFunc = _groupLessComparator; + compareGreaterFunc = _groupGreaterComparator; + break; default: compareLessFunc = _titleLessComparator; compareGreaterFunc = _titleGreaterComparator; diff --git a/src/qmmpui/playlistmodel.h b/src/qmmpui/playlistmodel.h index ff8bc79f9..2bd81eea4 100644 --- a/src/qmmpui/playlistmodel.h +++ b/src/qmmpui/playlistmodel.h @@ -268,7 +268,8 @@ public: DATE, /*!< by date */ TRACK, /*!< by track */ FILE_CREATION_DATE, /*!< by file creation date */ - FILE_MODIFICATION_DATE /*!< by file modification date */ + FILE_MODIFICATION_DATE, /*!< by file modification date */ + GROUP /*!< by group name */ }; int numberOfTrack(int index) const; |
