summaryrefslogtreecommitdiff
path: root/src/modinfowithconflictinfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modinfowithconflictinfo.cpp')
-rw-r--r--src/modinfowithconflictinfo.cpp37
1 files changed, 19 insertions, 18 deletions
diff --git a/src/modinfowithconflictinfo.cpp b/src/modinfowithconflictinfo.cpp
index 70f9b3f1..b1765669 100644
--- a/src/modinfowithconflictinfo.cpp
+++ b/src/modinfowithconflictinfo.cpp
@@ -145,19 +145,18 @@ void ModInfoWithConflictInfo::doConflictCheck() const
}
auto alternatives = file->getAlternatives();
- if ((alternatives.size() == 0) || (alternatives.back().first == dataID)) {
+ if ((alternatives.size() == 0) || (alternatives.back().originID == dataID)) {
// no alternatives -> no conflict
providesAnything = true;
} else {
// Get the archive data for the current mod
- bool found = file->getOrigin() == origin.getID();
- std::pair<std::wstring, int> archiveData;
- if (found)
+ DataArchiveOrigin archiveData;
+ if (file->getOrigin() == origin.getID())
archiveData = file->getArchive();
else {
- for (auto alts : alternatives) {
- if (alts.first == origin.getID()) {
- archiveData = alts.second;
+ for (auto alt : alternatives) {
+ if (alt.originID == origin.getID()) {
+ archiveData = alt.archive;
break;
}
}
@@ -167,25 +166,27 @@ void ModInfoWithConflictInfo::doConflictCheck() const
if (file->getOrigin() != origin.getID()) {
FilesOrigin &altOrigin = (*m_DirectoryStructure)->getOriginByID(file->getOrigin());
unsigned int altIndex = ModInfo::getIndex(ToQString(altOrigin.getName()));
- if (file->getArchive().first.size() == 0)
- if (archiveData.first.size() == 0)
+ if (!file->isFromArchive()) {
+ if (!archiveData.isValid())
m_OverwrittenList.insert(altIndex);
else
m_ArchiveLooseOverwrittenList.insert(altIndex);
- else
- m_ArchiveOverwrittenList.insert(altIndex);
+ }
+ else {
+ m_ArchiveOverwrittenList.insert(altIndex);
+ }
} else {
providesAnything = true;
}
// Sort out the alternatives
for (auto altInfo : alternatives) {
- if ((altInfo.first != dataID) && (altInfo.first != origin.getID())) {
- FilesOrigin &altOrigin = (*m_DirectoryStructure)->getOriginByID(altInfo.first);
+ if ((altInfo.originID != dataID) && (altInfo.originID != origin.getID())) {
+ FilesOrigin &altOrigin = (*m_DirectoryStructure)->getOriginByID(altInfo.originID);
QString altOriginName = ToQString(altOrigin.getName());
unsigned int altIndex = ModInfo::getIndex(altOriginName);
- if (altInfo.second.first.size() == 0) {
- if (archiveData.first.size() == 0) {
+ if (!altInfo.isFromArchive()) {
+ if (!archiveData.isValid()) {
if (origin.getPriority() > altOrigin.getPriority()) {
m_OverwriteList.insert(altIndex);
} else {
@@ -195,12 +196,12 @@ void ModInfoWithConflictInfo::doConflictCheck() const
m_ArchiveLooseOverwrittenList.insert(altIndex);
}
} else {
- if (archiveData.first.size() == 0) {
+ if (!archiveData.isValid()) {
m_ArchiveLooseOverwriteList.insert(altIndex);
} else {
- if (archiveData.second > altInfo.second.second) {
+ if (archiveData.order > altInfo.archive.order) {
m_ArchiveOverwriteList.insert(altIndex);
- } else if (archiveData.second < altInfo.second.second) {
+ } else if (archiveData.order < altInfo.archive.order) {
m_ArchiveOverwrittenList.insert(altIndex);
}
}