Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void SatConfigSys::saveMpcPlToFile(QString filepath)
- {
- QFile mpc_pl_file(filepath);
- if(!mpc_pl_file.open(QIODevice::WriteOnly))
- {
- qCritical() << "Error, unable to open MPC_PL file!!!";
- }
- QXmlStreamWriter mpc_pl_xml_writer(&mpc_pl_file);
- QDateTime current_utc_date_time = current_utc_date_time.currentDateTimeUtc();
- QString current_utc_date_time_str = current_utc_date_time.toString("yyyy-MM-ddThh:mm:ss");
- mpc_pl_xml_writer.setAutoFormatting(true);
- mpc_pl_xml_writer.setAutoFormattingIndent(-1); //Indent using one tab (spaces = positive, tabs = negative)
- //XML Header
- mpc_pl_xml_writer.setCodec("ISO-8859-1");
- mpc_pl_xml_writer.writeStartDocument("1.0");
- mpc_pl_xml_writer.writeCharacters("\r\n");
- //SccMpcIf1 Header
- mpc_pl_xml_writer.writeStartElement("SccMpcIf1");
- //Construct SccMpcIf1 attributes
- QXmlStreamAttributes SccMpcIf1;
- SccMpcIf1.append("version", "1.0");
- SccMpcIf1.append("xmlns:xsi", "http://www/w3.org/2001/XMLSchema-instance");
- SccMpcIf1.append("xsi:noNameSpaceSchemaLocation", "SccMpcIf1.xsd");
- mpc_pl_xml_writer.writeAttributes(SccMpcIf1);
- //Header definition
- mpc_pl_xml_writer.writeStartElement("headerDefinition");
- mpc_pl_xml_writer.writeStartElement("timestamp");
- mpc_pl_xml_writer.writeTextElement("dateAndTime", current_utc_date_time_str);
- mpc_pl_xml_writer.writeEndElement();
- mpc_pl_xml_writer.writeTextElement("source", "ASTRIUM-AEA52");
- mpc_pl_xml_writer.writeEndElement();
- mpc_pl_xml_writer.writeStartElement("dataBlock");
- mpc_pl_xml_writer.writeAttribute("version", "1.0");
- //Start actual content
- int starting_row = 1; //First row of actual data in mpc_pl_proxyModel, row 0 is XML version number
- QString current_satName_note = "";
- QString mode = "staName";
- for(int current_row = starting_row; current_row < mpc_pl_proxyModel->rowCount(); current_row++)
- {
- QModelIndex current_name_index = mpc_pl_proxyModel->index(current_row, NAME_INDEX);
- QModelIndex next_note_index = mpc_pl_proxyModel->index(current_row+1, NOTE_INDEX);
- if(mpc_pl_proxyModel->data(current_name_index) == "staName")
- {
- mode = "staName";
- mpc_pl_xml_writer.writeStartElement(getCurrentParamValue(mpc_pl_proxyModel, current_row));
- mpc_pl_xml_writer.writeStartElement("Definition");
- }
- else if(mpc_pl_proxyModel->data(current_name_index) == "satName")
- {
- mode = "satName";
- mpc_pl_xml_writer.writeStartElement(getCurrentParamValue(mpc_pl_proxyModel, current_row));
- if(current_row+1 < mpc_pl_proxyModel->rowCount())
- {
- current_satName_note = mpc_pl_proxyModel->data(next_note_index);
- mpc_pl_xml_writer.writeStartElement(current_satName_note);
- }
- }
- else
- {
- mpc_pl_xml_writer.writeTextElement(mpc_pl_proxyModel->data(current_name_index)
- ,getCurrentParamValue(mpc_pl_proxyModel, current_row));
- if(current_row+1 < mpc_pl_proxyModel->rowCount())
- {
- if(mode == "staName" && mpc_pl_proxyModel->data(next_note_index) == "nocase")
- {
- //Find new staName, end this element loop
- mpc_pl_xml_writer.writeEndElement(); //End "Definition" element
- mpc_pl_xml_writer.writeEndElement(); //End <staName> element
- }
- else if(mode == "satName" && current_satName_note != mpc_pl_proxyModel->data(next_note_index))
- {
- mpc_pl_xml_writer.writeEndElement();
- current_satName_note = mpc_pl_proxyModel->data(next_note_index);
- mpc_pl_xml_writer.writeStartElement(current_satName_note);
- }
- }
- }
- }
- mpc_pl_xml_writer.writeEndDocument(); //End the rest of unended elements (i.e. /Theos1, /dataBlock, /SccMpcIf1)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement