summaryrefslogtreecommitdiff
path: root/src/projectserialiser.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/projectserialiser.cc')
-rw-r--r--src/projectserialiser.cc27
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;