summaryrefslogtreecommitdiff
path: root/src/directoryrefresher.cpp
diff options
context:
space:
mode:
authorTannin <devnull@localhost>2014-06-16 21:49:57 +0200
committerTannin <devnull@localhost>2014-06-16 21:49:57 +0200
commit484749e612489336e5bfbe50ddc3cbe307069d4c (patch)
tree296dc49d05a82c4b331f734ef1caa906a0dc5162 /src/directoryrefresher.cpp
parent6d3f88b330f680459146ff1304c4752ffdbd1263 (diff)
- added pseudo-categories to filter for mo-managed vs. unmanaged mods
- deleted mods are now moved to the recycle bin instead of being deleted permanently - reduced modinfo dialog for foreign mods - foreign mods are now displayed with a pseudo-category - added a signal when a plugin is moved - bugfix: refreshing of directory structure for mods with bsas didn't work correctly when enabling a mod and on changing display of foreign mods - bugfix: one mod in the list was assigned the same priority on the directory structure as the data directory - bugfix: conflicts tab in the mod info dialog offered the hide option for files in bsas
Diffstat (limited to 'src/directoryrefresher.cpp')
-rw-r--r--src/directoryrefresher.cpp53
1 files changed, 26 insertions, 27 deletions
diff --git a/src/directoryrefresher.cpp b/src/directoryrefresher.cpp
index 33bde469..a00907a1 100644
--- a/src/directoryrefresher.cpp
+++ b/src/directoryrefresher.cpp
@@ -63,7 +63,6 @@ void DirectoryRefresher::setMods(const std::vector<std::tuple<QString, QString,
m_EnabledArchives = managedArchives;
}
-
void DirectoryRefresher::cleanStructure(DirectoryEntry *structure)
{
static wchar_t *files[] = { L"meta.ini", L"readme.txt" };
@@ -77,21 +76,27 @@ void DirectoryRefresher::cleanStructure(DirectoryEntry *structure)
}
}
-void DirectoryRefresher::addModToStructure(DirectoryEntry *directoryStructure
- , const QString &modName
- , int priority
- , const QString &directory
- , const QStringList &stealFiles
- , const QStringList &archives)
+void DirectoryRefresher::addModBSAToStructure(DirectoryEntry *directoryStructure, const QString &modName, int priority, const QString &directory, const QStringList &archives)
{
std::wstring directoryW = ToWString(QDir::toNativeSeparators(directory));
- std::wstring modNameW = ToWString(modName);
+ foreach (const QString &archive, archives) {
+ QFileInfo fileInfo(archive);
+ if (m_EnabledArchives.find(fileInfo.fileName()) != m_EnabledArchives.end()) {
+ directoryStructure->addFromBSA(ToWString(modName), directoryW,
+ ToWString(QDir::toNativeSeparators(fileInfo.absoluteFilePath())), priority);
+ }
+ }
+}
+
+void DirectoryRefresher::addModFilesToStructure(DirectoryEntry *directoryStructure, const QString &modName, int priority, const QString &directory, const QStringList &stealFiles)
+{
+ std::wstring directoryW = ToWString(QDir::toNativeSeparators(directory));
if (stealFiles.length() > 0) {
// instead of adding all the files of the target directory, we just change the root of the specified
// files to this mod
- directoryStructure->createOrigin(modNameW, directoryW, priority);
+ FilesOrigin origin = directoryStructure->createOrigin(ToWString(modName), directoryW, priority);
foreach (const QString &filename, stealFiles) {
QFileInfo fileInfo(filename);
FileEntry::Ptr file = directoryStructure->findFile(ToWString(fileInfo.fileName()));
@@ -99,30 +104,24 @@ void DirectoryRefresher::addModToStructure(DirectoryEntry *directoryStructure
if (file->getOrigin() == 0) {
// replace data as the origin on this bsa
file->removeOrigin(0);
- file->addOrigin(directoryStructure->getOriginByName(modNameW).getID(),
- file->getFileTime(), L"");
+ file->addOrigin(origin.getID(), file->getFileTime(), L"");
}
}
}
} else {
- directoryStructure->addFromOrigin(modNameW, directoryW, priority);
+ directoryStructure->addFromOrigin(ToWString(modName), directoryW, priority);
}
-/* QDir dir(directory);
- QFileInfoList bsaFiles = dir.entryInfoList(QStringList("*.bsa"), QDir::Files);
- foreach (QFileInfo file, bsaFiles) {
- if (m_EnabledArchives.find(file.fileName()) != m_EnabledArchives.end()) {
- directoryStructure->addFromBSA(ToWString(modName), directoryW,
- ToWString(QDir::toNativeSeparators(file.absoluteFilePath())), priority);
- }
- }*/
+}
- foreach (const QString &archive, archives) {
- QFileInfo fileInfo(archive);
- if (m_EnabledArchives.find(fileInfo.fileName()) != m_EnabledArchives.end()) {
- directoryStructure->addFromBSA(modNameW, directoryW,
- ToWString(QDir::toNativeSeparators(fileInfo.absoluteFilePath())), priority);
- }
- }
+void DirectoryRefresher::addModToStructure(DirectoryEntry *directoryStructure
+ , const QString &modName
+ , int priority
+ , const QString &directory
+ , const QStringList &stealFiles
+ , const QStringList &archives)
+{
+ addModFilesToStructure(directoryStructure, modName, priority, directory, stealFiles);
+ addModBSAToStructure(directoryStructure, modName, priority, directory, archives);
}
void DirectoryRefresher::refresh()