X-Git-Url: https://www.flypig.org.uk/git/?p=openvpnui.git;a=blobdiff_plain;f=src%2Ffilebrowse%2Fsearchworker.h;fp=src%2Ffilebrowse%2Fsearchworker.h;h=2714d53531709c1a8823f8e4a200942f2e6b3745;hp=0000000000000000000000000000000000000000;hb=e24363e314aca32e7bee952f02f517a04a8dc5f2;hpb=ee3968ffa08d4e0fcbad87765efa3aeb32ff0554 diff --git a/src/filebrowse/searchworker.h b/src/filebrowse/searchworker.h new file mode 100644 index 0000000..2714d53 --- /dev/null +++ b/src/filebrowse/searchworker.h @@ -0,0 +1,48 @@ +#ifndef SEARCHWORKER_H +#define SEARCHWORKER_H + +#include +#include + +/** + * @brief SearchWorker does searching in the background. + */ +class SearchWorker : public QThread +{ + Q_OBJECT + +public: + explicit SearchWorker(QObject *parent = 0); + ~SearchWorker(); + + void startSearch(QString directory, QString searchTerm); + + void cancel(); + +signals: // signals, can be connected from a thread to another + + void progressChanged(QString directory); + + void matchFound(QString fullname); + + // one of these is emitted when thread ends + void done(); + void errorOccurred(QString message, QString filename); + +protected: + void run(); + +private: + enum CancelStatus { + Cancelled = 0, NotCancelled = 1 + }; + + QString searchRecursively(QString directory, QString searchTerm); + + QString m_directory; + QString m_searchTerm; + QAtomicInt m_cancelled; // atomic so no locks needed + QString m_currentDirectory; +}; + +#endif // SEARCHWORKER_H