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
    FilesOrigin &origin = directoryStructure->createOrigin(ToWString(modName), directoryW, priority);
    for (const QString &filename : stealFiles) {
      QFileInfo fileInfo(filename);
      FileEntry::Ptr file = directoryStructure->findFile(ToWString(fileInfo.fileName()));
      if (file.get() != nullptr) {
        if (file->getOrigin() == 0) {
          // replace data as the origin on this bsa
          file->removeOrigin(0);
        }
        origin.addFile(file->getIndex());
        file->addOrigin(origin.getID(), file->getFileTime(), L"");
      } else {
        qWarning("%s not found", qPrintable(fileInfo.fileName()));
      }
    }
  } else {
    directoryStructure->addFromOrigin(ToWString(modName), directoryW, priority);
  }
}