summaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2020-02-10 14:53:04 -0500
committerisanae <14251494+isanae@users.noreply.github.com>2020-02-18 17:25:02 -0500
commit3423b0a59337cf4cf99a24a1421ea33c4c641a22 (patch)
tree3c0ff20c7fd7f74da1f16a8ac5410639e83ce2ed /src/shared
parent6ee4285588019c9842e221cd627f6627cf8ac2fa (diff)
threaded refresher
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/directoryentry.cpp27
-rw-r--r--src/shared/directoryentry.h8
2 files changed, 35 insertions, 0 deletions
diff --git a/src/shared/directoryentry.cpp b/src/shared/directoryentry.cpp
index d171be38..b7329833 100644
--- a/src/shared/directoryentry.cpp
+++ b/src/shared/directoryentry.cpp
@@ -691,6 +691,33 @@ void DirectoryEntry::addFromOrigin(
m_Populated = true;
}
+void DirectoryEntry::addFromList(
+ const std::wstring &originName, const std::wstring &directory,
+ env::Directory& root, int priority)
+{
+ FilesOrigin &origin = createOrigin(originName, directory, priority);
+ addDir(origin, root);
+}
+
+void DirectoryEntry::addDir(FilesOrigin& origin, env::Directory& d)
+{
+ for (auto& sd : d.dirs) {
+ auto* sdirEntry = getSubDirectory(sd.name, true, origin.getID());
+ sdirEntry->addDir(origin, sd);
+ }
+
+ for (auto& f : d.files) {
+ insert(f.name, origin, f.ft, L"", -1);
+ }
+
+ std::sort(
+ m_SubDirectories.begin(),
+ m_SubDirectories.end(),
+ &DirCompareByName);
+
+ m_Populated = true;
+}
+
void DirectoryEntry::addFromBSA(
const std::wstring &originName, std::wstring &directory,
const std::wstring &fileName, int priority, int order)
diff --git a/src/shared/directoryentry.h b/src/shared/directoryentry.h
index 58e70ffa..772899d7 100644
--- a/src/shared/directoryentry.h
+++ b/src/shared/directoryentry.h
@@ -33,7 +33,9 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include <boost/shared_ptr.hpp>
#include <boost/weak_ptr.hpp>
#endif
+
#include "util.h"
+#include "envfs.h"
namespace MOShared { struct DirectoryEntryFileKey; }
@@ -358,6 +360,10 @@ public:
const std::wstring &originName, std::wstring &directory,
const std::wstring &fileName, int priority, int order);
+ void addFromList(
+ const std::wstring &originName, const std::wstring &directory,
+ env::Directory& root, int priority);
+
void propagateOrigin(int origin);
const std::wstring &getName() const
@@ -511,6 +517,8 @@ private:
FilesOrigin &origin, BSA::Folder::Ptr archiveFolder, FILETIME &fileTime,
const std::wstring &archiveName, int order);
+ void addDir(FilesOrigin& origin, env::Directory& d);
+
DirectoryEntry* getSubDirectory(
std::wstring_view name, bool create, int originID = -1);