From b7935aedec70dd4f0c40dbe948dba9a80a56a75a Mon Sep 17 00:00:00 2001 From: AL <26797547+Al12rs@users.noreply.github.com> Date: Sat, 31 Oct 2020 20:58:07 +0100 Subject: Change Alternatives vector to use a struct --- src/modinfodialogconflicts.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'src/modinfodialogconflicts.cpp') diff --git a/src/modinfodialogconflicts.cpp b/src/modinfodialogconflicts.cpp index f11b31c1..205d807b 100644 --- a/src/modinfodialogconflicts.cpp +++ b/src/modinfodialogconflicts.cpp @@ -520,7 +520,7 @@ std::vector ConflictsTab::createGotoActions(const ConflictItem* item) // add all alternatives for (const auto& alt : file->getAlternatives()) { - const auto& o = ds.getOriginByID(alt.first); + const auto& o = ds.getOriginByID(alt.originID); if (o.getID() != origin()->getID()) { mods.push_back(ToQString(o.getName())); } @@ -683,7 +683,7 @@ bool GeneralConflictsTab::update() auto currId = m_tab->origin()->getID(); auto currModAlt = std::find_if(alternatives.begin(), alternatives.end(), [&currId](auto const& alt) { - return currId == alt.first; + return currId == alt.originID; }); if (currModAlt == alternatives.end()) { @@ -691,7 +691,7 @@ bool GeneralConflictsTab::update() continue; } - bool currModFileArchive = currModAlt->second.first.size() > 0; + bool currModFileArchive = currModAlt->isFromArchive(); m_overwrittenModel->add(createOverwrittenItem( file->getIndex(), fileOrigin, archive, @@ -731,10 +731,10 @@ ConflictItem GeneralConflictsTab::createOverwriteItem( altString += L", "; } - altString += ds.getOriginByID(alt.first).getName(); + altString += ds.getOriginByID(alt.originID).getName(); } - auto origin = ToQString(ds.getOriginByID(alternatives.back().first).getName()); + auto origin = ToQString(ds.getOriginByID(alternatives.back().originID).getName()); return ConflictItem( ToQString(altString), std::move(relativeName), QString(), index, @@ -1005,7 +1005,7 @@ std::optional AdvancedConflictsTab::createItem( if (showAllAlts) { for (const auto& alt : alternatives) { - const auto& altOrigin = ds.getOriginByID(alt.first); + const auto& altOrigin = ds.getOriginByID(alt.originID); if (!before.empty()) { before += L", "; } @@ -1015,7 +1015,7 @@ std::optional AdvancedConflictsTab::createItem( } else { // only add nearest, which is the last element of alternatives - const auto& altOrigin = ds.getOriginByID(alternatives.back().first); + const auto& altOrigin = ds.getOriginByID(alternatives.back().originID); before += altOrigin.getName(); } @@ -1028,7 +1028,7 @@ std::optional AdvancedConflictsTab::createItem( auto currModIter = std::find_if(alternatives.begin(), alternatives.end(), [&currOrgId](auto const& alt) { - return currOrgId == alt.first; + return currOrgId == alt.originID; }); if (currModIter == alternatives.end()) { @@ -1036,7 +1036,7 @@ std::optional AdvancedConflictsTab::createItem( return {}; } - isCurrOrigArchive = currModIter->second.first.size() > 0; + isCurrOrigArchive = currModIter->isFromArchive(); if (showAllAlts) { // fills 'before' and 'after' with all the alternatives that come @@ -1045,7 +1045,7 @@ std::optional AdvancedConflictsTab::createItem( for (auto iter = alternatives.begin(); iter != alternatives.end(); iter++) { - const auto& altOrigin = ds.getOriginByID(iter->first); + const auto& altOrigin = ds.getOriginByID(iter->originID); if (iter < currModIter) { // mod comes before current @@ -1080,13 +1080,13 @@ std::optional AdvancedConflictsTab::createItem( // before if (currModIter > alternatives.begin()) { - auto previousOrigId = (currModIter-1)->first; + auto previousOrigId = (currModIter-1)->originID; before += ds.getOriginByID(previousOrigId).getName(); } // after if (currModIter < (alternatives.end() - 1)) { - auto followingOrigId = (currModIter + 1)->first; + auto followingOrigId = (currModIter + 1)->originID; after += ds.getOriginByID(followingOrigId).getName(); } else { -- cgit v1.3.1 From 4814ba626e80f5137076556b687e59e6bbd8be34 Mon Sep 17 00:00:00 2001 From: AL <26797547+Al12rs@users.noreply.github.com> Date: Mon, 2 Nov 2020 21:45:32 +0100 Subject: Convert FileAlternative and DataArchiveOrigin to classes --- src/filetree.cpp | 8 ++++---- src/filetreemodel.cpp | 6 +++--- src/modinfodialogconflicts.cpp | 20 ++++++++++---------- src/modinfowithconflictinfo.cpp | 14 +++++++------- src/organizercore.cpp | 14 +++++++------- src/pluginlist.cpp | 2 +- src/shared/fileentry.cpp | 34 +++++++++++++++++----------------- src/shared/fileregister.cpp | 2 +- src/shared/fileregisterfwd.h | 37 ++++++++++++++++++++++++++----------- src/syncoverwritedialog.cpp | 2 +- 10 files changed, 77 insertions(+), 62 deletions(-) (limited to 'src/modinfodialogconflicts.cpp') diff --git a/src/filetree.cpp b/src/filetree.cpp index 230d7d7e..f46216b5 100644 --- a/src/filetree.cpp +++ b/src/filetree.cpp @@ -591,16 +591,16 @@ bool FileTree::showShellMenu(QPoint pos) } for (auto&& alt : alts) { - auto itor = menus.find(alt.originID); + auto itor = menus.find(alt.originID()); if (itor == menus.end()) { - itor = menus.emplace(alt.originID, mw).first; + itor = menus.emplace(alt.originID(), mw).first; } - const auto fullPath = file->getFullPath(alt.originID); + const auto fullPath = file->getFullPath(alt.originID()); if (fullPath.empty()) { log::error( "file {} not found in origin {}", - item->dataRelativeFilePath(), alt.originID); + item->dataRelativeFilePath(), alt.originID()); continue; } diff --git a/src/filetreemodel.cpp b/src/filetreemodel.cpp index af2cac44..7095f492 100644 --- a/src/filetreemodel.cpp +++ b/src/filetreemodel.cpp @@ -1129,8 +1129,8 @@ std::wstring FileTreeModel::makeModName( std::wstring name = origin.getName(); const auto& archive = file.getArchive(); - if (!archive.name.empty()) { - name += L" (" + archive.name + L")"; + if (!archive.name().empty()) { + name += L" (" + archive.name() + L")"; } return name; @@ -1184,7 +1184,7 @@ QString FileTreeModel::makeTooltip(const FileTreeItem& item) const QStringList list; for (auto&& alt : alternatives) { - const auto& origin = m_core.directoryStructure()->getOriginByID(alt.originID); + const auto& origin = m_core.directoryStructure()->getOriginByID(alt.originID()); list.push_back(QString::fromStdWString(origin.getName())); } diff --git a/src/modinfodialogconflicts.cpp b/src/modinfodialogconflicts.cpp index 205d807b..0103b58a 100644 --- a/src/modinfodialogconflicts.cpp +++ b/src/modinfodialogconflicts.cpp @@ -520,7 +520,7 @@ std::vector ConflictsTab::createGotoActions(const ConflictItem* item) // add all alternatives for (const auto& alt : file->getAlternatives()) { - const auto& o = ds.getOriginByID(alt.originID); + const auto& o = ds.getOriginByID(alt.originID()); if (o.getID() != origin()->getID()) { mods.push_back(ToQString(o.getName())); } @@ -683,7 +683,7 @@ bool GeneralConflictsTab::update() auto currId = m_tab->origin()->getID(); auto currModAlt = std::find_if(alternatives.begin(), alternatives.end(), [&currId](auto const& alt) { - return currId == alt.originID; + return currId == alt.originID(); }); if (currModAlt == alternatives.end()) { @@ -731,10 +731,10 @@ ConflictItem GeneralConflictsTab::createOverwriteItem( altString += L", "; } - altString += ds.getOriginByID(alt.originID).getName(); + altString += ds.getOriginByID(alt.originID()).getName(); } - auto origin = ToQString(ds.getOriginByID(alternatives.back().originID).getName()); + auto origin = ToQString(ds.getOriginByID(alternatives.back().originID()).getName()); return ConflictItem( ToQString(altString), std::move(relativeName), QString(), index, @@ -1005,7 +1005,7 @@ std::optional AdvancedConflictsTab::createItem( if (showAllAlts) { for (const auto& alt : alternatives) { - const auto& altOrigin = ds.getOriginByID(alt.originID); + const auto& altOrigin = ds.getOriginByID(alt.originID()); if (!before.empty()) { before += L", "; } @@ -1015,7 +1015,7 @@ std::optional AdvancedConflictsTab::createItem( } else { // only add nearest, which is the last element of alternatives - const auto& altOrigin = ds.getOriginByID(alternatives.back().originID); + const auto& altOrigin = ds.getOriginByID(alternatives.back().originID()); before += altOrigin.getName(); } @@ -1028,7 +1028,7 @@ std::optional AdvancedConflictsTab::createItem( auto currModIter = std::find_if(alternatives.begin(), alternatives.end(), [&currOrgId](auto const& alt) { - return currOrgId == alt.originID; + return currOrgId == alt.originID(); }); if (currModIter == alternatives.end()) { @@ -1045,7 +1045,7 @@ std::optional AdvancedConflictsTab::createItem( for (auto iter = alternatives.begin(); iter != alternatives.end(); iter++) { - const auto& altOrigin = ds.getOriginByID(iter->originID); + const auto& altOrigin = ds.getOriginByID(iter->originID()); if (iter < currModIter) { // mod comes before current @@ -1080,13 +1080,13 @@ std::optional AdvancedConflictsTab::createItem( // before if (currModIter > alternatives.begin()) { - auto previousOrigId = (currModIter-1)->originID; + auto previousOrigId = (currModIter-1)->originID(); before += ds.getOriginByID(previousOrigId).getName(); } // after if (currModIter < (alternatives.end() - 1)) { - auto followingOrigId = (currModIter + 1)->originID; + auto followingOrigId = (currModIter + 1)->originID(); after += ds.getOriginByID(followingOrigId).getName(); } else { diff --git a/src/modinfowithconflictinfo.cpp b/src/modinfowithconflictinfo.cpp index b1765669..3db41147 100644 --- a/src/modinfowithconflictinfo.cpp +++ b/src/modinfowithconflictinfo.cpp @@ -145,7 +145,7 @@ void ModInfoWithConflictInfo::doConflictCheck() const } auto alternatives = file->getAlternatives(); - if ((alternatives.size() == 0) || (alternatives.back().originID == dataID)) { + if ((alternatives.size() == 0) || (alternatives.back().originID() == dataID)) { // no alternatives -> no conflict providesAnything = true; } else { @@ -155,8 +155,8 @@ void ModInfoWithConflictInfo::doConflictCheck() const archiveData = file->getArchive(); else { for (auto alt : alternatives) { - if (alt.originID == origin.getID()) { - archiveData = alt.archive; + if (alt.originID() == origin.getID()) { + archiveData = alt.archive(); break; } } @@ -181,8 +181,8 @@ void ModInfoWithConflictInfo::doConflictCheck() const // Sort out the alternatives for (auto altInfo : alternatives) { - if ((altInfo.originID != dataID) && (altInfo.originID != origin.getID())) { - FilesOrigin &altOrigin = (*m_DirectoryStructure)->getOriginByID(altInfo.originID); + 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.isFromArchive()) { @@ -199,9 +199,9 @@ void ModInfoWithConflictInfo::doConflictCheck() const if (!archiveData.isValid()) { m_ArchiveLooseOverwriteList.insert(altIndex); } else { - if (archiveData.order > altInfo.archive.order) { + if (archiveData.order() > altInfo.archive().order()) { m_ArchiveOverwriteList.insert(altIndex); - } else if (archiveData.order < altInfo.archive.order) { + } else if (archiveData.order() < altInfo.archive().order()) { m_ArchiveOverwrittenList.insert(altIndex); } } diff --git a/src/organizercore.cpp b/src/organizercore.cpp index df47c75d..608e13b6 100644 --- a/src/organizercore.cpp +++ b/src/organizercore.cpp @@ -921,7 +921,7 @@ QStringList OrganizerCore::getFileOrigins(const QString &fileName) const m_DirectoryStructure->getOriginByID(file->getOrigin()).getName())); foreach (auto i, file->getAlternatives()) { result.append( - ToQString(m_DirectoryStructure->getOriginByID(i.originID).getName())); + ToQString(m_DirectoryStructure->getOriginByID(i.originID()).getName())); } } return result; @@ -945,10 +945,10 @@ QList OrganizerCore::findFileInfos( info.origins.append(ToQString( m_DirectoryStructure->getOriginByID(file->getOrigin(fromArchive)) .getName())); - info.archive = fromArchive ? ToQString(file->getArchive().name) : ""; + info.archive = fromArchive ? ToQString(file->getArchive().name()) : ""; foreach (auto idx, file->getAlternatives()) { info.origins.append( - ToQString(m_DirectoryStructure->getOriginByID(idx.originID).getName())); + ToQString(m_DirectoryStructure->getOriginByID(idx.originID()).getName())); } if (filter(info)) { @@ -1049,7 +1049,7 @@ bool OrganizerCore::previewFileWithAlternatives( // don't bother with the vector of origins, just add them as they come addFunc(file->getOrigin()); for (auto alt : file->getAlternatives()) { - addFunc(alt.originID); + addFunc(alt.originID()); } } else { std::vector origins; @@ -1059,10 +1059,10 @@ bool OrganizerCore::previewFileWithAlternatives( // add other origins, push to front if it's the selected one for (auto alt : file->getAlternatives()) { - if (alt.originID == selectedOrigin) { - origins.insert(origins.begin(), alt.originID); + if (alt.originID() == selectedOrigin) { + origins.insert(origins.begin(), alt.originID()); } else { - origins.push_back(alt.originID); + origins.push_back(alt.originID()); } } diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index e45326c6..a4c1ec6d 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -154,7 +154,7 @@ void PluginList::highlightPlugins(const QItemSelectionModel *selection, const MO MOShared::FileEntryPtr file = directoryEntry.findFile(plugin.toStdWString()); if (file && file->getOrigin() != origin.getID()) { const auto alternatives = file->getAlternatives(); - if (std::find_if(alternatives.begin(), alternatives.end(), [&](const FileAlternative& element) { return element.originID == origin.getID(); }) == alternatives.end()) + if (std::find_if(alternatives.begin(), alternatives.end(), [&](const FileAlternative& element) { return element.originID() == origin.getID(); }) == alternatives.end()) continue; } std::map::iterator iter = m_ESPsByName.find(plugin.toLower()); diff --git a/src/shared/fileentry.cpp b/src/shared/fileentry.cpp index 3e354bc9..559eae64 100644 --- a/src/shared/fileentry.cpp +++ b/src/shared/fileentry.cpp @@ -44,7 +44,7 @@ void FileEntry::addOrigin( auto itor = std::find_if( m_Alternatives.begin(), m_Alternatives.end(), - [&](auto&& i) { return i.originID == m_Origin; }); + [&](auto&& i) { return i.originID() == m_Origin; }); if (itor == m_Alternatives.end()) { m_Alternatives.push_back({m_Origin, m_Archive}); @@ -64,13 +64,13 @@ void FileEntry::addOrigin( } for (auto iter = m_Alternatives.begin(); iter != m_Alternatives.end(); ++iter) { - if (iter->originID == origin) { + if (iter->originID() == origin) { // already an origin return; } if ((m_Parent != nullptr) && - (m_Parent->getOriginByID(iter->originID).getPriority() < m_Parent->getOriginByID(origin).getPriority())) { + (m_Parent->getOriginByID(iter->originID()).getPriority() < m_Parent->getOriginByID(origin).getPriority())) { m_Alternatives.insert(iter, {origin, {std::wstring(archive.begin(), archive.end()), order}}); found = true; break; @@ -92,17 +92,17 @@ bool FileEntry::removeOrigin(OriginID origin) // find alternative with the highest priority auto currentIter = m_Alternatives.begin(); for (auto iter = m_Alternatives.begin(); iter != m_Alternatives.end(); ++iter) { - if (iter->originID != origin) { + if (iter->originID() != origin) { //Both files are not from archives. if (!iter->isFromArchive() && !currentIter->isFromArchive()) { - if ((m_Parent->getOriginByID(iter->originID).getPriority() > m_Parent->getOriginByID(currentIter->originID).getPriority())) { + if ((m_Parent->getOriginByID(iter->originID()).getPriority() > m_Parent->getOriginByID(currentIter->originID()).getPriority())) { currentIter = iter; } } else { //Both files are from archives if (iter->isFromArchive() && currentIter->isFromArchive()) { - if (iter->archive.order > currentIter->archive.order) { + if (iter->archive().order() > currentIter->archive().order()) { currentIter = iter; } } @@ -116,8 +116,8 @@ bool FileEntry::removeOrigin(OriginID origin) } } - OriginID currentID = currentIter->originID; - m_Archive = currentIter->archive; + OriginID currentID = currentIter->originID(); + m_Archive = currentIter->archive(); m_Alternatives.erase(currentIter); m_Origin = currentID; @@ -129,7 +129,7 @@ bool FileEntry::removeOrigin(OriginID origin) } else { auto newEnd = std::remove_if( m_Alternatives.begin(), m_Alternatives.end(), - [&](auto &i) { return i.originID == origin; }); + [&](auto &i) { return i.originID() == origin; }); if (newEnd != m_Alternatives.end()) { m_Alternatives.erase(newEnd, m_Alternatives.end()); @@ -146,12 +146,12 @@ void FileEntry::sortOrigins() std::sort(m_Alternatives.begin(), m_Alternatives.end(), [&](auto&& LHS, auto&& RHS) { if (!LHS.isFromArchive() && !RHS.isFromArchive()) { - int l = m_Parent->getOriginByID(LHS.originID).getPriority(); + int l = m_Parent->getOriginByID(LHS.originID()).getPriority(); if (l < 0) { l = INT_MAX; } - int r = m_Parent->getOriginByID(RHS.originID).getPriority(); + int r = m_Parent->getOriginByID(RHS.originID()).getPriority(); if (r < 0) { r = INT_MAX; } @@ -160,8 +160,8 @@ void FileEntry::sortOrigins() } if (LHS.isFromArchive() && RHS.isFromArchive()) { - int l = LHS.archive.order; if (l < 0) l = INT_MAX; - int r = RHS.archive.order; if (r < 0) r = INT_MAX; + int l = LHS.archive().order(); if (l < 0) l = INT_MAX; + int r = RHS.archive().order(); if (r < 0) r = INT_MAX; return l < r; } @@ -174,8 +174,8 @@ void FileEntry::sortOrigins() }); if (!m_Alternatives.empty()) { - m_Origin = m_Alternatives.back().originID; - m_Archive = m_Alternatives.back().archive; + m_Origin = m_Alternatives.back().originID(); + m_Archive = m_Alternatives.back().archive(); m_Alternatives.pop_back(); } } @@ -188,12 +188,12 @@ bool FileEntry::isFromArchive(std::wstring archiveName) const return m_Archive.isValid(); } - if (m_Archive.name.compare(archiveName) == 0) { + if (m_Archive.name().compare(archiveName) == 0) { return true; } for (auto alternative : m_Alternatives) { - if (alternative.archive.name.compare(archiveName) == 0) { + if (alternative.archive().name().compare(archiveName) == 0) { return true; } } diff --git a/src/shared/fileregister.cpp b/src/shared/fileregister.cpp index d5a23a7a..f9d57734 100644 --- a/src/shared/fileregister.cpp +++ b/src/shared/fileregister.cpp @@ -172,7 +172,7 @@ void FileRegister::unregisterFile(FileEntryPtr file) const auto& alternatives = file->getAlternatives(); for (auto iter = alternatives.begin(); iter != alternatives.end(); ++iter) { - m_OriginConnection->getByID(iter->originID).removeFile(file->getIndex()); + m_OriginConnection->getByID(iter->originID()).removeFile(file->getIndex()); } // unregister from directory diff --git a/src/shared/fileregisterfwd.h b/src/shared/fileregisterfwd.h index a3cf8132..57b3715a 100644 --- a/src/shared/fileregisterfwd.h +++ b/src/shared/fileregisterfwd.h @@ -46,29 +46,44 @@ constexpr OriginID InvalidOriginID = -1; // is the order of the associated plugin in the plugins list // is a file is not in an archive, archiveName is empty and order is usually // -1 -struct DataArchiveOrigin +class DataArchiveOrigin { - std::wstring name = L""; - int order = -1; + std::wstring name_ = L""; + int order_ = -1; + +public: + + int order() const { return order_; } + const std::wstring& name() const { return name_; } bool isValid() const { - return name.size() > 0; + return name_.size() > 0; } - DataArchiveOrigin(std::wstring pname, int porder) - : name(pname), order(porder) {} + DataArchiveOrigin(std::wstring name, int order) + : name_(std::move(name)), order_(order) {} - DataArchiveOrigin() {} + DataArchiveOrigin() = default; }; -struct FileAlternative +class FileAlternative { - OriginID originID = -1; - DataArchiveOrigin archive; + OriginID originID_ = -1; + DataArchiveOrigin archive_; + +public: + + OriginID originID() const { return originID_; } + const DataArchiveOrigin& archive() const { return archive_; } bool isFromArchive() const { - return archive.isValid(); + return archive_.isValid(); } + + FileAlternative() = default; + + FileAlternative(OriginID originID, DataArchiveOrigin archive) + : originID_(originID), archive_(std::move(archive)) {} }; using AlternativesVector = std::vector; diff --git a/src/syncoverwritedialog.cpp b/src/syncoverwritedialog.cpp index 9d99f586..e777fb8a 100644 --- a/src/syncoverwritedialog.cpp +++ b/src/syncoverwritedialog.cpp @@ -104,7 +104,7 @@ void SyncOverwriteDialog::readTree(const QString &path, DirectoryEntry *director addToComboBox(combo, ToQString(m_DirectoryStructure->getOriginByID(origin).getName()), origin); const auto &alternatives = entry->getAlternatives(); for (auto iter = alternatives.begin(); iter != alternatives.end(); ++iter) { - addToComboBox(combo, ToQString(m_DirectoryStructure->getOriginByID(iter->originID).getName()), iter->originID); + addToComboBox(combo, ToQString(m_DirectoryStructure->getOriginByID(iter->originID()).getName()), iter->originID()); } combo->setCurrentIndex(combo->count() - 1); } else { -- cgit v1.3.1