diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2020-02-10 14:53:04 -0500 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2020-02-18 17:25:02 -0500 |
| commit | 3423b0a59337cf4cf99a24a1421ea33c4c641a22 (patch) | |
| tree | 3c0ff20c7fd7f74da1f16a8ac5410639e83ce2ed /src/directoryrefresher.h | |
| parent | 6ee4285588019c9842e221cd627f6627cf8ac2fa (diff) | |
threaded refresher
Diffstat (limited to 'src/directoryrefresher.h')
| -rw-r--r-- | src/directoryrefresher.h | 42 |
1 files changed, 24 insertions, 18 deletions
diff --git a/src/directoryrefresher.h b/src/directoryrefresher.h index a4fc5dbc..c531ba39 100644 --- a/src/directoryrefresher.h +++ b/src/directoryrefresher.h @@ -39,12 +39,23 @@ class DirectoryRefresher : public QObject Q_OBJECT
public:
+ struct EntryInfo {
+ EntryInfo(const QString &modName, const QString &absolutePath,
+ const QStringList &stealFiles, const QStringList &archives, int priority)
+ : modName(modName), absolutePath(absolutePath), stealFiles(stealFiles)
+ , archives(archives), priority(priority) {}
+ QString modName;
+ QString absolutePath;
+ QStringList stealFiles;
+ QStringList archives;
+ int priority;
+ };
/**
* @brief constructor
*
**/
- DirectoryRefresher();
+ DirectoryRefresher(std::size_t threadCount);
~DirectoryRefresher();
@@ -53,7 +64,7 @@ public: *
* returns a pointer to the updated directory structure. DirectoryRefresher
* deletes its own pointer and the caller takes custody of the pointer
- *
+ *
* @return updated directory structure
**/
MOShared::DirectoryEntry *getDirectoryStructure();
@@ -107,7 +118,13 @@ public: * @param directory
* @param stealFiles
*/
- void addModFilesToStructure(MOShared::DirectoryEntry *directoryStructure, const QString &modName, int priority, const QString &directory, const QStringList &stealFiles);
+ void addModFilesToStructure(
+ MOShared::DirectoryEntry *directoryStructure, const QString &modName,
+ int priority, const QString &directory, const QStringList &stealFiles);
+
+ void addMultipleModsFilesToStructure(
+ MOShared::DirectoryEntry *directoryStructure,
+ const std::vector<EntryInfo>& entries, bool emitProgress=false);
public slots:
@@ -123,26 +140,15 @@ signals: void refreshed();
private:
-
- struct EntryInfo {
- EntryInfo(const QString &modName, const QString &absolutePath,
- const QStringList &stealFiles, const QStringList &archives, int priority)
- : modName(modName), absolutePath(absolutePath), stealFiles(stealFiles)
- , archives(archives), priority(priority) {}
- QString modName;
- QString absolutePath;
- QStringList stealFiles;
- QStringList archives;
- int priority;
- };
-
-private:
-
std::vector<EntryInfo> m_Mods;
std::set<QString> m_EnabledArchives;
MOShared::DirectoryEntry *m_DirectoryStructure;
QMutex m_RefreshLock;
+ std::size_t m_threadCount;
+ void stealModFilesIntoStructure(
+ MOShared::DirectoryEntry *directoryStructure, const QString &modName,
+ int priority, const QString &directory, const QStringList &stealFiles);
};
#endif // DIRECTORYREFRESHER_H
|
