aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/playlisttask_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qmmpui/playlisttask_p.h')
-rw-r--r--src/qmmpui/playlisttask_p.h52
1 files changed, 48 insertions, 4 deletions
diff --git a/src/qmmpui/playlisttask_p.h b/src/qmmpui/playlisttask_p.h
index 39159cfdf..14442b06b 100644
--- a/src/qmmpui/playlisttask_p.h
+++ b/src/qmmpui/playlisttask_p.h
@@ -21,16 +21,60 @@
#ifndef PLAYLISTTASK_P_H
#define PLAYLISTTASK_P_H
-#include <QRunnable>
+#include <QThread>
#include <QObject>
+#include <QHash>
+#include <QList>
+#include "playlistmodel.h"
+#include "playlistcontainer_p.h"
-class PlayListTask : public QRunnable, public QObject
+class PlayListTrack;
+struct TrackField;
+
+
+class PlayListTask : public QThread
{
Q_OBJECT
public:
- explicit PlayListTask(QObject *parent = 0);
-void run();
+ enum TaskType
+ {
+ EMPTY = -1,
+ SORT = 0,
+ SORT_SELECTION,
+ REMOVE_INVALID,
+ REMOVE_DUPLICATES
+ };
+ explicit PlayListTask(QObject *parent);
+
+ ~PlayListTask();
+
+ void sort(QList<PlayListTrack *> tracks, int mode);
+ void sortSelection(QList<PlayListTrack *> tracks, int mode);
+ void removeInvalidTracks(QList<PlayListTrack *> tracks, PlayListTrack *current_track);
+ void removeDuplicates(QList<PlayListTrack *> tracks, PlayListTrack *current_track);
+
+ void run();
+
+ TaskType type() const;
+ bool isChanged(PlayListContainer *container);
+ QList<PlayListTrack *> takeResults(PlayListTrack **current_track);
+ PlayListTrack *currentTrack() const;
+
+
+
+private:
+ void clear();
+ QList <TrackField *> m_fields;
+ QList <PlayListTrack *> m_tracks;
+ QList <PlayListTrack *> m_input_tracks;
+ QList<int> m_indexes;
+ PlayListTrack *m_current_track;
+ int m_sort_mode;
+ TaskType m_task;
+ bool m_reverted;
+ bool m_align_groups;
+ QHash<int, Qmmp::MetaData> m_sort_keys;
};