From d32938da41916fbc37d6f47c1618b679c0aaf718 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Mon, 30 Mar 2009 20:28:19 +0000 Subject: [PATCH] Fix wrong usage of QDomElement, which will help with bug: http://www.kdenlive.org:80/mantis/view.php?id=738 svn path=/trunk/kdenlive/; revision=3188 --- src/clipmanager.cpp | 15 ++++++++++----- src/kdenlivedoc.cpp | 6 +++--- src/mainwindow.cpp | 2 +- src/projectlist.cpp | 11 +++++++---- src/projectlist.h | 2 +- src/projectlistview.cpp | 5 +---- src/projectlistview.h | 2 +- 7 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/clipmanager.cpp b/src/clipmanager.cpp index 5d23d5f3..30e3a91c 100644 --- a/src/clipmanager.cpp +++ b/src/clipmanager.cpp @@ -214,6 +214,7 @@ void ClipManager::slotAddClipList(const KUrl::List urls, const QString group, co if (KIO::NetAccess::exists(file, KIO::NetAccess::SourceSide, NULL)) { QDomDocument doc; QDomElement prod = doc.createElement("producer"); + doc.appendChild(prod); if (!group.isEmpty()) { prod.setAttribute("groupname", group); prod.setAttribute("groupid", groupId); @@ -227,7 +228,7 @@ void ClipManager::slotAddClipList(const KUrl::List urls, const QString group, co prod.setAttribute("in", "0"); prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()) - 1); } - new AddClipCommand(m_doc, prod, QString::number(id), true, addClips); + new AddClipCommand(m_doc, doc.documentElement(), QString::number(id), true, addClips); } } m_doc->commandStack()->push(addClips); @@ -237,6 +238,7 @@ void ClipManager::slotAddClipFile(const KUrl url, const QString group, const QSt kDebug() << "///// CLIP MANAGER, ADDING CLIP: " << url; QDomDocument doc; QDomElement prod = doc.createElement("producer"); + doc.appendChild(prod); prod.setAttribute("resource", url.path()); uint id = m_clipIdCounter++; prod.setAttribute("id", QString::number(id)); @@ -250,13 +252,14 @@ void ClipManager::slotAddClipFile(const KUrl url, const QString group, const QSt prod.setAttribute("in", "0"); prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()) - 1); } - AddClipCommand *command = new AddClipCommand(m_doc, prod, QString::number(id), true); + AddClipCommand *command = new AddClipCommand(m_doc, doc.documentElement(), QString::number(id), true); m_doc->commandStack()->push(command); } void ClipManager::slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group, const QString &groupId) { QDomDocument doc; QDomElement prod = doc.createElement("producer"); + doc.appendChild(prod); prod.setAttribute("mlt_service", "colour"); prod.setAttribute("colour", color); prod.setAttribute("type", (int) COLOR); @@ -269,13 +272,14 @@ void ClipManager::slotAddColorClipFile(const QString name, const QString color, prod.setAttribute("groupname", group); prod.setAttribute("groupid", groupId); } - AddClipCommand *command = new AddClipCommand(m_doc, prod, QString::number(id), true); + AddClipCommand *command = new AddClipCommand(m_doc, doc.documentElement(), QString::number(id), true); m_doc->commandStack()->push(command); } void ClipManager::slotAddSlideshowClipFile(const QString name, const QString path, int count, const QString duration, const bool loop, const bool fade, const QString &luma_duration, const QString &luma_file, const int softness, QString group, const QString &groupId) { QDomDocument doc; QDomElement prod = doc.createElement("producer"); + doc.appendChild(prod); prod.setAttribute("resource", path); prod.setAttribute("type", (int) SLIDESHOW); uint id = m_clipIdCounter++; @@ -293,7 +297,7 @@ void ClipManager::slotAddSlideshowClipFile(const QString name, const QString pat prod.setAttribute("groupname", group); prod.setAttribute("groupid", groupId); } - AddClipCommand *command = new AddClipCommand(m_doc, prod, QString::number(id), true); + AddClipCommand *command = new AddClipCommand(m_doc, doc.documentElement(), QString::number(id), true); m_doc->commandStack()->push(command); } @@ -302,6 +306,7 @@ void ClipManager::slotAddSlideshowClipFile(const QString name, const QString pat void ClipManager::slotAddTextClipFile(const QString titleName, const QString imagePath, const QString xml, const QString group, const QString &groupId) { QDomDocument doc; QDomElement prod = doc.createElement("producer"); + doc.appendChild(prod); prod.setAttribute("resource", imagePath); prod.setAttribute("titlename", titleName); prod.setAttribute("xmldata", xml); @@ -315,7 +320,7 @@ void ClipManager::slotAddTextClipFile(const QString titleName, const QString ima prod.setAttribute("transparency", "1"); prod.setAttribute("in", "0"); prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()) - 1); - AddClipCommand *command = new AddClipCommand(m_doc, prod, QString::number(id), true); + AddClipCommand *command = new AddClipCommand(m_doc, doc.documentElement(), QString::number(id), true); m_doc->commandStack()->push(command); } diff --git a/src/kdenlivedoc.cpp b/src/kdenlivedoc.cpp index 7fd0099f..163626aa 100644 --- a/src/kdenlivedoc.cpp +++ b/src/kdenlivedoc.cpp @@ -1283,8 +1283,7 @@ void KdenliveDoc::addClip(QDomElement elem, QString clipId, bool createClipItem) if (elem.attribute("type").toInt() == SLIDESHOW) { extension = KUrl(path).fileName(); path = KUrl(path).directory(); - } - if (elem.attribute("type").toInt() == TEXT && !QFile::exists(path)) { + } else if (elem.attribute("type").toInt() == TEXT && QFile::exists(path) == false) { kDebug() << "// TITLE: " << elem.attribute("titlename") << " Preview file: " << elem.attribute("resource") << " DOES NOT EXIST"; QString titlename = elem.attribute("titlename"); QString titleresource; @@ -1306,7 +1305,8 @@ void KdenliveDoc::addClip(QDomElement elem, QString clipId, bool createClipItem) pix.save(titleresource); elem.setAttribute("resource", titleresource); delete dia_ui; - } else if (!path.isEmpty() && !QFile::exists(path) && elem.attribute("type").toInt() != TEXT) { + } + if (path.isEmpty() == false && QFile::exists(path) == false && elem.attribute("type").toInt() != TEXT) { kDebug() << "// FOUND MISSING CLIP: " << path << ", TYPE: " << elem.attribute("type").toInt(); const QString size = elem.attribute("file_size"); const QString hash = elem.attribute("file_hash"); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 294ae432..6e5640d2 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -456,7 +456,7 @@ void MainWindow::generateClip() { KUrl clipUrl = iGenerator->generatedClip(action->data().toString(), m_activeDocument->projectFolder(), QStringList(), QStringList(), 25, 720, 576); if (!clipUrl.isEmpty()) { - m_projectList->slotAddClip(clipUrl); + m_projectList->slotAddClip(QList () << clipUrl); } } diff --git a/src/projectlist.cpp b/src/projectlist.cpp index 815a9b80..51c60ce1 100644 --- a/src/projectlist.cpp +++ b/src/projectlist.cpp @@ -82,7 +82,7 @@ ProjectList::ProjectList(QWidget *parent) connect(listView, SIGNAL(pauseMonitor()), this, SLOT(slotPauseMonitor())); connect(listView, SIGNAL(requestMenu(const QPoint &, QTreeWidgetItem *)), this, SLOT(slotContextMenu(const QPoint &, QTreeWidgetItem *))); connect(listView, SIGNAL(addClip()), this, SLOT(slotAddClip())); - connect(listView, SIGNAL(addClip(KUrl, const QString &)), this, SLOT(slotAddClip(KUrl, const QString &))); + connect(listView, SIGNAL(addClip(const QList , const QString &)), this, SLOT(slotAddClip(const QList , const QString &))); connect(listView, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(slotItemEdited(QTreeWidgetItem *, int))); connect(listView, SIGNAL(showProperties(DocClipBase *)), this, SIGNAL(showClipProperties(DocClipBase *))); @@ -534,12 +534,15 @@ void ProjectList::updateAllClips() { QTimer::singleShot(500, this, SLOT(slotCheckForEmptyQueue())); } -void ProjectList::slotAddClip(KUrl givenUrl, QString group) { +void ProjectList::slotAddClip(const QList givenList, QString group) { if (!m_commandStack) kDebug() << "!!!!!!!!!!!!!!!! NO CMD STK"; KUrl::List list; - if (givenUrl.isEmpty()) { + if (givenList.isEmpty()) { list = KFileDialog::getOpenUrls(KUrl("kfiledialog:///clipfolder"), "application/x-kdenlive video/x-flv application/vnd.rn-realmedia video/x-dv video/dv video/x-msvideo video/x-matroska video/mpeg video/x-ms-wmv audio/mpeg audio/x-mp3 audio/x-wav application/ogg video/mp4 video/quicktime image/gif image/jpeg image/png image/x-tga image/x-bmp image/svg+xml image/tiff image/x-xcf-gimp image/x-vnd.adobe.photoshop image/x-pcx image/x-exr video/mlt-playlist audio/x-flac audio/mp4 video/x-matroska audio/x-matroska", this); - } else list.append(givenUrl); + } else { + for (int i = 0; i < givenList.count(); i++) + list << givenList.at(i); + } if (list.isEmpty()) return; QString groupId; diff --git a/src/projectlist.h b/src/projectlist.h index e0679d03..95d8eff0 100644 --- a/src/projectlist.h +++ b/src/projectlist.h @@ -138,7 +138,7 @@ public slots: void slotRemoveInvalidClip(const QString &id); void slotSelectClip(const QString &ix); void slotRemoveClip(); - void slotAddClip(KUrl givenUrl = KUrl(), QString group = QString()); + void slotAddClip(const QList givenList = QList (), QString group = QString()); void slotAddFolder(const QString foldername, const QString &clipId, bool remove, bool edit = false); void slotResetProjectList(); void slotOpenClip(); diff --git a/src/projectlistview.cpp b/src/projectlistview.cpp index 0a85acdb..08e774c1 100644 --- a/src/projectlistview.cpp +++ b/src/projectlistview.cpp @@ -138,10 +138,7 @@ void ProjectListView::dropEvent(QDropEvent *event) { else if (item->parent() && ((ProjectItem *) item->parent())->isGroup()) groupName = item->parent()->text(1); } - const QList list = event->mimeData()->urls(); - foreach(const QUrl &url, list) { - emit addClip(KUrl(url), groupName); - } + emit addClip(event->mimeData()->urls(), groupName); } else if (event->mimeData()->hasFormat("kdenlive/producerslist")) { ProjectItem *item = static_cast (itemAt(event->pos())); diff --git a/src/projectlistview.h b/src/projectlistview.h index cc9be0db..edd9b5bc 100644 --- a/src/projectlistview.h +++ b/src/projectlistview.h @@ -60,7 +60,7 @@ private slots: signals: void requestMenu(const QPoint &, QTreeWidgetItem *); void addClip(); - void addClip(KUrl, const QString &); + void addClip(const QList , const QString &); void showProperties(DocClipBase *); void focusMonitor(); void pauseMonitor(); -- 2.39.2