aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-08-23 08:29:29 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-08-23 08:29:29 +0000
commita49bf86a45f691e14296bc2420dafbf565cf7248 (patch)
treec8d5bac223bddddaa328cb5337baa9a7a0267ef0 /src
parent73b5f5312a00236f264403e995d268641212b61f (diff)
downloadqmmp-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.cpp8
-rw-r--r--src/qmmpui/groupedcontainer.cpp3
-rw-r--r--src/qmmpui/playlistcontainer.cpp15
-rw-r--r--src/qmmpui/playlistmodel.h3
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;