MCPcopy Create free account
hub / github.com/FreesmTeam/FreesmLauncher / saveGroupList

Method saveGroupList

launcher/InstanceList.cpp:668–726  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

666}
667
668void InstanceList::saveGroupList()
669{
670 qDebug() << "Will save group list now.";
671 if (!m_instancesProbed) {
672 qDebug() << "Group saving prevented because we don't know the full list of instances yet.";
673 return;
674 }
675 WatchLock foo(m_watcher, m_instDir);
676 QString groupFileName = m_instDir + "/instgroups.json";
677 QMap<QString, QSet<QString>> reverseGroupMap;
678 for (auto iter = m_instanceGroupIndex.begin(); iter != m_instanceGroupIndex.end(); iter++) {
679 const QString& id = iter.key();
680 QString group = iter.value();
681 if (group.isEmpty())
682 continue;
683 if (!instanceSet.contains(id)) {
684 qDebug() << "Skipping saving missing instance" << id << "to groups list.";
685 continue;
686 }
687
688 if (!reverseGroupMap.count(group)) {
689 QSet<QString> set;
690 set.insert(id);
691 reverseGroupMap[group] = set;
692 } else {
693 QSet<QString>& set = reverseGroupMap[group];
694 set.insert(id);
695 }
696 }
697 QJsonObject toplevel;
698 toplevel.insert("formatVersion", QJsonValue(QString("1")));
699 QJsonObject groupsArr;
700 for (auto iter = reverseGroupMap.begin(); iter != reverseGroupMap.end(); iter++) {
701 auto list = iter.value();
702 auto name = iter.key();
703 QJsonObject groupObj;
704 QJsonArray instanceArr;
705 groupObj.insert("hidden", QJsonValue(m_collapsedGroups.contains(name)));
706 for (auto item : list) {
707 instanceArr.append(QJsonValue(item));
708 }
709 groupObj.insert("instances", instanceArr);
710 groupsArr.insert(name, groupObj);
711 }
712 toplevel.insert("groups", groupsArr);
713 // empty string represents ungrouped "group"
714 if (m_collapsedGroups.contains("")) {
715 QJsonObject ungrouped;
716 ungrouped.insert("hidden", QJsonValue(true));
717 toplevel.insert("ungrouped", ungrouped);
718 }
719 QJsonDocument doc(toplevel);
720 try {
721 FS::write(groupFileName, doc.toJson());
722 qDebug() << "Group list saved.";
723 } catch (const FS::FileSystemException& e) {
724 qCritical() << "Failed to write instance group file :" << e.cause();
725 }

Callers

nothing calls this directly

Calls 10

QStringClass · 0.85
valueMethod · 0.80
insertMethod · 0.80
appendMethod · 0.80
toJsonMethod · 0.80
causeMethod · 0.80
writeFunction · 0.70
isEmptyMethod · 0.45
containsMethod · 0.45
countMethod · 0.45

Tested by

no test coverage detected