+ QDomElement infoXml = m_doc.elementsByTagName("kdenlivedoc").at(0).toElement();
+ infoXml.setAttribute("modified", "1");
+ }
+
+ // Check clips with available proxies but missing original source clips
+ max = missingSources.count();
+ if (max > 0) {
+ QTreeWidgetItem *item = new QTreeWidgetItem(m_ui.treeWidget, QStringList() << i18n("Source clip"));
+ item->setIcon(0, KIcon("dialog-warning"));
+ item->setText(1, i18n("%1 missing source clips, you can only use the proxies", max));
+ item->setData(0, hashRole, e.attribute("file_hash"));
+ item->setData(0, statusRole, SOURCEMISSING);
+ item->setToolTip(0, i18n("Missing source clip"));
+ for (int i = 0; i < max; ++i) {
+ e = missingSources.at(i).toElement();
+ QString clipType;
+ QString realPath = e.attribute("resource");
+ QString id = e.attribute("id");
+ // Tell Kdenlive the source is missing
+ e.setAttribute("_missingsource", "1");
+ QTreeWidgetItem *subitem = new QTreeWidgetItem(item, QStringList() << i18n("Source clip"));
+ kDebug()<<"// Adding missing source clip: "<<realPath;
+ subitem->setIcon(0, KIcon("dialog-close"));
+ subitem->setText(1, realPath);
+ subitem->setData(0, hashRole, e.attribute("file_hash"));
+ subitem->setData(0, sizeRole, e.attribute("file_size"));
+ subitem->setData(0, statusRole, CLIPMISSING);
+ int t = e.attribute("type").toInt();
+ subitem->setData(0, typeRole, t);
+ subitem->setData(0, idRole, id);
+ }
+ }
+
+ if (max > 0) {
+ // original doc was modified
+ QDomElement infoXml = m_doc.elementsByTagName("kdenlivedoc").at(0).toElement();