From 484749e612489336e5bfbe50ddc3cbe307069d4c Mon Sep 17 00:00:00 2001 From: Tannin Date: Mon, 16 Jun 2014 21:49:57 +0200 Subject: - 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 --- src/directoryrefresher.cpp | 53 +++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 27 deletions(-) (limited to 'src/directoryrefresher.cpp') 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::vectoraddFromBSA(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() -- cgit v1.3.1