MCPcopy Create free account
hub / github.com/MultiMC/Launcher / saveGroupList

Method saveGroupList

launcher/InstanceList.cpp:568–631  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

566}
567
568void InstanceList::saveGroupList()
569{
570 qDebug() << "Will save group list now.";
571 if(!m_instancesProbed)
572 {
573 qDebug() << "Group saving prevented because we don't know the full list of instances yet.";
574 return;
575 }
576 WatchLock foo(m_watcher, m_instDir);
577 QString groupFileName = m_instDir + "/instgroups.json";
578 QMap<QString, QSet<QString>> reverseGroupMap;
579 for (auto iter = m_instanceGroupIndex.begin(); iter != m_instanceGroupIndex.end(); iter++)
580 {
581 QString id = iter.key();
582 QString group = iter.value();
583 if (group.isEmpty())
584 continue;
585 if(!instanceSet.contains(id))
586 {
587 qDebug() << "Skipping saving missing instance" << id << "to groups list.";
588 continue;
589 }
590
591 if (!reverseGroupMap.count(group))
592 {
593 QSet<QString> set;
594 set.insert(id);
595 reverseGroupMap[group] = set;
596 }
597 else
598 {
599 QSet<QString> &set = reverseGroupMap[group];
600 set.insert(id);
601 }
602 }
603 QJsonObject toplevel;
604 toplevel.insert("formatVersion", QJsonValue(QString("1")));
605 QJsonObject groupsArr;
606 for (auto iter = reverseGroupMap.begin(); iter != reverseGroupMap.end(); iter++)
607 {
608 auto list = iter.value();
609 auto name = iter.key();
610 QJsonObject groupObj;
611 QJsonArray instanceArr;
612 groupObj.insert("hidden", QJsonValue(m_collapsedGroups.contains(name)));
613 for (auto item : list)
614 {
615 instanceArr.append(QJsonValue(item));
616 }
617 groupObj.insert("instances", instanceArr);
618 groupsArr.insert(name, groupObj);
619 }
620 toplevel.insert("groups", groupsArr);
621 QJsonDocument doc(toplevel);
622 try
623 {
624 FS::write(groupFileName, doc.toJson());
625 qDebug() << "Group list saved.";

Callers

nothing calls this directly

Calls 12

QStringClass · 0.85
keyMethod · 0.80
isEmptyMethod · 0.80
insertMethod · 0.80
appendMethod · 0.80
toJsonMethod · 0.80
causeMethod · 0.80
writeFunction · 0.70
beginMethod · 0.45
endMethod · 0.45
containsMethod · 0.45
countMethod · 0.45

Tested by

no test coverage detected