1 #include "searchengine.h"
3 #include "searchworker.h"
6 SearchEngine::SearchEngine(QObject
*parent
) :
10 m_searchWorker
= new SearchWorker
;
11 connect(m_searchWorker
, SIGNAL(matchFound(QString
)), this, SLOT(emitMatchFound(QString
)));
13 // pass worker end signals to QML
14 connect(m_searchWorker
, SIGNAL(progressChanged(QString
)),
15 this, SIGNAL(progressChanged(QString
)));
16 connect(m_searchWorker
, SIGNAL(done()), this, SIGNAL(workerDone()));
17 connect(m_searchWorker
, SIGNAL(errorOccurred(QString
, QString
)),
18 this, SIGNAL(workerErrorOccurred(QString
, QString
)));
20 connect(m_searchWorker
, SIGNAL(started()), this, SIGNAL(runningChanged()));
21 connect(m_searchWorker
, SIGNAL(finished()), this, SIGNAL(runningChanged()));
24 SearchEngine::~SearchEngine()
26 // is this the way to force stop the worker thread?
27 m_searchWorker
->cancel(); // stop possibly running background thread
28 m_searchWorker
->wait(); // wait until thread stops
29 delete m_searchWorker
; // delete it
32 void SearchEngine::setDir(QString dir
)
42 bool SearchEngine::running() const
44 return m_searchWorker
->isRunning();
47 void SearchEngine::search(QString searchTerm
)
49 // if search term is not empty, then restart search
50 if (!searchTerm
.isEmpty()) {
51 m_searchWorker
->cancel();
52 m_searchWorker
->wait();
53 m_searchWorker
->startSearch(m_dir
, searchTerm
);
57 void SearchEngine::cancel()
59 m_searchWorker
->cancel();
62 void SearchEngine::emitMatchFound(QString fullpath
)
64 QFileInfo
info(fullpath
);
65 emit
matchFound(fullpath
, info
.fileName(), info
.absoluteDir().absolutePath(),
66 infoToIconName(info
), infoToFileKind(info
));