diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-04-03 16:01:08 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-04-03 16:01:08 +0000 |
| commit | c73ba11ee32863d31c187b2efeb922a36504a4c7 (patch) | |
| tree | 2fced2029fc70318f84a926abe19821746d108ef /src | |
| parent | c72a5c8ad82bd45c2e624f940225199dfa75ecdb (diff) | |
| download | qmmp-c73ba11ee32863d31c187b2efeb922a36504a4c7.tar.gz qmmp-c73ba11ee32863d31c187b2efeb922a36504a4c7.tar.bz2 qmmp-c73ba11ee32863d31c187b2efeb922a36504a4c7.zip | |
sorting by track number
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@326 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
| -rw-r--r-- | src/ui/mediafile.cpp | 10 | ||||
| -rw-r--r-- | src/ui/mediafile.h | 3 | ||||
| -rw-r--r-- | src/ui/playlist.cpp | 8 | ||||
| -rw-r--r-- | src/ui/playlistmodel.cpp | 14 | ||||
| -rw-r--r-- | src/ui/playlistmodel.h | 2 |
5 files changed, 34 insertions, 3 deletions
diff --git a/src/ui/mediafile.cpp b/src/ui/mediafile.cpp index ffb8bd757..ff5e1b3ed 100644 --- a/src/ui/mediafile.cpp +++ b/src/ui/mediafile.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006 by Ilya Kotov * + * Copyright (C) 2006-2008 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -30,6 +30,8 @@ MediaFile::MediaFile(const QString& path) : m_flag(FREE) m_current = FALSE; m_path = path; m_tag = 0; + m_year = 0; + m_track = 0; QSettings settings ( QDir::homePath() +"/.qmmp/qmmprc", QSettings::IniFormat ); m_use_meta = settings.value ("PlayList/load_metadata", TRUE).toBool(); @@ -88,6 +90,11 @@ uint MediaFile::year() const return m_year; } +uint MediaFile::track() const +{ + return m_track; +} + bool MediaFile::isCurrent() { return m_current; @@ -128,6 +135,7 @@ void MediaFile::readMetadata() if (m_use_meta && m_tag && !m_tag->isEmpty()) { m_year = m_tag->year(); + m_track = m_tag->track(); m_title = m_format; m_title.replace("%p",m_tag->artist()); m_title.replace("%a",m_tag->album()); diff --git a/src/ui/mediafile.h b/src/ui/mediafile.h index 1652bf92d..abd40c4ad 100644 --- a/src/ui/mediafile.h +++ b/src/ui/mediafile.h @@ -51,6 +51,7 @@ public: const QString fileName()const; uint year()const; int length()const; + uint track()const; void setSelected(bool); bool isSelected()const; bool isCurrent(); @@ -66,7 +67,7 @@ private: void readMetadata(); QString m_path; QString m_title; - uint m_year; + uint m_year, m_track; FileTag *m_tag; bool m_selected; bool m_current; diff --git a/src/ui/playlist.cpp b/src/ui/playlist.cpp index 8f406ccfb..0e813d6a4 100644 --- a/src/ui/playlist.cpp +++ b/src/ui/playlist.cpp @@ -193,6 +193,10 @@ void PlayList::createActions() connect ( dateAct, SIGNAL ( triggered ( bool ) ), signalMapper, SLOT ( map() ) ); signalMapper->setMapping ( dateAct, PlayListModel::DATE ); + QAction* trackAct = sort_mode_menu->addAction ( tr ( "By Track Number" ) ); + connect ( trackAct, SIGNAL ( triggered ( bool ) ), signalMapper, SLOT ( map() ) ); + signalMapper->setMapping ( trackAct, PlayListModel::TRACK ); + connect ( signalMapper, SIGNAL ( mapped ( int ) ), m_playListModel, SLOT ( sort ( int ) ) ); @@ -216,6 +220,10 @@ void PlayList::createActions() connect ( dateAct, SIGNAL ( triggered ( bool ) ), signalMapper, SLOT ( map() ) ); signalMapper->setMapping ( dateAct, PlayListModel::DATE ); + trackAct = sort_mode_menu->addAction ( tr ( "By Track Number" ) ); + connect ( trackAct, SIGNAL ( triggered ( bool ) ), signalMapper, SLOT ( map() ) ); + signalMapper->setMapping ( trackAct, PlayListModel::TRACK ); + connect ( signalMapper, SIGNAL ( mapped ( int ) ), m_playListModel, SLOT ( sortSelection ( int ) ) ); diff --git a/src/ui/playlistmodel.cpp b/src/ui/playlistmodel.cpp index 3fffd69eb..f752ebb75 100644 --- a/src/ui/playlistmodel.cpp +++ b/src/ui/playlistmodel.cpp @@ -687,6 +687,16 @@ static bool _dateGreaterComparator(MediaFile* s1,MediaFile* s2) return s1->year() > s2->year(); } +static bool _trackLessComparator(MediaFile* s1,MediaFile* s2) +{ + return s1->track() < s2->track(); +} + +static bool _trackGreaterComparator(MediaFile* s1,MediaFile* s2) +{ + return s1->track() > s2->track(); +} + // This is main sort method void PlayListModel::doSort(int sort_mode,QList<MediaFile*>& list_to_sort) { @@ -718,6 +728,10 @@ void PlayListModel::doSort(int sort_mode,QList<MediaFile*>& list_to_sort) compareGreaterFunc = _dateGreaterComparator; break; //qWarning("TODO Sort by Date: %s\t%d",__FILE__,__LINE__); + case TRACK: + compareLessFunc = _trackLessComparator; + compareGreaterFunc = _trackGreaterComparator; + break; default: compareLessFunc = _titleLessComparator; compareGreaterFunc = _titleGreaterComparator; diff --git a/src/ui/playlistmodel.h b/src/ui/playlistmodel.h index b3ac19c04..798442514 100644 --- a/src/ui/playlistmodel.h +++ b/src/ui/playlistmodel.h @@ -214,7 +214,7 @@ public: */ enum SortMode { - TITLE,FILENAME,PATH_AND_FILENAME,DATE + TITLE,FILENAME,PATH_AND_FILENAME,DATE,TRACK }; signals: |
