From kde-commits Sun Jan 08 22:00:31 2017 From: Jean-Baptiste Mardelle Date: Sun, 08 Jan 2017 22:00:31 +0000 To: kde-commits Subject: [kdenlive] src: Merge branch '16.12' Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=148391284428226 Git commit 5f8a15749eba57a785e3a405fc5a87e89b9f79fd by Jean-Baptiste Mardel= le. Committed on 08/01/2017 at 22:00. Pushed by mardelle into branch 'master'. Merge branch '16.12' M +19 -18 src/bin/bin.cpp M +3 -3 src/bin/bin.h M +13 -13 src/bin/projectclip.cpp M +2 -2 src/bin/projectclip.h M +2 -2 src/capture/managecapturesdialog.cpp M +3 -3 src/dialogs/clipcreationdialog.cpp M +6 -6 src/dialogs/kdenlivesettingsdialog.cpp M +6 -6 src/doc/kdenlivedoc.cpp M +1 -1 src/doc/kdenlivedoc.h M +1 -1 src/doc/kthumb.cpp M +39 -39 src/dvdwizard/dvdwizard.cpp M +5 -5 src/dvdwizard/dvdwizardmenu.cpp M +8 -8 src/dvdwizard/dvdwizardvob.cpp M +1 -1 src/effectstack/collapsibleeffect.cpp M +1 -1 src/effectstack/effectstackview2.cpp M +1 -1 src/effectstack/parametercontainer.cpp M +12 -12 src/library/librarywidget.cpp M +3 -3 src/mainwindow.cpp M +1 -1 src/mltconnection.cpp M +2 -2 src/mltcontroller/bincontroller.cpp M +1 -1 src/mltcontroller/bincontroller.h M +23 -18 src/mltcontroller/clipcontroller.cpp M +2 -3 src/mltcontroller/clipcontroller.h M +7 -7 src/mltcontroller/clippropertiescontroller.cpp M +1 -1 src/monitor/monitor.cpp M +11 -11 src/monitor/recmonitor.cpp M +3 -3 src/project/clipmanager.cpp M +3 -3 src/project/clipstabilize.cpp M +6 -6 src/project/cliptranscode.cpp M +12 -10 src/project/dialogs/archivewidget.cpp M +14 -14 src/project/dialogs/projectsettings.cpp M +1 -1 src/project/dialogs/projectsettings.h M +5 -6 src/project/dialogs/slideshowclip.cpp M +6 -6 src/project/jobs/cutclipjob.cpp M +5 -5 src/project/jobs/filterjob.cpp M +1 -1 src/project/jobs/proxyclipjob.cpp M +2 -2 src/project/projectmanager.cpp M +2 -2 src/stopmotion/stopmotion.cpp M +5 -5 src/timeline/customtrackview.cpp M +1 -1 src/timeline/customtrackview.h M +2 -2 src/timeline/timeline.cpp M +7 -7 src/titler/titlewidget.cpp M +1 -1 src/utils/resourcewidget.cpp https://commits.kde.org/kdenlive/5f8a15749eba57a785e3a405fc5a87e89b9f79fd diff --cc src/bin/bin.cpp index 01fe41f62,099f9ef1b..4801f1d08 --- a/src/bin/bin.cpp +++ b/src/bin/bin.cpp @@@ -489,13 -481,13 +489,13 @@@ Bin::Bin(QWidget *parent) = m_infoMessage =3D new BinMessageWidget; m_layout->addWidget(m_infoMessage); m_infoMessage->setCloseButtonVisible(false); - connect(m_infoMessage, SIGNAL(linkActivated(const QString &)), this, = SLOT(slotShowJobLog())); - connect(m_infoMessage, SIGNAL(messageClosing()), this, SLOT(slotReset= InfoMessage())); + connect(m_infoMessage, &KMessageWidget::linkActivated, this, &Bin::sl= otShowJobLog); + connect(m_infoMessage, &BinMessageWidget::messageClosing, this, &Bin:= :slotResetInfoMessage); //m_infoMessage->setWordWrap(true); m_infoMessage->hide(); - connect(this, SIGNAL(requesteInvalidRemoval(QString, QUrl, QString)),= this, SLOT(slotQueryRemoval(QString, QUrl, QString))); - connect(this, SIGNAL(requesteInvalidRemoval(QString,QString,QString))= , this, SLOT(slotQueryRemoval(QString,QString,QString))); ++ connect(this, SIGNAL(requesteInvalidRemoval(QString, QString, QString= )), this, SLOT(slotQueryRemoval(QString, QString, QString))); connect(this, &Bin::refreshAudioThumbs, this, &Bin::doRefreshAudioThu= mbs); - connect(this, SIGNAL(displayBinMessage(QString,KMessageWidget::Messag= eType)), this, SLOT(doDisplayMessage(QString,KMessageWidget::MessageType))); + connect(this, SIGNAL(displayBinMessage(QString, KMessageWidget::Messa= geType)), this, SLOT(doDisplayMessage(QString, KMessageWidget::MessageType)= )); } = Bin::~Bin() @@@ -914,13 -884,13 +914,13 @@@ void Bin::slotReloadClip( if (!ix.isValid() || ix.column() !=3D 0) { continue; } - AbstractProjectItem *item =3D static_cast(m= _proxyModel->mapToSource(ix).internalPointer()); - ProjectClip *currentItem =3D qobject_cast(item); + AbstractProjectItem *item =3D static_cast(= m_proxyModel->mapToSource(ix).internalPointer()); + ProjectClip *currentItem =3D qobject_cast(item); if (currentItem) { - emit openClip(NULL); + emit openClip(Q_NULLPTR); if (currentItem->clipType() =3D=3D Playlist) { //Check if a clip inside playlist is missing - QString path =3D currentItem->url().path(); + QString path =3D currentItem->url(); QFile f(path); QDomDocument doc; doc.setContent(&f, false); @@@ -960,20 -930,20 +960,20 @@@ void Bin::slotLocateClip( if (!ix.isValid() || ix.column() !=3D 0) { continue; } - AbstractProjectItem *item =3D static_cast(m= _proxyModel->mapToSource(ix).internalPointer()); - ProjectClip *currentItem =3D qobject_cast(item); + AbstractProjectItem *item =3D static_cast(= m_proxyModel->mapToSource(ix).internalPointer()); + ProjectClip *currentItem =3D qobject_cast(item); if (currentItem) { - QUrl url =3D currentItem->url().adjusted(QUrl::RemoveFilename= ); - QUrl url =3D QUrl::fromLocalFile(currentItem->url()).adjusted(QUrl::Re= moveFilename); - bool exists =3D QFile(url.toLocalFile()).exists(); - if (currentItem->hasUrl() && exists) { - QDesktopServices::openUrl(url); - qDebug()<<" / / "+url.toString(); - } else { - if(!exists){ - emitMessage(i18n("Couldn't locate ") + QString(" ("+url.toString()= +")"), 100, ErrorMessage); - } - return; - } ++ QUrl url =3D QUrl::fromLocalFile(currentItem->url()).adjusted= (QUrl::RemoveFilename); + bool exists =3D QFile(url.toLocalFile()).exists(); + if (currentItem->hasUrl() && exists) { + QDesktopServices::openUrl(url); + qCDebug(KDENLIVE_LOG) << " / / " + url.toString(); + } else { - if (!exists) { ++ if(!exists) { + emitMessage(i18n("Couldn't locate ") + QString(" (" += url.toString() + ")"), 100, ErrorMessage); + } + return; + } } } } @@@ -2652,21 -2564,21 +2652,21 @@@ void Bin::slotItemDropped(const QList folderFiles; - foreach(const QString & path, result) { + QList folderFiles; + foreach (const QString &path, result) { folderFiles.append(QUrl::fromLocalFile(dir.absoluteFilePa= th(path))); } - if (folderFiles.count() > 0) { - QString folderId =3D slotAddFolder(dir.dirName()); - QModelIndex ind =3D getIndexForId(folderId, true); - QStringList newFolderInfo; - if (ind.isValid()) { - newFolderInfo =3D getFolderInfo(m_proxyModel->mapFromSource(ind)); - } - ClipCreationDialog::createClipsCommand(m_doc, folderFiles, newFolderInf= o, this); - } + if (!folderFiles.isEmpty()) { + QString folderId =3D slotAddFolder(dir.dirName()); + QModelIndex ind =3D getIndexForId(folderId, true); + QStringList newFolderInfo; + if (ind.isValid()) { + newFolderInfo =3D getFolderInfo(m_proxyModel->mapFrom= Source(ind)); + } + ClipCreationDialog::createClipsCommand(m_doc, folderFiles= , newFolderInfo, this); + } } } if (!clipsToAdd.isEmpty()) { @@@ -2674,7 -2586,7 +2674,7 @@@ } } = - void Bin::slotExpandUrl(const ItemInfo &info, const QUrl &url, QUndoComma= nd *command) -void Bin::slotExpandUrl(ItemInfo info, const QString &url, QUndoCommand *= command) ++void Bin::slotExpandUrl(const ItemInfo &info, const QString &url, QUndoCo= mmand *command) { QStringList folderInfo; // Create folder to hold imported clips @@@ -2691,10 -2603,10 +2691,10 @@@ if (doc.documentElement().isNull()) { invalid =3D true; } - QDomNodeList producers =3D doc.documentElement().elementsByTagName("p= roducer"); - QDomNodeList tracks =3D doc.documentElement().elementsByTagName("trac= k"); + QDomNodeList producers =3D doc.documentElement().elementsByTagName(QS= tringLiteral("producer")); + QDomNodeList tracks =3D doc.documentElement().elementsByTagName(QStri= ngLiteral("track")); if (invalid || producers.isEmpty()) { - doDisplayMessage(i18n("Playlist clip %1 is invalid.", url.fileNam= e()), KMessageWidget::Warning); + doDisplayMessage(i18n("Playlist clip %1 is invalid.", QFileInfo(u= rl).fileName()), KMessageWidget::Warning); delete command; return; } @@@ -2973,18 -2862,16 +2973,18 @@@ Timecode Bin::projectTimecode() cons return m_doc->timecode(); } = -void Bin::slotStartFilterJob(const ItemInfo &info, const QString&id, QMap= &filterParams, QMap &consumerParams,= QMap &extraParams) +void Bin::slotStartFilterJob(const ItemInfo &info, const QString &id, QMa= p &filterParams, QMap &consumerParams, = QMap &extraParams) { ProjectClip *clip =3D getBinClip(id); - if (!clip) return; + if (!clip) { + return; + } = - QMap producerParams =3D QMap (); + QMap producerParams =3D QMap (); - producerParams.insert(QStringLiteral("producer"), clip->url().path()); + producerParams.insert(QStringLiteral("producer"), clip->url()); if (info.cropDuration !=3D GenTime()) { producerParams.insert(QStringLiteral("in"), QString::number((int)= info.cropStart.frames(m_doc->fps()))); - producerParams.insert(QStringLiteral("out"), QString::number((int= ) (info.cropStart + info.cropDuration).frames(m_doc->fps()))); + producerParams.insert(QStringLiteral("out"), QString::number((int= )(info.cropStart + info.cropDuration).frames(m_doc->fps()))); extraParams.insert(QStringLiteral("clipStartPos"), QString::numbe= r((int) info.startPos.frames(m_doc->fps()))); extraParams.insert(QStringLiteral("clipTrack"), QString::number(i= nfo.track)); } else { @@@ -3003,30 -2890,27 +3003,30 @@@ void Bin::focusBinView() cons void Bin::slotOpenClip() { ProjectClip *clip =3D getFirstSelectedClip(); - if (!clip) return; + if (!clip) { + return; + } switch (clip->clipType()) { - case Text: - case TextTemplate: - showTitleWidget(clip); - break; - case Image: - if (KdenliveSettings::defaultimageapp().isEmpty()) - KMessageBox::sorry(QApplication::activeWindow(), i18n("Pl= ease set a default application to open images in the Settings dialog")); - else - QProcess::startDetached(KdenliveSettings::defaultimageapp= (), QStringList() << clip->url()); - break; - case Audio: - if (KdenliveSettings::defaultaudioapp().isEmpty()) - KMessageBox::sorry(QApplication::activeWindow(), i18n("Pl= ease set a default application to open audio files in the Settings dialog")= ); - else - QProcess::startDetached(KdenliveSettings::defaultaudioapp= (), QStringList() << clip->url()); - break; - default: - break; + case Text: + case TextTemplate: + showTitleWidget(clip); + break; + case Image: + if (KdenliveSettings::defaultimageapp().isEmpty()) { + KMessageBox::sorry(QApplication::activeWindow(), i18n("Please= set a default application to open images in the Settings dialog")); + } else { - QProcess::startDetached(KdenliveSettings::defaultimageapp(), = QStringList() << clip->url().path()); ++ QProcess::startDetached(KdenliveSettings::defaultimageapp(), = QStringList() << clip->url()); + } + break; + case Audio: + if (KdenliveSettings::defaultaudioapp().isEmpty()) { + KMessageBox::sorry(QApplication::activeWindow(), i18n("Please= set a default application to open audio files in the Settings dialog")); + } else { - QProcess::startDetached(KdenliveSettings::defaultaudioapp(), = QStringList() << clip->url().path()); ++ QProcess::startDetached(KdenliveSettings::defaultaudioapp(), = QStringList() << clip->url()); + } + break; + default: + break; } } = @@@ -3481,12 -3313,10 +3481,12 @@@ void Bin::slotShowDescColumn(bool show } } = - void Bin::slotQueryRemoval(const QString &id, const QUrl &url, const QStr= ing &errorMessage) + void Bin::slotQueryRemoval(const QString &id, const QString &url, const Q= String &errorMessage) { if (m_invalidClipDialog) { - if (!url.isEmpty()) m_invalidClipDialog->addClip(id, url); + if (!url.isEmpty()) { - m_invalidClipDialog->addClip(id, url.toLocalFile()); ++ m_invalidClipDialog->addClip(id, url); + } return; } QString message =3D i18n("Clip is invalid, will be removed from proje= ct."); diff --cc src/bin/bin.h index 8684bcf8b,32c68ff7b..4687d992f --- a/src/bin/bin.h +++ b/src/bin/bin.h @@@ -642,7 -645,7 +642,7 @@@ public slots void slotEffectDropped(QString id, QDomElement); /** @brief Request current frame from project monitor. */ void slotGetCurrentProjectImage(bool request); - void slotExpandUrl(const ItemInfo &info, const QUrl &url, QUndoComman= d *command); - void slotExpandUrl(ItemInfo info, const QString &url, QUndoCommand *c= ommand); ++ void slotExpandUrl(const ItemInfo &info, const QString &url, QUndoCom= mand *command); void abortAudioThumbs(); /** @brief Abort all ongoing operations to prepare close. */ void abortOperations(); diff --cc src/bin/projectclip.cpp index 801bb4989,305a48b34..14d65ace6 --- a/src/bin/projectclip.cpp +++ b/src/bin/projectclip.cpp @@@ -89,11 -90,11 +89,11 @@@ ProjectClip::ProjectClip(const QDomElem QString clipName =3D getXmlProperty(description, QStringLiteral("kden= live:clipname")); if (!clipName.isEmpty()) { m_name =3D clipName; - } else if (m_temporaryUrl.isValid()) { - m_name =3D m_temporaryUrl.fileName(); - } - else if (!m_temporaryUrl.isEmpty()) { ++ } else if (!m_temporaryUrl.isEmpty()) { + m_name =3D QFileInfo(m_temporaryUrl).fileName(); + } else { + m_name =3D i18n("Untitled"); } - else m_name =3D i18n("Untitled"); connect(this, &ProjectClip::updateJobStatus, this, &ProjectClip::setJ= obStatus); setParent(parent); connect(this, &ProjectClip::updateThumbProgress, bin(), &Bin::doUpdat= eThumbsProgress); @@@ -242,17 -238,13 +242,17 @@@ ProjectClip *ProjectClip::clipAt(int ix = bool ProjectClip::hasUrl() const { - if (m_controller && (m_type !=3D Color) && (m_type !=3D Unknown)) ret= urn (!m_controller->clipUrl().isEmpty()); + if (m_controller && (m_type !=3D Color) && (m_type !=3D Unknown)) { - return (m_controller->clipUrl().isValid()); ++ return (!m_controller->clipUrl().isEmpty()); + } return false; } = - QUrl ProjectClip::url() const + const QString ProjectClip::url() const { - if (m_controller) return m_controller->clipUrl(); + if (m_controller) { + return m_controller->clipUrl(); + } return m_temporaryUrl; } = @@@ -547,51 -534,45 +547,51 @@@ const QString ProjectClip::getFileHash( QByteArray fileData; QByteArray fileHash; switch (m_type) { - case SlideShow: - fileData =3D m_controller ? m_controller->clipUrl().toUtf8() : = m_temporaryUrl.toUtf8(); - fileHash =3D QCryptographicHash::hash(fileData, QCryptographicH= ash::Md5); - break; - case Text: - fileData =3D m_controller ? m_controller->property(QStringLiter= al("xmldata")).toUtf8() : name().toUtf8(); - fileHash =3D QCryptographicHash::hash(fileData, QCryptographicH= ash::Md5); - break; - case QText: - fileData =3D m_controller ? m_controller->property(QStringLiter= al("text")).toUtf8() : name().toUtf8(); - fileHash =3D QCryptographicHash::hash(fileData, QCryptographicH= ash::Md5); - break; - case Color: - fileData =3D m_controller ? m_controller->property(QStringLiter= al("resource")).toUtf8() : name().toUtf8(); - fileHash =3D QCryptographicHash::hash(fileData, QCryptographicH= ash::Md5); - break; - default: - QFile file(m_controller ? m_controller->clipUrl() : m_temporary= Url); - if (file.open(QIODevice::ReadOnly)) { // write size and hash on= ly if resource points to a file - /* - * 1 MB =3D 1 second per 450 files (or faster) - * 10 MB =3D 9 seconds per 450 files (or faster) - */ + case SlideShow: - fileData =3D m_controller ? m_controller->clipUrl().toLocalFile()= .toUtf8() : m_temporaryUrl.toLocalFile().toUtf8(); ++ fileData =3D m_controller ? m_controller->clipUrl().toUtf8() : m_= temporaryUrl.toUtf8(); + fileHash =3D QCryptographicHash::hash(fileData, QCryptographicHas= h::Md5); + break; + case Text: + fileData =3D m_controller ? m_controller->property(QStringLiteral= ("xmldata")).toUtf8() : name().toUtf8(); + fileHash =3D QCryptographicHash::hash(fileData, QCryptographicHas= h::Md5); + break; + case QText: + fileData =3D m_controller ? m_controller->property(QStringLiteral= ("text")).toUtf8() : name().toUtf8(); + fileHash =3D QCryptographicHash::hash(fileData, QCryptographicHas= h::Md5); + break; + case Color: + fileData =3D m_controller ? m_controller->property(QStringLiteral= ("resource")).toUtf8() : name().toUtf8(); + fileHash =3D QCryptographicHash::hash(fileData, QCryptographicHas= h::Md5); + break; + default: - QFile file(m_controller ? m_controller->clipUrl().toLocalFile() := m_temporaryUrl.toLocalFile()); ++ QFile file(m_controller ? m_controller->clipUrl() : m_temporaryUr= l); + if (file.open(QIODevice::ReadOnly)) { // write size and hash only= if resource points to a file + /* + * 1 MB =3D 1 second per 450 files (or faster) + * 10 MB =3D 9 seconds per 450 files (or faster) + */ if (file.size() > 2000000) { fileData =3D file.read(1000000); - if (file.seek(file.size() - 1000000)) + if (file.seek(file.size() - 1000000)) { fileData.append(file.readAll()); - } else + } + } else { fileData =3D file.readAll(); + } file.close(); - if (m_controller) m_controller->setProperty(QStringLiteral("k= denlive:file_size"), QString::number(file.size())); + if (m_controller) { + m_controller->setProperty(QStringLiteral("kdenlive:file_s= ize"), QString::number(file.size())); + } fileHash =3D QCryptographicHash::hash(fileData, QCryptographi= cHash::Md5); - } - break; + } + break; + } + if (fileHash.isEmpty()) { + return QString(); } - if (fileHash.isEmpty()) return QString(); QString result =3D fileHash.toHex(); if (m_controller) { - m_controller->setProperty(QStringLiteral("kdenlive:file_hash"), result); + m_controller->setProperty(QStringLiteral("kdenlive:file_hash"), r= esult); } return result; } @@@ -651,15 -626,18 +651,15 @@@ void ProjectClip::setProperties(const Q // reset proxy if (bin()->hasPendingJob(m_id, AbstractClipJob::PROXYJOB)) { bin()->discardJobs(m_id, AbstractClipJob::PROXYJOB); - } - else { + } else { reloadProducer(); } - } - else { + } else { // A proxy was requested, make sure to keep original url - setProducerProperty(QStringLiteral("kdenlive:originalurl"), u= rl().toLocalFile()); + setProducerProperty(QStringLiteral("kdenlive:originalurl"), u= rl()); bin()->startJob(m_id, AbstractClipJob::PROXYJOB); } - } - else if (properties.contains(QStringLiteral("resource")) || propertie= s.contains(QStringLiteral("templatetext")) || properties.contains(QStringLi= teral("autorotate"))) { + } else if (properties.contains(QStringLiteral("resource")) || propert= ies.contains(QStringLiteral("templatetext")) || properties.contains(QString= Literal("autorotate"))) { // Clip resource changed, update thumbnail if (m_type !=3D Color) { reloadProducer(); @@@ -898,10 -857,8 +898,10 @@@ void ProjectClip::doExtractIntra( m_intraThumbMutex.lock(); pos =3D m_intraThumbs.takeFirst(); m_intraThumbMutex.unlock(); - if (pos >=3D max) pos =3D max - 1; + if (pos >=3D max) { + pos =3D max - 1; + } - const QString path =3D url().toLocalFile() + '_' + QString::numbe= r(pos); + const QString path =3D url() + '_' + QString::number(pos); QImage img =3D bin()->findCachedPixmap(path); if (!img.isNull()) { // Cache already contains image @@@ -952,10 -908,8 +952,10 @@@ void ProjectClip::doExtractImage( emit thumbReady(pos, QImage(thumbFolder.absoluteFilePath(hash= () + '#' + QString::number(pos) + ".png"))); continue; } - if (pos >=3D max) pos =3D max - 1; + if (pos >=3D max) { + pos =3D max - 1; + } - const QString path =3D url().toLocalFile() + '_' + QString::numbe= r(pos); + const QString path =3D url() + '_' + QString::number(pos); QImage img =3D bin()->findCachedPixmap(path); if (!img.isNull()) { emit thumbReady(pos, img); diff --cc src/doc/kdenlivedoc.cpp index 370410562,c7df9b39f..f4931191d --- a/src/doc/kdenlivedoc.cpp +++ b/src/doc/kdenlivedoc.cpp @@@ -1384,10 -1337,12 +1384,10 @@@ void KdenliveDoc::slotProxyCurrentItem( } } = - //TODO put all file watching stuff in own class - void KdenliveDoc::watchFile(const QUrl &url) + void KdenliveDoc::watchFile(const QString &url) { - m_fileWatcher.addFile(url.toLocalFile()); + m_fileWatcher.addFile(url); } = void KdenliveDoc::slotClipModified(const QString &path) @@@ -1399,15 -1354,14 +1399,15 @@@ } m_modifiedClips[id] =3D QTime::currentTime(); } - if (!m_modifiedTimer.isActive()) m_modifiedTimer.start(); + if (!m_modifiedTimer.isActive()) { + m_modifiedTimer.start(); + } } = - void KdenliveDoc::slotClipMissing(const QString &path) { - qDebug() << "// CLIP: " << path << " WAS MISSING"; + qCDebug(KDENLIVE_LOG) << "// CLIP: " << path << " WAS MISSING"; - QStringList ids =3D pCore->binController()->getBinIdsByResource(QUrl:= :fromLocalFile(path)); + QStringList ids =3D pCore->binController()->getBinIdsByResource(QFile= Info(path)); //TODO handle missing clips by replacing producer with an invalid pro= ducer /*foreach (const QString &id, ids) { emit missingClip(id); diff --cc src/doc/kdenlivedoc.h index ab75af043,3bc5ad8fd..d04c3cc5a --- a/src/doc/kdenlivedoc.h +++ b/src/doc/kdenlivedoc.h @@@ -144,9 -143,9 +144,9 @@@ public /** @brief Get frame size of the renderer (profile)*/ const QSize getRenderSize() const; /** @brief Add url to the file watcher so that we monitor changes */ - void watchFile(const QUrl &url); + void watchFile(const QString &url); /** @brief Get all document properties that need to be saved */ - QMap documentProperties(); + QMap documentProperties(); bool useProxy() const; bool autoGenerateProxy(int width) const; bool autoGenerateImageProxy(int width) const; diff --cc src/doc/kthumb.cpp index 111d1bb47,64728c9cc..d1f76d676 --- a/src/doc/kthumb.cpp +++ b/src/doc/kthumb.cpp @@@ -44,10 -42,8 +44,10 @@@ QPixmap KThumb::getImage(const QUrl &ur height =3D width * profile.height() / profile.width(); } QPixmap pix(width, height); - if (!url.isValid()) return pix; + if (!url.isValid()) { + return pix; + } - Mlt::Producer *producer =3D new Mlt::Producer(profile, url.path().toU= tf8().constData()); + Mlt::Producer *producer =3D new Mlt::Producer(profile, url.toLocalFil= e().toUtf8().constData()); pix =3D QPixmap::fromImage(getFrame(producer, frame, width, height)); delete producer; return pix; diff --cc src/dvdwizard/dvdwizard.cpp index 65ab1f69c,5a6618276..afe821583 --- a/src/dvdwizard/dvdwizard.cpp +++ b/src/dvdwizard/dvdwizard.cpp @@@ -181,13 -182,11 +181,13 @@@ void DvdWizard::slotPageChanged(int pag void DvdWizard::generateDvd() { m_isoMessage->animatedHide(); - QDir dir(m_status.tmp_folder->url().path() + "DVD/"); + QDir dir(m_status.tmp_folder->url().toLocalFile() + "DVD/"); - if (!dir.exists()) dir.mkpath(dir.absolutePath()); + if (!dir.exists()) { + dir.mkpath(dir.absolutePath()); + } if (!dir.exists()) { // We failed creating tmp DVD directory - KMessageBox::sorry(this, i18n("Cannot create temporary directory = %1", m_status.tmp_folder->url().path() + "DVD")); + KMessageBox::sorry(this, i18n("Cannot create temporary directory = %1", m_status.tmp_folder->url().toLocalFile() + "DVD")); return; } = @@@ -766,10 -731,10 +766,10 @@@ void DvdWizard::slotRenderFinished(int = m_creationLog.append(m_dvdauthor->readAllStandardError()); m_dvdauthor->close(); delete m_dvdauthor; - m_dvdauthor =3D NULL; + m_dvdauthor =3D Q_NULLPTR; = // Check if DVD structure has the necessary info - if (!QFile::exists(m_status.tmp_folder->url().path() + "/DVD/VIDEO_TS= /VIDEO_TS.IFO")) { + if (!QFile::exists(m_status.tmp_folder->url().toLocalFile() + "/DVD/V= IDEO_TS/VIDEO_TS.IFO")) { errorMessage(i18n("DVD structure broken")); m_status.error_log->append(m_creationLog + "
" + i18n("DVD structure broken")); m_status.error_log->scrollToAnchor(QStringLiteral("result")); @@@ -865,12 -827,12 +865,12 @@@ void DvdWizard::slotIsoFinished(int exi } = isoitem->setIcon(QIcon::fromTheme(QStringLiteral("dialog-ok"))); - //qCDebug(KDENLIVE_LOG) << "ISO IMAGE " << m_status.iso_image->url().= path() << " Successfully created"; - //qDebug() << "ISO IMAGE " << m_status.iso_image->url().toLocalFile()= << " Successfully created"; ++ //qCDebug(KDENLIVE_LOG) << "ISO IMAGE " << m_status.iso_image->url().= toLocalFile() << " Successfully created"; cleanup(); - //qDebug() << m_creationLog; + //qCDebug(KDENLIVE_LOG) << m_creationLog; - infoMessage(i18n("DVD ISO image %1 successfully created.", m_status.i= so_image->url().path())); + infoMessage(i18n("DVD ISO image %1 successfully created.", m_status.i= so_image->url().toLocalFile())); = - m_status.error_log->append("
" + i18n("= DVD ISO image %1 successfully created.", m_status.iso_image->url().path()) = + ""); + m_status.error_log->append("" + i18n("= DVD ISO image %1 successfully created.", m_status.iso_image->url().toLocalF= ile()) + ""); m_status.error_log->scrollToAnchor(QStringLiteral("result")); m_status.button_preview->setEnabled(true); m_status.button_burn->setEnabled(true); @@@ -879,15 -841,15 +879,15 @@@ = } = - void DvdWizard::cleanup() { - QDir dir(m_status.tmp_folder->url().path() + QDir::separator() + "DVD= "); + QDir dir(m_status.tmp_folder->url().toLocalFile() + QDir::separator()= + "DVD"); // Try to make sure we delete the correct directory - if (dir.exists() && dir.dirName() =3D=3D QLatin1String("DVD")) dir.re= moveRecursively(); + if (dir.exists() && dir.dirName() =3D=3D QLatin1String("DVD")) { + dir.removeRecursively(); + } } = - void DvdWizard::slotPreview() { QStringList programNames; @@@ -901,9 -863,8 +901,9 @@@ } if (exec.isEmpty()) { KMessageBox::sorry(this, i18n("Previewing requires one of these a= pplications (%1)", programNames.join(","))); + } else { - QProcess::startDetached(exec, QStringList() << "dvd://" + m_statu= s.iso_image->url().path()); ++ QProcess::startDetached(exec, QStringList() << "dvd://" + m_statu= s.iso_image->url().toLocalFile()); } - else QProcess::startDetached(exec, QStringList() << "dvd://" + m_stat= us.iso_image->url().toLocalFile()); } = void DvdWizard::slotBurn() @@@ -911,30 -872,23 +911,30 @@@ QAction *action =3D qobject_cast(sender()); QString exec =3D action->data().toString(); QStringList args; - if (exec.endsWith(QLatin1String("k3b"))) args << QStringLiteral("--im= age") << m_status.iso_image->url().toLocalFile(); - else args << "--image=3D" + m_status.iso_image->url().toLocalFile(); + if (exec.endsWith(QLatin1String("k3b"))) { - args << QStringLiteral("--image") << m_status.iso_image->url().pa= th(); ++ args << QStringLiteral("--image") << m_status.iso_image->url().to= LocalFile(); + } else { - args << "--image=3D" + m_status.iso_image->url().path(); ++ args << "--image=3D" + m_status.iso_image->url().toLocalFile(); + } QProcess::startDetached(exec, args); } = void DvdWizard::slotGenerate() { // clear job icons - if ((m_dvdauthor && m_dvdauthor->state() !=3D QProcess::NotRunning) |= | (m_mkiso && m_mkiso->state() !=3D QProcess::NotRunning)) return; - for (int i =3D 0; i < m_status.job_progress->count(); ++i) + if ((m_dvdauthor && m_dvdauthor->state() !=3D QProcess::NotRunning) |= | (m_mkiso && m_mkiso->state() !=3D QProcess::NotRunning)) { + return; + } + for (int i =3D 0; i < m_status.job_progress->count(); ++i) { m_status.job_progress->item(i)->setIcon(QIcon()); + } QString warnMessage; - if (QFile::exists(m_status.tmp_folder->url().path() + "DVD")) { - warnMessage.append(i18n("Folder %1 already exists. Overwrite?\n",= m_status.tmp_folder->url().path() + "DVD")); - if (QFile::exists(m_status.tmp_folder->url().toLocalFile() + "DVD")) ++ if (QFile::exists(m_status.tmp_folder->url().toLocalFile() + "DVD")) { + warnMessage.append(i18n("Folder %1 already exists. Overwrite?\n",= m_status.tmp_folder->url().toLocalFile() + "DVD")); - if (QFile::exists(m_status.iso_image->url().toLocalFile())) + } - if (QFile::exists(m_status.iso_image->url().path())) { - warnMessage.append(i18n("Image file %1 already exists. Overwrite?= ", m_status.iso_image->url().path())); ++ if (QFile::exists(m_status.iso_image->url().toLocalFile())) { + warnMessage.append(i18n("Image file %1 already exists. Overwrite?= ", m_status.iso_image->url().toLocalFile())); + } = if (warnMessage.isEmpty() || KMessageBox::questionYesNo(this, warnMes= sage) =3D=3D KMessageBox::Yes) { cleanup(); @@@ -958,18 -909,14 +958,18 @@@ void DvdWizard::slotAbort( = void DvdWizard::slotSave() { - QString projectFolder =3D KRecentDirs::dir(":KdenliveDvdFolder"); - if (projectFolder.isEmpty()) projectFolder =3D QDir::homePath(); + QString projectFolder =3D KRecentDirs::dir(QStringLiteral(":KdenliveD= vdFolder")); + if (projectFolder.isEmpty()) { + projectFolder =3D QDir::homePath(); + } QUrl url =3D QFileDialog::getSaveFileUrl(this, i18n("Save DVD Project= "), QUrl::fromLocalFile(projectFolder), i18n("DVD project (*.kdvd)")); - if (!url.isValid()) + if (!url.isValid()) { return; - KRecentDirs::add(":KdenliveDvdFolder", url.adjusted(QUrl::RemoveFilen= ame).toLocalFile()); - if (currentId() =3D=3D 0) + } - KRecentDirs::add(QStringLiteral(":KdenliveDvdFolder"), url.adjusted(Q= Url::RemoveFilename).path()); ++ KRecentDirs::add(QStringLiteral(":KdenliveDvdFolder"), url.adjusted(Q= Url::RemoveFilename).toLocalFile()); + if (currentId() =3D=3D 0) { m_pageChapters->setVobFiles(m_pageVob->dvdFormat(), m_pageVob->se= lectedUrls(), m_pageVob->durations(), m_pageVob->chapters()); + } = QDomDocument doc; QDomElement dvdproject =3D doc.createElement(QStringLiteral("dvdproje= ct")); @@@ -980,18 -927,14 +980,18 @@@ = doc.appendChild(dvdproject); QDomElement menu =3D m_pageMenu->toXml(); - if (!menu.isNull()) dvdproject.appendChild(doc.importNode(menu, true)= ); + if (!menu.isNull()) { + dvdproject.appendChild(doc.importNode(menu, true)); + } QDomElement chaps =3D m_pageChapters->toXml(); - if (!chaps.isNull()) dvdproject.appendChild(doc.importNode(chaps, tru= e)); + if (!chaps.isNull()) { + dvdproject.appendChild(doc.importNode(chaps, true)); + } = - QFile file(url.path()); + QFile file(url.toLocalFile()); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { - qCWarning(KDENLIVE_LOG) << "////// ERROR writing to file: " << u= rl.path(); - KMessageBox::error(this, i18n("Cannot write to file %1", url.path= ())); - qWarning() << "////// ERROR writing to file: " << url.toLocalFil= e(); ++ qCWarning(KDENLIVE_LOG) << "////// ERROR writing to file: " << u= rl.toLocalFile(); + KMessageBox::error(this, i18n("Cannot write to file %1", url.toLo= calFile())); return; } = @@@ -1002,19 -945,17 +1002,19 @@@ file.close(); } = - void DvdWizard::slotLoad() { - QString projectFolder =3D KRecentDirs::dir(":KdenliveDvdFolder"); - if (projectFolder.isEmpty()) projectFolder =3D QDir::homePath(); + QString projectFolder =3D KRecentDirs::dir(QStringLiteral(":KdenliveD= vdFolder")); + if (projectFolder.isEmpty()) { + projectFolder =3D QDir::homePath(); + } const QUrl url =3D QFileDialog::getOpenFileUrl(this, QString(), QUrl:= :fromLocalFile(projectFolder), i18n("DVD project (*.kdvd)")); - if (!url.isValid()) + if (!url.isValid()) { return; - KRecentDirs::add(":KdenliveDvdFolder", url.adjusted(QUrl::RemoveFilen= ame).toLocalFile()); + } - KRecentDirs::add(QStringLiteral(":KdenliveDvdFolder"), url.adjusted(Q= Url::RemoveFilename).path()); ++ KRecentDirs::add(QStringLiteral(":KdenliveDvdFolder"), url.adjusted(Q= Url::RemoveFilename).toLocalFile()); QDomDocument doc; - QFile file(url.path()); + QFile file(url.toLocalFile()); doc.setContent(&file, false); file.close(); QDomElement dvdproject =3D doc.documentElement(); diff --cc src/dvdwizard/dvdwizardmenu.cpp index ed40084fd,251927666..821478db4 --- a/src/dvdwizard/dvdwizardmenu.cpp +++ b/src/dvdwizard/dvdwizardmenu.cpp @@@ -500,10 -471,8 +500,10 @@@ void DvdWizardMenu::buildImage( = if (m_view.background_list->currentIndex() =3D=3D 1) { // image background - if (!pix.load(m_view.background_image->url().path())) { + if (!pix.load(m_view.background_image->url().toLocalFile())) { - if (m_background->scene() !=3D 0) m_scene->removeItem(m_backg= round); + if (m_background->scene() !=3D 0) { + m_scene->removeItem(m_background); + } return; } pix =3D pix.scaled(m_width, m_height); diff --cc src/dvdwizard/dvdwizardvob.cpp index d3310393f,e41f2bc2f..0feb109a1 --- a/src/dvdwizard/dvdwizardvob.cpp +++ b/src/dvdwizard/dvdwizardvob.cpp @@@ -267,22 -260,20 +267,22 @@@ void DvdWizardVob::slotAddVobList(QList QString dialogFilter =3D i18n("All Supported Files") + " (" + all= Extensions + ");; " + i18n("MPEG Files") + " (*.mpeg *.mpg *.vob);; " + i18= n("All Files") + " (*.*)"; list =3D QFileDialog::getOpenFileUrls(this, i18n("Add new video f= ile"), QUrl::fromLocalFile(KRecentDirs::dir(QStringLiteral(":KdenliveDvdFol= der"))), dialogFilter); if (!list.isEmpty()) { - KRecentDirs::add(QStringLiteral(":KdenliveDvdFolder"), list.a= t(0).adjusted(QUrl::RemoveFilename).path()); + KRecentDirs::add(QStringLiteral(":KdenliveDvdFolder"), list.a= t(0).adjusted(QUrl::RemoveFilename).toLocalFile()); } } - foreach(const QUrl &url, list) { + foreach (const QUrl &url, list) { slotAddVobFile(url, QString(), false); } slotCheckVobList(); slotCheckProfiles(); } = -void DvdWizardVob::slotAddVobFile(QUrl url, const QString &chapters, bool= checkFormats) +void DvdWizardVob::slotAddVobFile(const QUrl &url, const QString &chapter= s, bool checkFormats) { - if (!url.isValid()) return; + if (!url.isValid()) { + return; + } - QFile f(url.path()); + QFile f(url.toLocalFile()); qint64 fileSize =3D f.size(); = Mlt::Profile profile; @@@ -369,9 -352,10 +369,9 @@@ = if (chapters.isEmpty() =3D=3D false) { item->setData(1, Qt::UserRole + 1, chapters); - } else if (QFile::exists(url.path() + ".dvdchapter")) { - } - else if (QFile::exists(url.toLocalFile() + ".dvdchapter")) { ++ } else if (QFile::exists(url.toLocalFile() + ".dvdchapter")) { // insert chapters as children - QFile file(url.path() + ".dvdchapter"); + QFile file(url.toLocalFile() + ".dvdchapter"); if (file.open(QIODevice::ReadOnly)) { QDomDocument doc; if (doc.setContent(&file) =3D=3D false) { diff --cc src/effectstack/effectstackview2.cpp index f87e645ae,b2c0f066c..22ddfcf7e --- a/src/effectstack/effectstackview2.cpp +++ b/src/effectstack/effectstackview2.cpp @@@ -975,10 -944,11 +975,10 @@@ void EffectStackView2::slotCreateRegion QDomElement region =3D MainWindow::videoEffects.getEffectByTag(QStrin= gLiteral("region"), QStringLiteral("region")).cloneNode().toElement(); region.appendChild(region.ownerDocument().importNode(neweffect, true)= ); region.setAttribute(QStringLiteral("kdenlive_ix"), ix); - EffectsList::setParameter(region, QStringLiteral("resource"), url.pat= h()); + EffectsList::setParameter(region, QStringLiteral("resource"), url.toL= ocalFile()); if (m_status =3D=3D TIMELINE_TRACK) { - emit updateEffect(NULL, m_trackindex, oldeffect, region, ix,false= ); - } - else if (m_status =3D=3D TIMELINE_CLIP && m_clipref) { + emit updateEffect(Q_NULLPTR, m_trackindex, oldeffect, region, ix,= false); + } else if (m_status =3D=3D TIMELINE_CLIP && m_clipref) { emit updateEffect(m_clipref, -1, oldeffect, region, ix, false); // Make sure the changed effect is currently displayed //slotSetCurrentEffect(ix); diff --cc src/effectstack/parametercontainer.cpp index 66d434173,c2366aa52..88c69d704 --- a/src/effectstack/parametercontainer.cpp +++ b/src/effectstack/parametercontainer.cpp @@@ -1184,16 -1125,14 +1184,16 @@@ void ParameterContainer::slotCollectAll = if (m_keyframeEditor->isVisibleParam(realName)) { pa.setAttribute(QStringLiteral("intimeline"), QStringLite= ral("1")); - } - else if (pa.hasAttribute(QStringLiteral("intimeline"))) + } else if (pa.hasAttribute(QStringLiteral("intimeline"))) { pa.setAttribute(QStringLiteral("intimeline"), QStringLite= ral("0")); + } } else if (type =3D=3D QLatin1String("url")) { - KUrlRequester *req =3D static_cast(m_valueItems.valu= e(paramName))->urlwidget; - if (req) setValue =3D req->url().toLocalFile(); + KUrlRequester *req =3D static_cast(m_valueItems.val= ue(paramName))->urlwidget; + if (req) { - setValue =3D req->url().path(); ++ setValue =3D req->url().toLocalFile(); + } } else if (type =3D=3D QLatin1String("keywords")) { - Keywordval* val =3D static_cast(m_valueItems.val= ue(paramName)); + Keywordval *val =3D static_cast(m_valueItems.va= lue(paramName)); if (val) { QLineEdit *line =3D val->lineeditwidget; KComboBox *combo =3D val->comboboxwidget; diff --cc src/library/librarywidget.cpp index 572cca79d,8f2b3a609..8c81ab348 --- a/src/library/librarywidget.cpp +++ b/src/library/librarywidget.cpp @@@ -407,18 -403,16 +407,18 @@@ void LibraryWidget::slotMoveData(const = dest =3D m_directory.absolutePath(); } QDir dir(dest); - if (!dir.exists()) return; - foreach(const QUrl &url, urls) { + if (!dir.exists()) { + return; + } + foreach (const QUrl &url, urls) { - if (!url.path().startsWith(m_directory.absolutePath())) { + if (!url.toLocalFile().startsWith(m_directory.absolutePath())) { // Dropped an external file, attempt to copy it to library KIO::FileCopyJob *copyJob =3D KIO::file_copy(url, QUrl::fromL= ocalFile(dir.absoluteFilePath(url.fileName()))); - connect(copyJob, SIGNAL(result(KJob *)), this, SLOT(slotDownl= oadFinished(KJob *))); - connect(copyJob, SIGNAL(percent(KJob *, unsigned long)), this= , SLOT(slotDownloadProgress(KJob *, unsigned long))); + connect(copyJob, &KJob::result, this, &LibraryWidget::slotDow= nloadFinished); + connect(copyJob, SIGNAL(percent(KJob *, ulong)), this, SLOT(s= lotDownloadProgress(KJob *, ulong))); } else { // Internal drag/drop - dir.rename(url.path(), url.fileName()); + dir.rename(url.toLocalFile(), url.fileName()); } } } @@@ -528,13 -516,13 +528,13 @@@ void LibraryWidget::slotItemsDeleted(co QUrl fileUrl =3D fitem.url(); QString path; if (fitem.isDir()) { - path =3D fileUrl.path(); + path =3D fileUrl.toLocalFile(); } else { - path =3D fileUrl.adjusted(QUrl::RemoveFilename | QUrl::StripT= railingSlash).path(); + path =3D fileUrl.adjusted(QUrl::RemoveFilename | QUrl::StripT= railingSlash).toLocalFile(); } - QTreeWidgetItem *matchingFolder =3D NULL; + QTreeWidgetItem *matchingFolder =3D Q_NULLPTR; - if (path !=3D m_directory.path()) { + if (path !=3D m_directory.absolutePath()) { - foreach(QTreeWidgetItem *folder, m_folders) { + foreach (QTreeWidgetItem *folder, m_folders) { if (folder->data(0, Qt::UserRole).toString() =3D=3D path)= { // Found parent folder matchingFolder =3D folder; @@@ -558,12 -546,12 +558,12 @@@ delete matchingFolder; } } else { - if (matchingFolder =3D=3D NULL) { + if (matchingFolder =3D=3D Q_NULLPTR) { matchingFolder =3D m_libraryTree->invisibleRootItem(); } - for(int i =3D 0; i < matchingFolder->childCount(); i++) { + for (int i =3D 0; i < matchingFolder->childCount(); i++) { QTreeWidgetItem *item =3D matchingFolder->child(i); - if (item->data(0, Qt::UserRole).toString() =3D=3D fileUrl= .path()) { + if (item->data(0, Qt::UserRole).toString() =3D=3D fileUrl= .toLocalFile()) { // Found deleted item delete item; break; @@@ -582,11 -571,11 +582,11 @@@ void LibraryWidget::slotItemsAdded(cons QUrl fileUrl =3D fitem.url(); QString name =3D fileUrl.fileName(); QTreeWidgetItem *treeItem; - QTreeWidgetItem *parent =3D NULL; + QTreeWidgetItem *parent =3D Q_NULLPTR; - if (url !=3D QUrl::fromLocalFile(m_directory.path())) { + if (url !=3D QUrl::fromLocalFile(m_directory.absolutePath())) { // not a top level item - QString directory =3D fileUrl.adjusted(QUrl::RemoveFilename |= QUrl::StripTrailingSlash).path(); + QString directory =3D fileUrl.adjusted(QUrl::RemoveFilename |= QUrl::StripTrailingSlash).toLocalFile(); - foreach(QTreeWidgetItem *folder, m_folders) { + foreach (QTreeWidgetItem *folder, m_folders) { if (folder->data(0, Qt::UserRole).toString() =3D=3D direc= tory) { // Found parent folder parent =3D folder; diff --cc src/mainwindow.cpp index 536bd128d,d16df70dd..942497498 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@@ -839,9 -814,9 +839,9 @@@ void MainWindow::saveProperties(KConfig KXmlGuiWindow::saveProperties(config); //TODO: fix session management if (qApp->isSavingSession() && pCore->projectManager()) { - if (pCore->projectManager()->current() && !pCore->projectManager()->curr= ent()->url().isEmpty()) { - config.writeEntry("kdenlive_lastUrl", pCore->projectManager()->curre= nt()->url().toLocalFile()); - } + if (pCore->projectManager()->current() && !pCore->projectManager(= )->current()->url().isEmpty()) { - config.writeEntry("kdenlive_lastUrl", pCore->projectManager()= ->current()->url().path()); ++ config.writeEntry("kdenlive_lastUrl", pCore->projectManager()= ->current()->url().toLocalFile()); + } } } = diff --cc src/mltcontroller/bincontroller.h index f8e703f39,9cc758231..46b3ee9ec --- a/src/mltcontroller/bincontroller.h +++ b/src/mltcontroller/bincontroller.h @@@ -133,10 -133,10 +133,10 @@@ public void replaceBinPlaylistClip(const QString &id, Mlt::Producer &produce= r); = /** @brief Get the list of ids whose clip have the resource indicated= by @param url */ - const QStringList getBinIdsByResource(const QUrl &url) const; + const QStringList getBinIdsByResource(const QFileInfo &url) const; void replaceProducer(const QString &id, Mlt::Producer &producer); void storeMarker(const QString &markerId, const QString &markerHash); - QMap takeGuidesData(); + QMap takeGuidesData(); = /** @brief A Bin clip effect was changed, update track producers */ void updateTrackProducer(const QString &id); diff --cc src/mltcontroller/clipcontroller.cpp index 598cbb040,730d038b7..e46cb0d9b --- a/src/mltcontroller/clipcontroller.cpp +++ b/src/mltcontroller/clipcontroller.cpp @@@ -27,8 -27,7 +27,7 @@@ along with this program. If not, see < #include "timeline/timeline.h" #include "timeline/effectmanager.h" = - #include -#include +#include "kdenlive_debug.h" #include #include #include @@@ -49,22 -48,26 +48,23 @@@ ClipController::ClipController(BinContr { m_masterProducer =3D &producer; if (!m_masterProducer->is_valid()) { - qDebug()<<"// WARNING, USING INVALID PRODUCER"; + qCDebug(KDENLIVE_LOG) << "// WARNING, USING INVALID PRODUCER"; return; - } - else { + } else { + m_service =3D m_properties->get("mlt_service"); QString proxy =3D m_properties->get("kdenlive:proxy"); + QString path =3D m_properties->get("resource"); if (proxy.length() > 2) { // This is a proxy producer, read original url from kdenlive = property - QString path =3D m_properties->get("kdenlive:originalurl"); + path =3D m_properties->get("kdenlive:originalurl"); if (QFileInfo(path).isRelative()) { path.prepend(bincontroller->documentRoot()); } - m_url =3D QUrl::fromLocalFile(path); m_usesProxy =3D true; - } else { - m_url =3D QUrl::fromLocalFile(m_properties->get("resource")); - } - else if (m_service !=3D QLatin1String("color") && m_service !=3D = QLatin1String("colour") && QFileInfo(path).isRelative()) { ++ } else if (m_service !=3D QLatin1String("color") && m_service != =3D QLatin1String("colour") && QFileInfo(path).isRelative()) { + path.prepend(bincontroller->documentRoot()); } - m_service =3D m_properties->get("mlt_service"); + m_path =3D QFileInfo(path).absoluteFilePath(); - qDebug()<<"* * *CREATED PROD: "<is_valid()) qDebug()<<"// WARNING, USING INVAL= ID PRODUCER"; - else { + if (!m_masterProducer->is_valid()) { + qCDebug(KDENLIVE_LOG) << "// WARNING, USING INVALID PRODUCER"; + } else { QString proxy =3D m_properties->get("kdenlive:proxy"); + m_service =3D m_properties->get("mlt_service"); + QString path =3D m_properties->get("resource"); + m_usesProxy =3D false; if (proxy.length() > 2) { // This is a proxy producer, read original url from kdenlive = property - m_url =3D QUrl::fromLocalFile(m_properties->get("kdenlive:ori= ginalurl")); + path =3D m_properties->get("kdenlive:originalurl"); + if (QFileInfo(path).isRelative()) { + path.prepend(m_binController->documentRoot()); + } m_usesProxy =3D true; - } else { - m_url =3D QUrl::fromLocalFile(m_properties->get("resource")); - m_usesProxy =3D false; - } - else if (m_service !=3D QLatin1String("color") && m_service !=3D = QLatin1String("colour") && QFileInfo(path).isRelative()) { ++ } else if (m_service !=3D QLatin1String("color") && m_service != =3D QLatin1String("colour") && QFileInfo(path).isRelative()) { + path.prepend(m_binController->documentRoot()); } - m_service =3D m_properties->get("mlt_service"); + m_path =3D QFileInfo(path).absoluteFilePath(); - qDebug()<<"* * *LODED PROD: "<clipUrl().toL= ocalFile()); + mimeType =3D mimeDatabase.mimeTypeForFile(m_controller->clipUrl()); - foreach(KFileMetaData::Extractor* plugin, metaDataCollection.fetchExt= ractors(mimeType.name())) { + foreach (KFileMetaData::Extractor *plugin, metaDataCollection.fetchEx= tractors(mimeType.name())) { - ExtractionResult extractionResult(m_controller->clipUrl().toLocal= File(), mimeType.name(), m_propertiesTree); + ExtractionResult extractionResult(m_controller->clipUrl(), mimeTy= pe.name(), m_propertiesTree); plugin->extract(&extractionResult); } #endif @@@ -952,17 -942,18 +952,17 @@@ void ClipPropertiesController::slotFill } int exifUsed =3D m_controller->int_property(QStringLiteral("kdenlive:= exiftool")); if (exifUsed =3D=3D 1) { - Mlt::Properties subProperties; - subProperties.pass_values(m_properties, "kdenlive:meta.exiftool= ."); - if (subProperties.count() > 0) { - QTreeWidgetItem *exif =3D new QTreeWidgetItem(tree, QString= List() << i18n("Exif") << QString()); - exif->setExpanded(true); - for (int i =3D 0; i < subProperties.count(); i++) { - new QTreeWidgetItem(exif, QStringList() << subPropertie= s.get_name(i) << subProperties.get(i)); - } - } - } - else if (KdenliveSettings::use_exiftool()) { + Mlt::Properties subProperties; + subProperties.pass_values(m_properties, "kdenlive:meta.exiftool."= ); + if (subProperties.count() > 0) { + QTreeWidgetItem *exif =3D new QTreeWidgetItem(tree, QStringLi= st() << i18n("Exif") << QString()); + exif->setExpanded(true); + for (int i =3D 0; i < subProperties.count(); i++) { + new QTreeWidgetItem(exif, QStringList() << subProperties.= get_name(i) << subProperties.get(i)); + } + } + } else if (KdenliveSettings::use_exiftool()) { - QString url =3D m_controller->clipUrl().path(); + QString url =3D m_controller->clipUrl(); //Check for Canon THM file url =3D url.section('.', 0, -2) + ".THM"; if (QFile::exists(url)) { @@@ -1041,8 -1024,9 +1041,8 @@@ } new QTreeWidgetItem(magicL, QStringList() << subProperties.ge= t_name(i) << subProperties.get(i)); } - } - else if (m_type !=3D Image && KdenliveSettings::use_magicLantern()) { + } else if (m_type !=3D Image && KdenliveSettings::use_magicLantern())= { - QString url =3D m_controller->clipUrl().path(); + QString url =3D m_controller->clipUrl(); url =3D url.section('.', 0, -2) + ".LOG"; if (QFile::exists(url)) { QFile file(url); @@@ -1100,10 -1078,9 +1100,10 @@@ void ClipPropertiesController::slotDele = void ClipPropertiesController::slotSaveAnalysis() { - const QString url =3D QFileDialog::getSaveFileName(this, i18n("Save A= nalysis Data"), m_controller->clipUrl().adjusted(QUrl::RemoveFilename).path= (), i18n("Text File (*.txt)")); + const QString url =3D QFileDialog::getSaveFileName(this, i18n("Save A= nalysis Data"), QFileInfo(m_controller->clipUrl()).absolutePath(), i18n("Te= xt File (*.txt)")); - if (url.isEmpty()) + if (url.isEmpty()) { return; + } KSharedConfigPtr config =3D KSharedConfig::openConfig(url, KConfig::S= impleConfig); KConfigGroup analysisConfig(config, "Analysis"); QTreeWidgetItem *current =3D m_analysisTree->currentItem(); @@@ -1112,10 -1089,9 +1112,10 @@@ = void ClipPropertiesController::slotLoadAnalysis() { - const QString url =3D QFileDialog::getOpenFileName(this, i18n("Open A= nalysis Data"), m_controller->clipUrl().adjusted(QUrl::RemoveFilename).path= (), i18n("Text File (*.txt)")); + const QString url =3D QFileDialog::getOpenFileName(this, i18n("Open A= nalysis Data"), QFileInfo(m_controller->clipUrl()).absolutePath(), i18n("Te= xt File (*.txt)")); - if (url.isEmpty()) + if (url.isEmpty()) { return; + } KSharedConfigPtr config =3D KSharedConfig::openConfig(url, KConfig::S= impleConfig); KConfigGroup transConfig(config, "Analysis"); // read the entries diff --cc src/monitor/recmonitor.cpp index 38e50df51,c2712ac23..84cb63a85 --- a/src/monitor/recmonitor.cpp +++ b/src/monitor/recmonitor.cpp @@@ -619,18 -586,15 +619,18 @@@ void RecMonitor::slotRecord( m_recAction->setChecked(true); QString extension =3D QStringLiteral("mpg"); if (device_selector->currentIndex() =3D=3D ScreenBag) { - extension =3D KdenliveSettings::grab_extension(); - } - else if (device_selector->currentIndex() =3D=3D Video4Linux) { + extension =3D KdenliveSettings::grab_extension(); + } else if (device_selector->currentIndex() =3D=3D Video4Linux) { // TODO: when recording audio only, allow configuration? - if (!rec_video->isChecked()) extension =3D QStringLiteral("wa= v"); - else extension =3D KdenliveSettings::v4l_extension(); + if (!rec_video->isChecked()) { + extension =3D QStringLiteral("wav"); + } else { + extension =3D KdenliveSettings::v4l_extension(); + } + } else if (device_selector->currentIndex() =3D=3D BlackMagic) { + extension =3D KdenliveSettings::decklink_extension(); } - QString path =3D QUrl(m_capturePath).path() + QDir::separator() += "capture0000." + extension; - else if (device_selector->currentIndex() =3D=3D BlackMagic) exten= sion =3D KdenliveSettings::decklink_extension(); + QString path =3D QUrl(m_capturePath).toLocalFile() + QDir::separa= tor() + "capture0000." + extension; int i =3D 1; while (QFile::exists(path)) { QString num =3D QString::number(i).rightJustified(4, '0', fal= se); @@@ -704,11 -664,9 +704,11 @@@ } = showPreview =3D m_previewSettings->isChecked(); - if (!rec_video->isChecked()) showPreview =3D false; + if (!rec_video->isChecked()) { + showPreview =3D false; + } = - if (m_captureDevice->slotStartCapture(v4lparameters, m_captur= eFile.path(), playlist, showPreview, isXml)) { + if (m_captureDevice->slotStartCapture(v4lparameters, m_captur= eFile.toLocalFile(), playlist, showPreview, isXml)) { m_isCapturing =3D true; m_recAction->setEnabled(false); m_stopAction->setEnabled(true); @@@ -970,9 -924,9 +970,9 @@@ void RecMonitor::manageCapturedFiles( filters << capturename + '*' + extension; const QStringList result =3D dir.entryList(filters, QDir::Files, QDir= ::Time); QList capturedFiles; - foreach(const QString & name, result) { + for (const QString &name : result) { - QUrl url =3D QUrl(dir.filePath(name)); - if (QFile::exists(url.path())) { + QUrl url =3D QUrl::fromLocalFile(dir.absoluteFilePath(name)); + if (QFile::exists(url.toLocalFile())) { KFileItem file(url); file.setDelayedMimeTypes(true); if (file.time(KFileItem::ModificationTime) > m_captureTime) { diff --cc src/project/clipstabilize.cpp index 1f4b379fa,06c06fd08..7ddb1a779 --- a/src/project/clipstabilize.cpp +++ b/src/project/clipstabilize.cpp @@@ -221,23 -224,18 +221,23 @@@ void ClipStabilize::fillParameters(QStr void ClipStabilize::slotValidate() { if (m_urls.count() =3D=3D 1) { - if (QFile::exists(dest_url->url().path())) { - if (KMessageBox::questionYesNo(this, i18n("File %1 already ex= ists.\nDo you want to overwrite it?", dest_url->url().path())) =3D=3D KMess= ageBox::No) { + if (QFile::exists(dest_url->url().toLocalFile())) { - if (KMessageBox::questionYesNo(this, i18n("File %1 already ex= ists.\nDo you want to overwrite it?", dest_url->url().toLocalFile() )) =3D= =3D KMessageBox::No) return; ++ if (KMessageBox::questionYesNo(this, i18n("File %1 already ex= ists.\nDo you want to overwrite it?", dest_url->url().toLocalFile())) =3D= =3D KMessageBox::No) { + return; + } } - } - else { + } else { QDir folder(dest_url->url().toLocalFile()); QStringList existingFiles; - foreach(const QString &path, m_urls) { - if (folder.exists(path + ".mlt")) existingFiles.append(folder= .absoluteFilePath(path + ".mlt")); + foreach (const QString &path, m_urls) { + if (folder.exists(path + ".mlt")) { + existingFiles.append(folder.absoluteFilePath(path + ".mlt= ")); + } } if (!existingFiles.isEmpty()) { - if (KMessageBox::warningContinueCancelList(this, i18n("The st= abilize job will overwrite the following files:"), existingFiles) =3D=3D K= MessageBox::Cancel) return; + if (KMessageBox::warningContinueCancelList(this, i18n("The st= abilize job will overwrite the following files:"), existingFiles) =3D=3D K= MessageBox::Cancel) { + return; + } } } accept(); diff --cc src/project/cliptranscode.cpp index c42127e47,aae4c3929..1f7d0e26f --- a/src/project/cliptranscode.cpp +++ b/src/project/cliptranscode.cpp @@@ -134,9 -131,9 +134,9 @@@ void ClipTranscode::slotStartTransCode( if (!m_urls.isEmpty() && urls_list->count() > 0) { // We are processing multiple clips source_url->setUrl(QUrl::fromLocalFile(m_urls.takeFirst())); - destination =3D dest_url->url().path() + QDir::separator() + sour= ce_url->url().fileName(); - QList matching =3D urls_list->findItems(source= _url->url().path(), Qt::MatchExactly); + destination =3D QDir(dest_url->url().toLocalFile()).absoluteFileP= ath(source_url->url().fileName()); + QList matching =3D urls_list->findItems(source= _url->url().toLocalFile(), Qt::MatchExactly); - if (matching.count() > 0) { + if (!matching.isEmpty()) { matching.at(0)->setFlags(Qt::ItemIsSelectable); urls_list->setCurrentItem(matching.at(0)); } @@@ -236,15 -230,10 +236,15 @@@ void ClipTranscode::slotTranscodeFinish if (urls_list->count() > 0) { QString params =3D ffmpeg_params->toPlainText().simplifie= d(); QString extension =3D params.section(QStringLiteral("%1")= , 1, 1).section(' ', 0, 0); - url =3D QUrl::fromLocalFile(dest_url->url().path() + QDir= ::separator() + source_url->url().fileName() + extension); + url =3D QUrl::fromLocalFile(dest_url->url().toLocalFile()= + QDir::separator() + source_url->url().fileName() + extension); - } else url =3D dest_url->url(); - if (m_automaticMode) emit transcodedClip(source_url->url(), u= rl); - else emit addClip(url, m_folderInfo); + } else { + url =3D dest_url->url(); + } + if (m_automaticMode) { + emit transcodedClip(source_url->url(), url); + } else { + emit addClip(url, m_folderInfo); + } } if (urls_list->count() > 0 && m_urls.count() > 0) { m_transcodeProcess.close(); diff --cc src/project/dialogs/archivewidget.cpp index d38070aca,c443f22f7..99fb3ff1f --- a/src/project/dialogs/archivewidget.cpp +++ b/src/project/dialogs/archivewidget.cpp @@@ -115,32 -117,28 +115,34 @@@ ArchiveWidget::ArchiveWidget(const QStr ClipType t =3D clip->clipType(); QString id =3D clip->clipId(); if (t =3D=3D SlideShow) { - QUrl slideUrl =3D clip->clipUrl(); //TODO: Slideshow files - slideUrls.insert(id, slideUrl.toLocalFile()); - } else if (t =3D=3D Image) { - imageUrls.insert(id, clip->clipUrl().toLocalFile()); - } else if (t =3D=3D QText) { + slideUrls.insert(id, clip->clipUrl()); + } - else if (t =3D=3D Image) imageUrls.insert(id, clip->clipUrl()); - else if (t =3D=3D QText) allFonts << clip->property(QStringLitera= l("family")); ++ else if (t =3D=3D Image) { ++ imageUrls.insert(id, clip->clipUrl()); ++ } ++ else if (t =3D=3D QText) { + allFonts << clip->property(QStringLiteral("family")); - } else if (t =3D=3D Text) { ++ } + else if (t =3D=3D Text) { QStringList imagefiles =3D TitleWidget::extractImageList(clip= ->property(QStringLiteral("xmldata"))); QStringList fonts =3D TitleWidget::extractFontList(clip->prop= erty(QStringLiteral("xmldata"))); extraImageUrls << imagefiles; allFonts << fonts; } else if (t =3D=3D Playlist) { - playlistUrls.insert(id, clip->clipUrl().toLocalFile()); - QStringList files =3D ProjectSettings::extractPlaylistUrls(cl= ip->clipUrl().toLocalFile()); + playlistUrls.insert(id, clip->clipUrl()); + QStringList files =3D ProjectSettings::extractPlaylistUrls(cl= ip->clipUrl()); otherUrls << files; - } - else if (!clip->clipUrl().isEmpty()) { - if (t =3D=3D Audio) audioUrls.insert(id, clip->clipUrl()); - else { + } else if (!clip->clipUrl().isEmpty()) { + if (t =3D=3D Audio) { - audioUrls.insert(id, clip->clipUrl().toLocalFile()); ++ audioUrls.insert(id, clip->clipUrl()); + } else { - videoUrls.insert(id, clip->clipUrl().toLocalFile()); + videoUrls.insert(id, clip->clipUrl()); // Check if we have a proxy QString proxy =3D clip->property(QStringLiteral("kdenlive= :proxy")); - if (!proxy.isEmpty() && proxy !=3D QLatin1String("-") && = QFile::exists(proxy)) proxyUrls.insert(id, proxy); + if (!proxy.isEmpty() && proxy !=3D QLatin1String("-") && = QFile::exists(proxy)) { + proxyUrls.insert(id, proxy); + } } } } diff --cc src/project/dialogs/projectsettings.cpp index 151f359ac,e3d7347b5..42073eba9 --- a/src/project/dialogs/projectsettings.cpp +++ b/src/project/dialogs/projectsettings.cpp @@@ -362,8 -364,8 +362,8 @@@ void ProjectSettings::slotUpdateFiles(b } allFonts << fonts; } else if (clip->clipType() =3D=3D Playlist) { - QStringList files =3D extractPlaylistUrls(clip->clipUrl().toL= ocalFile()); + QStringList files =3D extractPlaylistUrls(clip->clipUrl()); - foreach(const QString & file, files) { + foreach (const QString &file, files) { count++; new QTreeWidgetItem(others, QStringList() << file); } @@@ -528,10 -526,8 +528,10 @@@ QStringList ProjectSettings::extractPla } if (url.section('.', 0, -2).endsWith(QLatin1String("/.all= "))) { // slideshow clip, extract image urls - urls << extractSlideshowUrls(QUrl(url)); + urls << extractSlideshowUrls(url); - } else urls << url; + } else { + urls << url; + } if (url.endsWith(QLatin1String(".mlt")) || url.endsWith(Q= Latin1String(".kdenlive"))) { //TODO: Do something to avoid infinite loops if 2 fil= es reference themselves... urls << extractPlaylistUrls(url); @@@ -556,14 -552,15 +556,14 @@@ return urls; } = - //static - QStringList ProjectSettings::extractSlideshowUrls(const QUrl &url) + QStringList ProjectSettings::extractSlideshowUrls(const QString &url) { QStringList urls; - QString path =3D url.adjusted(QUrl::RemoveFilename).toLocalFile(); - QString ext =3D url.toLocalFile().section('.', -1); + QString path =3D QFileInfo(url).absolutePath(); + QString ext =3D url.section('.', -1); QDir dir(path); - if (url.toLocalFile().contains(QStringLiteral(".all."))) { + if (url.contains(QStringLiteral(".all."))) { // this is a mime slideshow, like *.jpeg QStringList filters; filters << "*." + ext; @@@ -579,12 -576,10 +579,12 @@@ QRegExp rx(regexp); int count =3D 0; QStringList result =3D dir.entryList(QDir::Files); - foreach(const QString & path, result) { - if (rx.exactMatch(path)) count++; + foreach (const QString &path, result) { + if (rx.exactMatch(path)) { + count++; + } } - urls.append(url.toLocalFile() + " (" + i18np("1 image found", "%1= images found", count) + ')'); + urls.append(url + " (" + i18np("1 image found", "%1 images found"= , count) + ')'); } return urls; } diff --cc src/project/dialogs/projectsettings.h index 15019938c,374f3761f..d5eb0fb1c --- a/src/project/dialogs/projectsettings.h +++ b/src/project/dialogs/projectsettings.h @@@ -46,9 -47,9 +46,9 @@@ public int proxyImageMinSize() const; QString proxyParams() const; QString proxyExtension() const; - const QMap metadata() const; + const QMap metadata() const; static QStringList extractPlaylistUrls(const QString &path); - static QStringList extractSlideshowUrls(const QUrl &url); + static QStringList extractSlideshowUrls(const QString &url); const QString selectedPreview() const; const QString storageFolder() const; = diff --cc src/project/jobs/cutclipjob.cpp index 340e17d71,3bbbe18df..68c2984a0 --- a/src/project/jobs/cutclipjob.cpp +++ b/src/project/jobs/cutclipjob.cpp @@@ -273,15 -250,13 +273,15 @@@ QList CutClipJob::filter return result; } = -// static = +// static = -QHash CutClipJob::prepareCutClipJob(do= uble fps, double originalFps, ProjectClip *clip) +QHash CutClipJob::prepareCutClipJob(dou= ble fps, double originalFps, ProjectClip *clip) { - QHash jobs; - if (!clip) return jobs; + QHash jobs; + if (!clip) { + return jobs; + } - QString source =3D clip->url().toLocalFile(); + QString source =3D clip->url(); QPoint zone =3D clip->zone(); QString ext =3D source.section('.', -1); QString dest =3D source.section('.', 0, -2) + '_' + QString::number(z= one.x()) + '.' + ext; @@@ -367,10 -334,9 +367,10 @@@ QHashurl().toLocalFile(); + QString source =3D clips.at(i)->url(); sources << source; QString newFile =3D params.section(' ', -1).replace(QLatin1String= ("%1"), source); destinations << newFile; @@@ -416,9 -379,8 +416,9 @@@ QString dest; if (clips.count() > 1) { dest =3D destinations.at(i); + } else { - dest =3D ui.file_url->url().path(); ++ dest =3D ui.file_url->url().toLocalFile(); } - else dest =3D ui.file_url->url().toLocalFile(); QStringList jobParams; jobParams << QString::number((int) AbstractClipJob::TRANSCODEJOB); jobParams << dest << src << QString() << QString(); @@@ -439,9 -401,9 +439,9 @@@ QHash jobs; + QHash jobs; foreach (ProjectClip *clip, clips) { - QString source =3D clip->url().toLocalFile(); + QString source =3D clip->url(); QStringList jobParams; int duration =3D clip->duration().frames(fps) * clip->getOriginal= Fps() / fps; jobParams << QString::number((int) AbstractClipJob::ANALYSECLIPJO= B) << QString() << source << QString::number(duration); diff --cc src/project/jobs/filterjob.cpp index e53d41502,9f04bcc88..fbe349d15 --- a/src/project/jobs/filterjob.cpp +++ b/src/project/jobs/filterjob.cpp @@@ -57,13 -58,12 +57,13 @@@ QList FilterJob::filterC return result; } = -QHash FilterJob::prepareJob(QList clips, QStringList parameters) +QHash FilterJob::prepareJob(const QList= &clips, const QStringList ¶meters) { - QHash jobs; + QHash jobs; QStringList sources; + sources.reserve(clips.count()); for (int i =3D 0; i < clips.count(); i++) { - sources << clips.at(i)->url().toLocalFile(); + sources << clips.at(i)->url(); } QString filterName =3D parameters.first(); if (filterName =3D=3D QLatin1String("timewarp")) { @@@ -80,32 -80,30 +80,32 @@@ QPointer d =3D new ClipSpeed(clips.count() =3D=3D 1 ? = QUrl::fromLocalFile(sources.first() + QStringLiteral(".mlt")) : QUrl::fromL= ocalFile(sources.first()).adjusted(QUrl::RemoveFilename), multipleSelection= , QApplication::activeWindow()); if (d->exec() =3D=3D QDialog::Accepted) { QLocale locale; - QString speedString =3D QString("timewarp:%1:").arg(locale.to= String(d->speed()/100)); + QString speedString =3D QStringLiteral("timewarp:%1:").arg(lo= cale.toString(d->speed() / 100)); QDir destFolder; if (multipleSelection) { - destFolder =3D QDir(d->selectedUrl().path()); + destFolder =3D QDir(d->selectedUrl().toLocalFile()); } - for (int i =3D 0; i < clips.count(); i++) { - QString prodstring =3D speedString + sources.at(i); - producerParams.insert(QStringLiteral("producer"), prodstring); - QString destination; - if (multipleSelection) { - destination =3D destFolder.absoluteFilePath(QUrl::fromLoc= alFile(sources.at(i)).fileName() + QStringLiteral(".mlt")); - } else { - destination =3D d->selectedUrl().toLocalFile(); - } - if (QFile::exists(destination)) { - if (KMessageBox::questionYesNo(QApplication::activeWindow= (), i18n("File %1 already exists.\nDo you want to overwrite it?", destinati= on)) !=3D KMessageBox::Yes) continue; + for (int i =3D 0; i < clips.count(); i++) { + QString prodstring =3D speedString + sources.at(i); + producerParams.insert(QStringLiteral("producer"), prodstr= ing); + QString destination; + if (multipleSelection) { + destination =3D destFolder.absoluteFilePath(QUrl::fro= mLocalFile(sources.at(i)).fileName() + QStringLiteral(".mlt")); + } else { - destination =3D d->selectedUrl().path(); ++ destination =3D d->selectedUrl().toLocalFile(); + } + if (QFile::exists(destination)) { + if (KMessageBox::questionYesNo(QApplication::activeWi= ndow(), i18n("File %1 already exists.\nDo you want to overwrite it?", desti= nation)) !=3D KMessageBox::Yes) { + continue; + } + } + consumerParams.insert(QStringLiteral("consumer"), "xml:" = + destination); + ProjectClip *clip =3D clips.at(i); + MeltJob *job =3D new MeltJob(clip->clipType(), clip->clip= Id(), producerParams, filterParams, consumerParams, extraParams); + job->description =3D i18n("Reverse clip"); + job->setAddClipToProject(1); + jobs.insert(clip, job); } - consumerParams.insert(QStringLiteral("consumer"), "xml:" + de= stination); - ProjectClip *clip =3D clips.at(i); - MeltJob *job =3D new MeltJob(clip->clipType(), clip->clipId()= , producerParams, filterParams, consumerParams, extraParams); - job->description =3D i18n("Reverse clip"); - job->setAddClipToProject(1); - jobs.insert(clip, job); - } } delete d; return jobs; diff --cc src/project/projectmanager.cpp index 48f3914a9,63c0731d1..ff6f59afb --- a/src/project/projectmanager.cpp +++ b/src/project/projectmanager.cpp @@@ -202,7 -206,7 +202,7 @@@ void ProjectManager::newFile(bool showP // Set default target tracks to upper audio / lower video tracks m_trackView->audioTarget =3D projectTracks.y() > 0 ? projectTracks.y(= ) : -1; m_trackView->videoTarget =3D projectTracks.x() > 0 ? projectTracks.y(= ) + 1 : -1; - connect(m_trackView->projectView(), SIGNAL(importPlaylistClips(ItemIn= fo, QUrl, QUndoCommand *)), pCore->bin(), SLOT(slotExpandUrl(ItemInfo, QUrl= , QUndoCommand *)), Qt::DirectConnection); - connect(m_trackView->projectView(), SIGNAL(importPlaylistClips(ItemIn= fo, const QString&, QUndoCommand*)), pCore->bin(), SLOT(slotExpandUrl(ItemI= nfo, const QString&, QUndoCommand*)), Qt::DirectConnection); ++ connect(m_trackView->projectView(), SIGNAL(importPlaylistClips(ItemIn= fo, QString, QUndoCommand *)), pCore->bin(), SLOT(slotExpandUrl(ItemInfo, Q= String, QUndoCommand *)), Qt::DirectConnection); = m_trackView->loadTimeline(); pCore->window()->m_timelineArea->addTab(m_trackView, QIcon::fromTheme= (QStringLiteral("kdenlive")), doc->description()); @@@ -563,7 -567,7 +563,7 @@@ void ProjectManager::doOpenFile(const Q m_trackView->videoTarget =3D doc->getDocumentProperty(QStringLiteral(= "videotargettrack"), QStringLiteral("-1")).toInt(); m_trackView->loadTimeline(); m_trackView->loadGuides(pCore->binController()->takeGuidesData()); - connect(m_trackView->projectView(), SIGNAL(importPlaylistClips(ItemIn= fo, QUrl, QUndoCommand *)), pCore->bin(), SLOT(slotExpandUrl(ItemInfo, QUrl= , QUndoCommand *)), Qt::DirectConnection); - connect(m_trackView->projectView(), SIGNAL(importPlaylistClips(ItemIn= fo, const QString&, QUndoCommand*)), pCore->bin(), SLOT(slotExpandUrl(ItemI= nfo, const QString&, QUndoCommand*)), Qt::DirectConnection); ++ connect(m_trackView->projectView(), SIGNAL(importPlaylistClips(ItemIn= fo, QString, QUndoCommand *)), pCore->bin(), SLOT(slotExpandUrl(ItemInfo, Q= String, QUndoCommand *)), Qt::DirectConnection); pCore->window()->connectDocument(); bool disabled =3D m_project->getDocumentProperty(QStringLiteral("disa= bletimelineeffects")) =3D=3D QLatin1String("1"); QAction *disableEffects =3D pCore->window()->actionCollection()->acti= on(QStringLiteral("disable_timeline_effects")); diff --cc src/stopmotion/stopmotion.cpp index 760e83c9e,bb83dece9..a2d4913da --- a/src/stopmotion/stopmotion.cpp +++ b/src/stopmotion/stopmotion.cpp @@@ -730,13 -713,12 +730,13 @@@ void StopmotionWidget::slotCreateThumbs = QString StopmotionWidget::getPathForFrame(int ix, QString seqName) { - if (seqName.isEmpty()) + if (seqName.isEmpty()) { seqName =3D m_sequenceName; + } - return m_projectFolder.path() + QDir::separator() + seqName + QLatin1= Char('_') + QString::number(ix).rightJustified(4, '0', false) + QStringLite= ral(".png"); + return m_projectFolder.toLocalFile() + QDir::separator() + seqName + = QLatin1Char('_') + QString::number(ix).rightJustified(4, '0', false) + QStr= ingLiteral(".png"); } = -void StopmotionWidget::slotShowFrame(const QString& path) +void StopmotionWidget::slotShowFrame(const QString &path) { //slotLive(false); QImage img(path); diff --cc src/timeline/customtrackview.cpp index a35085df8,3fd84c09d..c5c7d2c5f --- a/src/timeline/customtrackview.cpp +++ b/src/timeline/customtrackview.cpp @@@ -7348,13 -6893,13 +7348,13 @@@ void CustomTrackView::setAudioAlignRefe m_audioAlignmentReference =3D clip; Mlt::Producer *prod =3D m_timeline->track(clip->track())->cli= pProducer(m_document->renderer()->getBinProducer(clip->getBinId()), clip->c= lipState()); if (!prod) { - qWarning() << "couldn't load producer for clip " << clip-= >getBinId() << " on track " << clip->track(); + qCWarning(KDENLIVE_LOG) << "couldn't load producer for cl= ip " << clip->getBinId() << " on track " << clip->track(); return; } - AudioEnvelope *envelope =3D new AudioEnvelope(clip->binClip()= ->url().path(), prod); + AudioEnvelope *envelope =3D new AudioEnvelope(clip->binClip()= ->url(), prod); m_audioCorrelator =3D new AudioCorrelation(envelope); - connect(m_audioCorrelator, SIGNAL(gotAudioAlignData(int,int,i= nt)), this, SLOT(slotAlignClip(int,int,int))); - connect(m_audioCorrelator, SIGNAL(displayMessage(QString,Mess= ageType)), this, SIGNAL(displayMessage(QString,MessageType))); + connect(m_audioCorrelator, &AudioCorrelation::gotAudioAlignDa= ta, this, &CustomTrackView::slotAlignClip); + connect(m_audioCorrelator, &AudioCorrelation::displayMessage,= this, &CustomTrackView::displayMessage); emit displayMessage(i18n("Processing audio, please wait."), P= rocessingJobMessage); } return; @@@ -7392,10 -6937,10 +7392,10 @@@ void CustomTrackView::alignAudio( ItemInfo info =3D clip->info(); Mlt::Producer *prod =3D m_timeline->track(clip->track())-= >clipProducer(m_document->renderer()->getBinProducer(clip->getBinId()), cli= p->clipState()); if (!prod) { - qWarning() << "couldn't load producer for clip " << c= lip->getBinId() << " on track " << clip->track(); + qCWarning(KDENLIVE_LOG) << "couldn't load producer fo= r clip " << clip->getBinId() << " on track " << clip->track(); return; } - AudioEnvelope *envelope =3D new AudioEnvelope(clip->binCl= ip()->url().path(), prod, + AudioEnvelope *envelope =3D new AudioEnvelope(clip->binCl= ip()->url(), prod, info.cropStart.frames(m_document->fps()), info.cropDuration.frames(m_document->fps()), clip->track(), @@@ -8044,9 -7555,7 +8044,9 @@@ QStringList CustomTrackView::extractTra transitionXml =3D transitionitem->toXML(); // luma files in transitions are in "resource" property QString luma =3D EffectsList::parameter(transitionXml, QStrin= gLiteral("resource")); - if (!luma.isEmpty()) urls << QUrl::fromLocalFile(luma).toLoca= lFile(); + if (!luma.isEmpty()) { - urls << QUrl(luma).path(); ++ urls << QUrl::fromLocalFile(luma).toLocalFile(); + } } } urls.removeDuplicates(); diff --cc src/timeline/customtrackview.h index 749248caf,d7b9f5f6f..18d63214c --- a/src/timeline/customtrackview.h +++ b/src/timeline/customtrackview.h @@@ -612,7 -614,7 +612,7 @@@ signals /** @brief Guides were changed, inform render widget*/ void guidesUpdated(); /** @brief Prepare importing and expand of a playlist clip */ - void importPlaylistClips(const ItemInfo &info, const QUrl &url, QUndo= Command *expandCommand); - void importPlaylistClips(ItemInfo info, const QString &url, QUndoComm= and *expandCommand); ++ void importPlaylistClips(const ItemInfo &info, const QString &url, QU= ndoCommand *expandCommand); /** @brief Show a specific frame in clip monitor */ void showClipFrame(const QString &id, int frame); /** @brief Select active keyframe in effect stack */ diff --cc src/timeline/timeline.cpp index 33254424e,e17154ed3..445b57839 --- a/src/timeline/timeline.cpp +++ b/src/timeline/timeline.cpp @@@ -563,12 -529,10 +563,12 @@@ void Timeline::parseDocument(const QDom m_doc->saveCustomEffects(effects); } = - if (!m_documentErrors.isNull()) KMessageBox::sorry(this, m_documentEr= rors); + if (!m_documentErrors.isNull()) { + KMessageBox::sorry(this, m_documentErrors); + } if (mlt.hasAttribute(QStringLiteral("upgraded")) || mlt.hasAttribute(= QStringLiteral("modified"))) { // Our document was upgraded, create a backup copy just in case - QString baseFile =3D m_doc->url().path().section(QStringLiteral("= .kdenlive"), 0, 0); + QString baseFile =3D m_doc->url().toLocalFile().section(QStringLi= teral(".kdenlive"), 0, 0); int ct =3D 0; QString backupFile =3D baseFile + "_backup" + QString::number(ct)= + ".kdenlive"; while (QFile::exists(backupFile)) { diff --cc src/titler/titlewidget.cpp index 669f48ad0,ba8b15e95..279b9a0ff --- a/src/titler/titlewidget.cpp +++ b/src/titler/titlewidget.cpp @@@ -750,13 -744,11 +750,13 @@@ void TitleWidget::slotImageTool( QFileDialog dialog(this, i18n("Add Image"), clipFolder); dialog.setAcceptMode(QFileDialog::AcceptOpen); dialog.setNameFilters(mimeTypeFilters); - if (dialog.exec() !=3D QDialog::Accepted) return; + if (dialog.exec() !=3D QDialog::Accepted) { + return; + } QUrl url =3D QUrl::fromLocalFile(dialog.selectedFiles().at(0)); if (url.isValid()) { - KRecentDirs::add(QStringLiteral(":KdenliveImageFolder"), url.adju= sted(QUrl::RemoveFilename).path()); - if (url.path().endsWith(QLatin1String(".svg"))) { + KRecentDirs::add(QStringLiteral(":KdenliveImageFolder"), url.adju= sted(QUrl::RemoveFilename).toLocalFile()); + if (url.toLocalFile().endsWith(QLatin1String(".svg"))) { MySvgItem *svg =3D new MySvgItem(url.toLocalFile()); svg->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::I= temIsSelectable | QGraphicsItem::ItemSendsGeometryChanges); svg->setZValue(m_count++); @@@ -1934,9 -1889,8 +1934,9 @@@ void TitleWidget::saveTitle(QUrl url delete fs; } if (url.isValid()) { - if (m_titledocument.saveDocument(url, m_startViewport, m_endViewp= ort, m_tc.getFrameCount(title_duration->text()), embed_image) =3D=3D false) + if (m_titledocument.saveDocument(url, m_startViewport, m_endViewp= ort, m_tc.getFrameCount(title_duration->text()), embed_image) =3D=3D false)= { - KMessageBox::error(this, i18n("Cannot write to file %1", url.= path())); + KMessageBox::error(this, i18n("Cannot write to file %1", url.= toLocalFile())); + } } } = diff --cc src/utils/resourcewidget.cpp index d9935bd3f,e001748a6..7ee8e29ba --- a/src/utils/resourcewidget.cpp +++ b/src/utils/resourcewidget.cpp @@@ -490,18 -494,21 +490,18 @@@ void ResourceWidget::slotGotFile(KJob * { QString errTxt; button_import->setEnabled(true); - if (job->error() ) - { + if (job->error()) { = - errTxt =3Djob->errorString(); + errTxt =3D job->errorString(); KMessageBox::sorry(this, errTxt, i18n("Error Loading Data")); = - qDebug()<<"//file import job errored: "<( job= ); + } else { + KIO::FileCopyJob *copyJob =3D static_cast(job= ); const QUrl filePath =3D copyJob->destUrl(); = - KMessageBox::information(this, i18n("Resource saved to ") + fileP= ath.path(), i18n("Data Imported")); - KMessageBox::information(this,i18n( "Resource saved to ") + fileP= ath.toLocalFile(), i18n("Data Imported")); ++ KMessageBox::information(this, i18n("Resource saved to ") + fileP= ath.toLocalFile(), i18n("Data Imported")); emit addClip(filePath, QStringList()); } }