MCPcopy Create free account
hub / github.com/ElyPrismLauncher/Launcher / setResourceEnabled

Method setResourceEnabled

launcher/minecraft/mod/ModFolderModel.cpp:377–467  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

375}
376
377bool ModFolderModel::setResourceEnabled(const QModelIndexList& indexes, EnableAction action)
378{
379 if (indexes.isEmpty())
380 return {};
381
382 auto indexedModsList = selectedMods(indexes);
383 auto indexedMods = QSet(indexedModsList.begin(), indexedModsList.end());
384
385 QSet<Mod*> toEnable = {};
386 QSet<Mod*> toDisable = {};
387 std::set<QString> seen;
388
389 switch (action) {
390 case EnableAction::ENABLE: {
391 toEnable = indexedMods;
392 break;
393 }
394 case EnableAction::DISABLE: {
395 toDisable = indexedMods;
396 break;
397 }
398 case EnableAction::TOGGLE: {
399 for (auto mod : indexedMods) {
400 if (mod->enabled()) {
401 toDisable << mod;
402 } else {
403 toEnable << mod;
404 }
405 }
406 break;
407 }
408 }
409
410 auto requiredToEnable = collectMods(toEnable, m_requires, seen, true);
411 auto requiredToDisable = collectMods(toDisable, m_requiredBy, seen, false);
412
413 toDisable.removeIf([toEnable](Mod* m) { return toEnable.contains(m); });
414 auto toList = [this](QSet<Mod*> mods) {
415 QModelIndexList list;
416 for (auto mod : mods) {
417 auto row = m_resources_index[mod->internal_id()];
418 list << index(row, 0);
419 }
420 return list;
421 };
422
423 if (requiredToEnable.size() > 0 || requiredToDisable.size() > 0) {
424 QString title;
425 QString message;
426 QString noButton;
427 QString yesButton;
428 if (requiredToEnable.size() > 0 && requiredToDisable.size() > 0) {
429 title = tr("Confirm toggle");
430 message = tr("Toggling these mod(s) will cause changes to other mods.\n") +
431 tr("%n mod(s) will be enabled\n", "", requiredToEnable.size()) +
432 tr("%n mod(s) will be disabled\n", "", requiredToDisable.size()) +
433 tr("Do you want to automatically apply these related changes?\nIgnoring them may break the game.");
434 noButton = tr("Only Toggle Selected");

Callers 4

removeItemsMethod · 0.45
itemActivatedMethod · 0.45
enableItemMethod · 0.45
disableItemMethod · 0.45

Calls 10

collectModsFunction · 0.85
selectableFunction · 0.85
toListFunction · 0.85
enabledMethod · 0.80
internal_idMethod · 0.80
isEmptyMethod · 0.45
containsMethod · 0.45
sizeMethod · 0.45
setTextMethod · 0.45
execMethod · 0.45

Tested by

no test coverage detected