From a04aa013db3f96d065961982cc3b5db3cdcd6d29 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Sat, 5 Jan 2013 11:01:05 +0000 Subject: added sorting by file creation date (Closes issue 564) git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3127 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/Ui/skinned/playlist.cpp | 8 ++++++++ src/qmmpui/playlistmodel.cpp | 28 ++++++++++++++++++++++++++++ src/qmmpui/playlistmodel.h | 18 ++++++++++-------- 3 files changed, 46 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/plugins/Ui/skinned/playlist.cpp b/src/plugins/Ui/skinned/playlist.cpp index ac97e0eae..b536f1ef2 100644 --- a/src/plugins/Ui/skinned/playlist.cpp +++ b/src/plugins/Ui/skinned/playlist.cpp @@ -239,6 +239,10 @@ void PlayList::createActions() connect (trackAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); signalMapper->setMapping (trackAct, PlayListModel::TRACK); + QAction* fileDateAct = sort_mode_menu->addAction (tr("By File Creation Date")); + connect (fileDateAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); + signalMapper->setMapping (fileDateAct, PlayListModel::FILE_CREATION_DATE); + connect (signalMapper, SIGNAL (mapped (int)), m_pl_manager, SLOT (sort (int))); m_sortMenu->addMenu (sort_mode_menu); @@ -278,6 +282,10 @@ void PlayList::createActions() connect (trackAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); signalMapper->setMapping (trackAct, PlayListModel::TRACK); + fileDateAct = sort_mode_menu->addAction (tr("By File Creation Date")); + connect (fileDateAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map())); + signalMapper->setMapping (fileDateAct, PlayListModel::FILE_CREATION_DATE); + connect (signalMapper, SIGNAL (mapped (int)), m_pl_manager, SLOT (sortSelection (int))); m_sortMenu->addMenu (sort_mode_menu); diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp index 71bf2f771..0ff3b17c2 100644 --- a/src/qmmpui/playlistmodel.cpp +++ b/src/qmmpui/playlistmodel.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include "playlistparser.h" @@ -725,7 +726,26 @@ 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& list_to_sort) { @@ -773,6 +793,14 @@ void PlayListModel::doSort(int sort_mode,QList& list_to_sort) 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; diff --git a/src/qmmpui/playlistmodel.h b/src/qmmpui/playlistmodel.h index 18d751894..37581a21a 100644 --- a/src/qmmpui/playlistmodel.h +++ b/src/qmmpui/playlistmodel.h @@ -277,14 +277,16 @@ public: */ enum SortMode { - TITLE, /*!< by title */ - ALBUM, /*!< by album */ - DISCNUMBER, /*!< by discnumber */ - ARTIST, /*!< by artist */ - FILENAME, /*!< by file name */ - PATH_AND_FILENAME, /*!< by path and file name */ - DATE, /*!< by date */ - TRACK /*!< by track */ + TITLE, /*!< by title */ + ALBUM, /*!< by album */ + DISCNUMBER, /*!< by discnumber */ + ARTIST, /*!< by artist */ + FILENAME, /*!< by file name */ + PATH_AND_FILENAME, /*!< by path and file name */ + DATE, /*!< by date */ + TRACK, /*!< by track */ + FILE_CREATION_DATE, /*!< by file creation date */ + FILE_MODIFICATION_DATE /*!< by file modification date */ }; signals: -- cgit v1.2.3-13-gbd6f