summaryrefslogtreecommitdiff
path: root/src/modinfowithconflictinfo.cpp
diff options
context:
space:
mode:
authorAl <26797547+Al12rs@users.noreply.github.com>2020-11-03 05:48:51 -0800
committerGitHub <noreply@github.com>2020-11-03 05:48:51 -0800
commita7d4f2a0c40d35d547e93994be3f92b6d43a0833 (patch)
tree823e38d3f0af39be96a4a2b2d8264b7c851ed08b /src/modinfowithconflictinfo.cpp
parent88475677d29a275fd9d25f452f58d3d745720124 (diff)
parentc5e3fb423fd144faa2db8f2bb156adba6c003d39 (diff)
Merge pull request #1276 from ModOrganizer2/alternatives_vector_refactor
Refactor of alternatives vector to use classes for readability.
Diffstat (limited to 'src/modinfowithconflictinfo.cpp')
-rw-r--r--src/modinfowithconflictinfo.cpp39
1 files changed, 20 insertions, 19 deletions
diff --git a/src/modinfowithconflictinfo.cpp b/src/modinfowithconflictinfo.cpp
index 70f9b3f1..24c154e6 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 (const 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);
+ for (const auto& altInfo : alternatives) {
+ 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);
}
}