aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-01-05 11:01:05 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-01-05 11:01:05 +0000
commita04aa013db3f96d065961982cc3b5db3cdcd6d29 (patch)
treeaed3bd676148314648c292e499b9c97990b442e2 /src
parent08600f858ecd8c83265fbf33e270080d326bffcd (diff)
downloadqmmp-a04aa013db3f96d065961982cc3b5db3cdcd6d29.tar.gz
qmmp-a04aa013db3f96d065961982cc3b5db3cdcd6d29.tar.bz2
qmmp-a04aa013db3f96d065961982cc3b5db3cdcd6d29.zip
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
Diffstat (limited to 'src')
-rw-r--r--src/plugins/Ui/skinned/playlist.cpp8
-rw-r--r--src/qmmpui/playlistmodel.cpp28
-rw-r--r--src/qmmpui/playlistmodel.h18
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: