diff options
Diffstat (limited to 'src/projectserialiser.cc')
-rw-r--r-- | src/projectserialiser.cc | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/projectserialiser.cc b/src/projectserialiser.cc index 707ff18..56fa58e 100644 --- a/src/projectserialiser.cc +++ b/src/projectserialiser.cc @@ -133,6 +133,18 @@ QString ProjectSerialiser::serialise(const Project& project) auto instrument_name = doc.createElement("instrument_name"); instrument_name.appendChild(doc.createTextNode(i.instrument_name)); instrument.appendChild(instrument_name); + + auto file_list = doc.createElement("file_list"); + instrument.appendChild(file_list); + + for(const auto& f : i.file_list) + { + auto file = doc.createElement("file"); + file.appendChild(doc.createTextNode(f.first)); + file.setAttribute("name", f.second); + file.setAttribute("master", i.master_file == f.first); + file_list.appendChild(file); + } } return doc.toString(); @@ -165,8 +177,23 @@ bool ProjectSerialiser::deserialise(const QString& data, Project& project) { project.instruments.emplace_back(Instrument(project, project.next_id)); ++project.next_id; + auto& instr = project.instruments.back(); instr.instrument_name = instrument("instrument_name").text(); + + QString master_file; + AudioFileList file_list; + auto files = instrument("file_list").children("file"); + for(auto& file : files) + { + if(file["master"] == "true") + { + master_file = file.text(); + } + file_list.push_back(qMakePair(file.text(), file["name"])); + } + project.instruments.back().file_list = file_list; + project.instruments.back().master_file = master_file; } return true; |