diff options
| -rw-r--r-- | src/plugins/Ui/skinned/playlist.cpp | 8 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.cpp | 28 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.h | 18 |
3 files changed, 46 insertions, 8 deletions
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 <QTimer> #include <QBuffer> #include <QMetaType> +#include <QDateTime> #include <time.h> #include <qmmp/metadatamanager.h> #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<PlayListItem*>& list_to_sort) { @@ -773,6 +793,14 @@ void PlayListModel::doSort(int sort_mode,QList<PlayListItem*>& 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: |
