+ QDomElement kdenlivedoc_new = m_document.createElement("kdenlivedoc");
+ kdenlivedoc_new.setAttribute("profile", profile);
+ kdenlivedoc_new.setAttribute("tracks", tracksOrder);
+ // Add all the producers that has a ressource in westley
+ QDomElement westley_element = westley0.toElement();
+ if (westley_element.isNull()) {
+ kWarning() << "westley0 element in document was not a QDomElement - unable to add producers to new kdenlivedoc";
+ } else {
+ QDomNodeList wproducers = westley_element.elementsByTagName("producer");
+ int kmax = wproducers.count();
+ for (int i = 0; i < kmax; i++) {
+ QDomElement wproducer = wproducers.at(i).toElement();
+ if (wproducer.isNull()) {
+ kWarning() << "Found producer in westley0, that was not a QDomElement";
+ } else {
+ // We have to do slightly different things, depending on the type
+ kDebug() << "Converting producer element with type" << wproducer.attribute("type");
+ if (wproducer.attribute("type").toInt() == TEXT) {
+ kDebug() << "Found TEXT element in producer" << endl;
+ QDomElement kproducer = wproducer.cloneNode(true).toElement();
+ kproducer.setTagName("kdenlive_producer");
+ kdenlivedoc_new.appendChild(kproducer);
+ // TODO: Perhaps needs some more changes here to "frequency", aspect ratio as a float, frame_size, channels, and later, ressource and title name
+ } else {
+ QDomElement kproducer = m_document.createElement("kdenlive_producer");
+ kproducer.setAttribute("id", wproducer.attribute("id"));
+ if (!wproducer.attribute("description").isEmpty())
+ kproducer.setAttribute("description", wproducer.attribute("description"));
+ kproducer.setAttribute("resource", wproducer.attribute("resource"));
+ kproducer.setAttribute("type", wproducer.attribute("type"));
+ // Testing fix for 358
+ if (!wproducer.attribute("aspect_ratio").isEmpty()) {
+ kproducer.setAttribute("aspect_ratio", wproducer.attribute("aspect_ratio"));
+ }
+ if (!wproducer.attribute("source_fps").isEmpty()) {
+ kproducer.setAttribute("fps", wproducer.attribute("source_fps"));
+ }
+ if (!wproducer.attribute("length").isEmpty()) {
+ kproducer.setAttribute("duration", wproducer.attribute("length"));
+ }
+ kdenlivedoc_new.appendChild(kproducer);
+ }
+ if (wproducer.attribute("id").toInt() > max_kproducer_id) {
+ max_kproducer_id = wproducer.attribute("id").toInt();
+ }
+ }
+ }
+ }
+#define LOOKUP_FOLDER 1
+#ifdef LOOKUP_FOLDER
+ // Look through all the folder elements of the old doc, for each folder, for each producer,
+ // get the id, look it up in the new doc, set the groupname and groupid
+ // Note, this does not work at the moment - at least one folders shows up missing, and clips with no folder
+ // does not show up.
+ // QDomElement kdenlivedoc_old = kdenlivedoc.toElement();
+ if (!kdenlivedoc_old.isNull()) {
+ QDomNodeList folders = kdenlivedoc_old.elementsByTagName("folder");
+ int fsize = folders.size();
+ int groupId = max_kproducer_id + 1; // Start at +1 of max id of the kdenlive_producers
+ for (int i = 0; i < fsize; ++i) {
+ QDomElement folder = folders.at(i).toElement();
+ if (!folder.isNull()) {
+ QString groupName = folder.attribute("name");
+ kDebug() << "groupName: " << groupName << " with groupId: " << groupId;
+ QDomNodeList fproducers = folder.elementsByTagName("producer");
+ int psize = fproducers.size();
+ for (int j = 0; j < psize; ++j) {
+ QDomElement fproducer = fproducers.at(j).toElement();
+ if (!fproducer.isNull()) {
+ QString id = fproducer.attribute("id");
+ // This is not very effective, but compared to loading the clips, its a breeze
+ QDomNodeList kdenlive_producers = kdenlivedoc_new.elementsByTagName("kdenlive_producer");
+ int kpsize = kdenlive_producers.size();
+ for (int k = 0; k < kpsize; ++k) {
+ QDomElement kproducer = kdenlive_producers.at(k).toElement(); // Its an element for sure
+ if (id == kproducer.attribute("id")) {
+ // We do not check that it already is part of a folder
+ kproducer.setAttribute("groupid", groupId);
+ kproducer.setAttribute("groupname", groupName);
+ break;
+ }
+ }
+ }
+ }
+ ++groupId;
+ }
+ }
+ }
+#endif
+ westley0.appendChild(kdenlivedoc_new);