diff options
| author | Jonathan Feenstra <26406078+JonathanFeenstra@users.noreply.github.com> | 2024-10-30 16:20:39 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-30 16:20:39 +0100 |
| commit | 91912f5fef80d870fe8ef3041076306843da6153 (patch) | |
| tree | 7b25873fd0e9bd957a4d0afcfc657662e2e0e59e /src/modinforegular.cpp | |
| parent | f42a9f1cef66907086edaa7bb005d434758f6326 (diff) | |
(Un-)endorse & (un-)track mods from the same source (#2141)
Diffstat (limited to 'src/modinforegular.cpp')
| -rw-r--r-- | src/modinforegular.cpp | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/src/modinforegular.cpp b/src/modinforegular.cpp index d3ff6547..b33bbc44 100644 --- a/src/modinforegular.cpp +++ b/src/modinforegular.cpp @@ -369,26 +369,33 @@ void ModInfoRegular::nxmDescriptionAvailable(QString, int, QVariant, void ModInfoRegular::nxmEndorsementToggled(QString, int, QVariant, QVariant resultData) { QMap results = resultData.toMap(); - if (results["status"].toString().compare("Endorsed") == 0) { - m_EndorsedState = EndorsedState::ENDORSED_TRUE; - } else if (results["status"].toString().compare("Abstained") == 0) { - m_EndorsedState = EndorsedState::ENDORSED_NEVER; - } else { - m_EndorsedState = EndorsedState::ENDORSED_FALSE; + QMutexLocker locker(&s_Mutex); + for (auto& mod : s_Collection) { + if (mod->gameName().compare(m_GameName, Qt::CaseInsensitive) == 0 && + mod->nexusId() == m_NexusID) { + if (results["status"].toString().compare("Endorsed") == 0) { + mod->setIsEndorsed(true); + } else if (results["status"].toString().compare("Abstained") == 0) { + mod->setNeverEndorse(); + } else { + mod->setIsEndorsed(false); + } + mod->saveMeta(); + } } - m_MetaInfoChanged = true; - saveMeta(); emit modDetailsUpdated(true); } void ModInfoRegular::nxmTrackingToggled(QString, int, QVariant, bool tracked) { - if (tracked) - m_TrackedState = TrackedState::TRACKED_TRUE; - else - m_TrackedState = TrackedState::TRACKED_FALSE; - m_MetaInfoChanged = true; - saveMeta(); + QMutexLocker locker(&s_Mutex); + for (auto& mod : s_Collection) { + if (mod->gameName().compare(m_GameName, Qt::CaseInsensitive) == 0 && + mod->nexusId() == m_NexusID) { + mod->setIsTracked(tracked); + mod->saveMeta(); + } + } emit modDetailsUpdated(true); } @@ -583,11 +590,9 @@ void ModInfoRegular::addNexusCategory(int categoryID) void ModInfoRegular::setIsEndorsed(bool endorsed) { - if (m_EndorsedState != EndorsedState::ENDORSED_NEVER) { - m_EndorsedState = - endorsed ? EndorsedState::ENDORSED_TRUE : EndorsedState::ENDORSED_FALSE; - m_MetaInfoChanged = true; - } + m_EndorsedState = + endorsed ? EndorsedState::ENDORSED_TRUE : EndorsedState::ENDORSED_FALSE; + m_MetaInfoChanged = true; } void ModInfoRegular::setNeverEndorse() |
