blob: 08c15630d21012c5c2b521977714643c5ed3e726 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
/*
* browsethread.h (C) 2011 Tobias Rafreider
*/
#pragma once
#include <QThread>
#include <QMutex>
#include <QWaitCondition>
#include <QStandardItem>
#include <QList>
#include <QSharedPointer>
#include <QWeakPointer>
#include "util/file.h"
// This class is a singleton and represents a thread
// that is used to read ID3 metadata
// from a particular folder.
//
// The BrowseTableModel uses this class.
// Note: Don't call getInstance() from places
// other than the GUI thread.
class BrowseTableModel;
class BrowseThread;
typedef QSharedPointer<BrowseThread> BrowseThreadPointer;
class BrowseThread : public QThread {
Q_OBJECT
public:
virtual ~BrowseThread();
void executePopulation(const MDir& path, BrowseTableModel* client);
void run();
static BrowseThreadPointer getInstanceRef();
signals:
void rowsAppended(const QList< QList<QStandardItem*> >&, BrowseTableModel*);
void clearModel(BrowseTableModel*);
private:
BrowseThread(QObject *parent = 0);
void populateModel();
QMutex m_mutex;
QWaitCondition m_locationUpdated;
volatile bool m_bStopThread;
// You must hold m_path_mutex to touch m_path or m_model_observer
QMutex m_path_mutex;
MDir m_path;
BrowseTableModel* m_model_observer;
static QWeakPointer<BrowseThread> m_weakInstanceRef;
};
|