aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-04-10 11:28:01 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-04-10 11:28:01 +0000
commit90f13f20aa9bf0e076065125e8edfdbcdaf785a4 (patch)
treebeeb445cb175408613bdbe72a4560bef6b0df2f1 /src/qmmpui
parent76f1c92734c5a4b9432b07eb182c6e96908a29b0 (diff)
downloadqmmp-90f13f20aa9bf0e076065125e8edfdbcdaf785a4.tar.gz
qmmp-90f13f20aa9bf0e076065125e8edfdbcdaf785a4.tar.bz2
qmmp-90f13f20aa9bf0e076065125e8edfdbcdaf785a4.zip
added estra sorting function
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4843 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui')
-rw-r--r--src/qmmpui/playlistmodel.cpp15
-rw-r--r--src/qmmpui/playlistmodel.h2
-rw-r--r--src/qmmpui/playlisttask.cpp24
-rw-r--r--src/qmmpui/playlisttask_p.h4
-rw-r--r--src/qmmpui/playlisttrack.cpp14
-rw-r--r--src/qmmpui/qmmpuisettings.cpp8
-rw-r--r--src/qmmpui/qmmpuisettings.h4
7 files changed, 54 insertions, 17 deletions
diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp
index 660924175..bd75a57ca 100644
--- a/src/qmmpui/playlistmodel.cpp
+++ b/src/qmmpui/playlistmodel.cpp
@@ -806,7 +806,7 @@ void PlayListModel::sortSelection(int mode)
if(m_container->isEmpty())
return;
- m_task->sortSelection(m_container->tracks(), (PlayListModel::SortMode) mode);
+ m_task->sortSelection(m_container->tracks(), mode);
}
void PlayListModel::sort(int mode)
@@ -814,7 +814,18 @@ void PlayListModel::sort(int mode)
if(m_container->isEmpty())
return;
- m_task->sort(m_container->tracks(), (PlayListModel::SortMode) mode);
+ m_task->sort(m_container->tracks(), mode);
+}
+
+void PlayListModel::sortByColumn(int column)
+{
+ if(m_container->isEmpty())
+ return;
+
+ if(column < 0 || column >= m_ui_settings->headerModel()->count())
+ return;
+
+ m_task->sortByColumn(m_container->tracks(), column);
}
void PlayListModel::prepareForShufflePlaying(bool val)
diff --git a/src/qmmpui/playlistmodel.h b/src/qmmpui/playlistmodel.h
index 71debbe93..34bb9f745 100644
--- a/src/qmmpui/playlistmodel.h
+++ b/src/qmmpui/playlistmodel.h
@@ -442,6 +442,8 @@ public slots:
* Sorts items in \b mode sort mode.
*/
void sort(int mode);
+
+ void sortByColumn(int column);
/*!
* Adds/removes selected items to/from playback queue.
*/
diff --git a/src/qmmpui/playlisttask.cpp b/src/qmmpui/playlisttask.cpp
index f1859135e..4b6d4b4e4 100644
--- a/src/qmmpui/playlisttask.cpp
+++ b/src/qmmpui/playlisttask.cpp
@@ -121,7 +121,9 @@ PlayListTask::PlayListTask(QObject *parent) : QThread(parent)
}
PlayListTask::~PlayListTask()
-{}
+{
+ clear();
+}
void PlayListTask::sort(QList<PlayListTrack *> tracks, int mode)
{
@@ -176,6 +178,26 @@ void PlayListTask::sortSelection(QList<PlayListTrack *> tracks, int mode)
start();
}
+void PlayListTask::sortByColumn(QList<PlayListTrack *> tracks, int column)
+{
+ if(isRunning())
+ return;
+ clear();
+ m_task = SORT_BY_COLUMN;
+ m_input_tracks = tracks;
+ m_tracks = tracks;
+
+ for(int i = 0; i < tracks.count(); ++i)
+ {
+ TrackField *f = new TrackField;
+ f->track = tracks[i];
+ f->value = f->track->formattedTitle(column);
+ m_fields.append(f);
+ }
+ MetaDataManager::instance()->prepareForAnotherThread();
+ start();
+}
+
void PlayListTask::removeInvalidTracks(QList<PlayListTrack *> tracks, PlayListTrack *current_track)
{
if(isRunning())
diff --git a/src/qmmpui/playlisttask_p.h b/src/qmmpui/playlisttask_p.h
index 14442b06b..c1359bbb7 100644
--- a/src/qmmpui/playlisttask_p.h
+++ b/src/qmmpui/playlisttask_p.h
@@ -43,7 +43,8 @@ public:
SORT = 0,
SORT_SELECTION,
REMOVE_INVALID,
- REMOVE_DUPLICATES
+ REMOVE_DUPLICATES,
+ SORT_BY_COLUMN
};
explicit PlayListTask(QObject *parent);
@@ -51,6 +52,7 @@ public:
void sort(QList<PlayListTrack *> tracks, int mode);
void sortSelection(QList<PlayListTrack *> tracks, int mode);
+ void sortByColumn(QList <PlayListTrack *> tracks, int column);
void removeInvalidTracks(QList<PlayListTrack *> tracks, PlayListTrack *current_track);
void removeDuplicates(QList<PlayListTrack *> tracks, PlayListTrack *current_track);
diff --git a/src/qmmpui/playlisttrack.cpp b/src/qmmpui/playlisttrack.cpp
index f961db803..aaac75d28 100644
--- a/src/qmmpui/playlisttrack.cpp
+++ b/src/qmmpui/playlisttrack.cpp
@@ -26,7 +26,7 @@
PlayListTrack::PlayListTrack() : QMap<Qmmp::MetaData, QString>(), PlayListItem()
{
m_settings = QmmpUiSettings::instance();
- m_columnManager = m_settings->columnManager();
+ m_columnManager = m_settings->headerModel();
m_length = 0;
m_refCount = 0;
m_sheduledForDeletion = false;
@@ -36,7 +36,7 @@ PlayListTrack::PlayListTrack(const PlayListTrack &other) : QMap<Qmmp::MetaData,
PlayListItem()
{
m_settings = QmmpUiSettings::instance();
- m_columnManager = m_settings->columnManager();
+ m_columnManager = m_settings->headerModel();
m_refCount = 0;
m_sheduledForDeletion = false;
@@ -54,7 +54,7 @@ PlayListTrack::PlayListTrack(FileInfo *info) : QMap<Qmmp::MetaData, QString>(in
PlayListItem()
{
m_settings = QmmpUiSettings::instance();
- m_columnManager = m_settings->columnManager();
+ m_columnManager = m_settings->headerModel();
setLength(m_length = info->length());
insert(Qmmp::URL, info->path());
m_refCount = 0;
@@ -131,7 +131,7 @@ bool PlayListTrack::isUsed() const
const QString PlayListTrack::formattedTitle(int column)
{
- if(m_formattedTitles.count() != m_settings->columnManager()->count())
+ if(m_formattedTitles.count() != m_settings->headerModel()->count())
{
while(m_formattedTitles.count() > m_columnManager->count())
m_formattedTitles.takeLast();
@@ -154,7 +154,7 @@ const QString PlayListTrack::formattedTitle(int column)
if(m_formattedTitles[column].isEmpty() || m_titleFormats[column] != m_columnManager->pattern(column))
{
- m_titleFormats[column] = m_settings->columnManager()->pattern(column);
+ m_titleFormats[column] = m_settings->headerModel()->pattern(column);
formatTitle(column);
}
return m_formattedTitles[column];
@@ -162,7 +162,7 @@ const QString PlayListTrack::formattedTitle(int column)
const QStringList PlayListTrack::formattedTitles()
{
- if(m_formattedTitles.count() != m_settings->columnManager()->count())
+ if(m_formattedTitles.count() != m_settings->headerModel()->count())
{
while(m_formattedTitles.count() > m_columnManager->count())
m_formattedTitles.takeLast();
@@ -181,7 +181,7 @@ const QStringList PlayListTrack::formattedTitles()
{
if(m_formattedTitles[column].isEmpty() || m_titleFormats[column] != m_columnManager->pattern(column))
{
- m_titleFormats[column] = m_settings->columnManager()->pattern(column);
+ m_titleFormats[column] = m_settings->headerModel()->pattern(column);
formatTitle(column);
}
}
diff --git a/src/qmmpui/qmmpuisettings.cpp b/src/qmmpui/qmmpuisettings.cpp
index f28fefd19..abdcf8b7b 100644
--- a/src/qmmpui/qmmpuisettings.cpp
+++ b/src/qmmpui/qmmpuisettings.cpp
@@ -32,7 +32,7 @@ QmmpUiSettings::QmmpUiSettings(QObject *parent) : QObject(parent)
if(m_instance)
qFatal("QmmpUiSettings: only one instance is allowed");
m_instance = this;
- m_colum_manager = new PlayListHeaderModel(this);
+ m_header = new PlayListHeaderModel(this);
QSettings s (Qmmp::configFile(), QSettings::IniFormat);
s.beginGroup("PlayList");
m_group_format = s.value("group_format", "%p%if(%p&%a, - %if(%y,[%y] ,),)%a").toString();
@@ -312,14 +312,14 @@ bool QmmpUiSettings::clearPreviousPlayList() const
return m_clear_prev_playlist;
}
-PlayListHeaderModel *QmmpUiSettings::columnManager()
+PlayListHeaderModel *QmmpUiSettings::headerModel()
{
- return m_colum_manager;
+ return m_header;
}
const MetaDataFormatter *QmmpUiSettings::titleFormatter(int column) const
{
- return m_colum_manager->titleFormatter(column);
+ return m_header->titleFormatter(column);
}
const MetaDataFormatter *QmmpUiSettings::groupFormatter() const
diff --git a/src/qmmpui/qmmpuisettings.h b/src/qmmpui/qmmpuisettings.h
index 4c6b40b2f..7fcb81f3f 100644
--- a/src/qmmpui/qmmpuisettings.h
+++ b/src/qmmpui/qmmpuisettings.h
@@ -179,7 +179,7 @@ public:
*/
bool clearPreviousPlayList() const;
- PlayListHeaderModel *columnManager();
+ PlayListHeaderModel *headerModel();
const MetaDataFormatter* titleFormatter(int column) const;
const MetaDataFormatter* groupFormatter() const;
@@ -277,7 +277,7 @@ private:
//formatters
MetaDataFormatter m_group_formatter;
//column settings
- PlayListHeaderModel *m_colum_manager;
+ PlayListHeaderModel *m_header;
};
#endif // QMMPUISETTINGS_H