| 566 | } |
| 567 | |
| 568 | void 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."; |
nothing calls this directly
no test coverage detected