MCPcopy Create free account
hub / github.com/KDE/labplot / load

Method load

src/frontend/ProjectExplorer.cpp:1039–1247  ·  view source on GitHub ↗

* \brief Load from XML */

Source from the content-addressed store, hash-verified

1037 * \brief Load from XML
1038 */
1039bool ProjectExplorer::load(XmlStreamReader* reader) {
1040 const auto* model = static_cast<AspectTreeModel*>(m_treeView->model());
1041 QList<QModelIndex> selected;
1042 QList<QModelIndex> expanded;
1043 QModelIndex currentIndex;
1044 QString str;
1045
1046 // xmlVersion < 3: old logic where the "rows" for the selected and expanded items were saved
1047 // ignoring the sub-folder structure. Remove it later.
1048 if (Project::xmlVersion() < 3) {
1049 const auto& aspects = m_project->children<AbstractAspect>(AbstractAspect::ChildIndexFlag::Recursive);
1050 bool expandedItem = false;
1051 bool selectedItem = false;
1052 bool viewItem = false;
1053 (void)viewItem; // because of a strange g++-warning about unused viewItem
1054 bool currentItem = false;
1055 int row;
1056 QXmlStreamAttributes attribs;
1057
1058 while (!reader->atEnd()) {
1059 reader->readNext();
1060 if (reader->isEndElement() && reader->name() == QLatin1String("state"))
1061 break;
1062
1063 if (!reader->isStartElement())
1064 continue;
1065
1066 if (reader->name() == QLatin1String("expanded")) {
1067 expandedItem = true;
1068 selectedItem = false;
1069 viewItem = false;
1070 currentItem = false;
1071 } else if (reader->name() == QLatin1String("selected")) {
1072 expandedItem = false;
1073 selectedItem = true;
1074 viewItem = false;
1075 currentItem = false;
1076 } else if (reader->name() == QLatin1String("view")) {
1077 expandedItem = false;
1078 selectedItem = false;
1079 viewItem = true;
1080 currentItem = false;
1081 } else if (reader->name() == QLatin1String("current")) {
1082 expandedItem = false;
1083 selectedItem = false;
1084 viewItem = false;
1085 currentItem = true;
1086 } else if (reader->name() == QLatin1String("row")) {
1087 // we need to read the attributes first and before readElementText() otherwise they are empty
1088 attribs = reader->attributes();
1089 row = reader->readElementText().toInt();
1090
1091 QModelIndex index;
1092 if (row == -1)
1093 index = model->modelIndexOfAspect(m_project); //-1 corresponds to the project-item (s.a. ProjectExplorer::save())
1094 else if (row >= aspects.size() || row < 0) // checking for <0 to protect against wrong values in the XML
1095 continue;
1096 else

Callers 2

openProjectMethod · 0.45
generatePlotMethod · 0.45

Calls 15

atEndMethod · 0.80
modelIndexOfAspectMethod · 0.80
setXMethod · 0.80
setYMethod · 0.80
setHeightMethod · 0.80
selectionModelMethod · 0.80
modelMethod · 0.45
nameMethod · 0.45
sizeMethod · 0.45
toStringMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected