MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / buildTreeModel

Method buildTreeModel

app/src/DataModel/ProjectEditor.cpp:1319–1401  ·  view source on GitHub ↗

* @brief Rebuilds the project-structure tree, restoring expansion and selection. */

Source from the content-addressed store, hash-verified

1317 * @brief Rebuilds the project-structure tree, restoring expansion and selection.
1318 */
1319void DataModel::ProjectEditor::buildTreeModel()
1320{
1321 m_rootItems.clear();
1322 m_groupItems.clear();
1323 m_sourceItems.clear();
1324 m_actionItems.clear();
1325 m_datasetItems.clear();
1326 m_outputWidgetItems.clear();
1327 m_sourceParserItems.clear();
1328 m_userTableItems.clear();
1329 m_groupFolderItems.clear();
1330 m_tableFolderItems.clear();
1331 m_workspaceItems.clear();
1332 m_workspaceFolderItems.clear();
1333 m_groupsRootItem = nullptr;
1334 m_tablesRootItem = nullptr;
1335 m_systemDatasetsItem = nullptr;
1336 m_workspacesRootItem = nullptr;
1337 m_mqttPublisherItem = nullptr;
1338 m_controlScriptItem = nullptr;
1339
1340 const bool seeding = m_seedExpansionFromModel;
1341 QHash<QString, bool> expandedStates;
1342 if (seeding) {
1343 const auto& persisted = DataModel::ProjectModel::instance().treeExpansion();
1344 for (auto it = persisted.constBegin(); it != persisted.constEnd(); ++it)
1345 expandedStates.insert(it.key(), it.value().toBool());
1346
1347 m_seedExpansionFromModel = false;
1348 } else if (m_treeModel) {
1349 saveExpandedStateMap(m_treeModel->invisibleRootItem(), expandedStates, "");
1350 }
1351
1352 if (m_currentSelectionConnection) {
1353 QObject::disconnect(m_currentSelectionConnection);
1354 m_currentSelectionConnection = QMetaObject::Connection();
1355 }
1356
1357 if (m_selectionModel) {
1358 m_selectionModel->deleteLater();
1359 m_selectionModel = nullptr;
1360 }
1361
1362 if (m_treeModel) {
1363 m_treeModel->disconnect(this);
1364 m_treeModel->deleteLater();
1365 m_treeModel = nullptr;
1366 }
1367
1368 m_treeModel = new CustomModel(this);
1369
1370 const auto& pm = DataModel::ProjectModel::instance();
1371 auto* root = new QStandardItem(pm.title());
1372 root->setData(root->text(), TreeViewText);
1373 root->setData("qrc:/icons/project-editor/treeview/project-setup.svg", TreeViewIcon);
1374 root->setData(true, TreeViewExpanded);
1375
1376 m_treeModel->appendRow(root);

Callers

nothing calls this directly

Calls 9

keyMethod · 0.80
titleMethod · 0.80
currentIndexMethod · 0.80
setTreeExpansionMethod · 0.80
clearMethod · 0.45
valueMethod · 0.45
disconnectMethod · 0.45
textMethod · 0.45
isValidMethod · 0.45

Tested by

no test coverage detected