X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fcliptranscode.cpp;h=4f6218c49747c765a8f2062d0d4fd61fc27e2983;hb=56aee6aedeeed3efd10ada8fe3c229eddc01ef05;hp=42a3a6ca5e2763c8e62b757dc33cf0aa7caaf630;hpb=4274029010fe1c1f4f5a2d4d4b6981fbdb57f490;p=kdenlive diff --git a/src/cliptranscode.cpp b/src/cliptranscode.cpp index 42a3a6ca..4f6218c4 100644 --- a/src/cliptranscode.cpp +++ b/src/cliptranscode.cpp @@ -27,8 +27,8 @@ #include -ClipTranscode::ClipTranscode(KUrl::List urls, const QString ¶ms, const QString &description, QWidget * parent) : - QDialog(parent), m_urls(urls), m_duration(0) +ClipTranscode::ClipTranscode(const KUrl::List &urls, const QString ¶ms, const QStringList &postParams, const QString &description, bool automaticMode, QWidget * parent) : + QDialog(parent), m_urls(urls), m_duration(0), m_automaticMode(automaticMode), m_postParams(postParams) { setFont(KGlobalSettings::toolBarFont()); setupUi(this); @@ -42,7 +42,11 @@ ClipTranscode::ClipTranscode(KUrl::List urls, const QString ¶ms, const QStri #endif log_text->setHidden(true); setWindowTitle(i18n("Transcode Clip")); + if (m_automaticMode) { + auto_add->setHidden(true); + } auto_add->setText(i18np("Add clip to project", "Add clips to project", m_urls.count())); + auto_add->setChecked(KdenliveSettings::add_new_clip()); if (m_urls.count() == 1) { QString fileName = m_urls.at(0).path(); //.section('.', 0, -1); @@ -53,7 +57,7 @@ ClipTranscode::ClipTranscode(KUrl::List urls, const QString ¶ms, const QStri dest_url->setUrl(dest); dest_url->fileDialog()->setOperationMode(KFileDialog::Saving); urls_list->setHidden(true); - connect(source_url, SIGNAL(textChanged(const QString &)), this, SLOT(slotUpdateParams())); + connect(source_url, SIGNAL(textChanged(QString)), this, SLOT(slotUpdateParams())); } else { label_source->setHidden(true); source_url->setHidden(true); @@ -61,7 +65,7 @@ ClipTranscode::ClipTranscode(KUrl::List urls, const QString ¶ms, const QStri dest_url->setMode(KFile::Directory); dest_url->setUrl(KUrl(m_urls.at(0).directory())); dest_url->fileDialog()->setOperationMode(KFileDialog::Saving); - for (int i = 0; i < m_urls.count(); i++) + for (int i = 0; i < m_urls.count(); ++i) urls_list->addItem(m_urls.at(i).path()); } if (!params.isEmpty()) { @@ -73,7 +77,7 @@ ClipTranscode::ClipTranscode(KUrl::List urls, const QString ¶ms, const QStri } else transcode_info->setHidden(true); } else { // load Profiles - KSharedConfigPtr config = KSharedConfig::openConfig("kdenlivetranscodingrc"); + KSharedConfigPtr config = KSharedConfig::openConfig("kdenlivetranscodingrc", KConfig::CascadeConfig); KConfigGroup transConfig(config, "Transcoding"); // read the entries QMap< QString, QString > profiles = transConfig.entryMap(); @@ -92,7 +96,7 @@ ClipTranscode::ClipTranscode(KUrl::List urls, const QString ¶ms, const QStri m_transcodeProcess.setProcessChannelMode(QProcess::MergedChannels); connect(&m_transcodeProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(slotShowTranscodeInfo())); - connect(&m_transcodeProcess, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(slotTranscodeFinished(int, QProcess::ExitStatus))); + connect(&m_transcodeProcess, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(slotTranscodeFinished(int,QProcess::ExitStatus))); ffmpeg_params->setMaximumHeight(QFontMetrics(font()).lineSpacing() * 5); @@ -101,6 +105,7 @@ ClipTranscode::ClipTranscode(KUrl::List urls, const QString ¶ms, const QStri ClipTranscode::~ClipTranscode() { + KdenliveSettings::setAdd_new_clip(auto_add->isChecked()); if (m_transcodeProcess.state() != QProcess::NotRunning) { m_transcodeProcess.close(); } @@ -122,7 +127,7 @@ void ClipTranscode::slotStartTransCode() QStringList parameters; QString destination; QString params = ffmpeg_params->toPlainText().simplified(); - if (m_urls.count() > 0 && urls_list->count() > 0) { + if (!m_urls.isEmpty() && urls_list->count() > 0) { // We are processing multiple clips source_url->setUrl(m_urls.takeFirst()); destination = dest_url->url().path(KUrl::AddTrailingSlash) + source_url->url().fileName(); @@ -138,11 +143,30 @@ void ClipTranscode::slotStartTransCode() QString s_url = source_url->url().path(); parameters << "-i" << s_url; if (QFile::exists(destination + extension)) { - if (KMessageBox::questionYesNo(this, i18n("File %1 already exists.\nDo you want to overwrite it?", destination + extension)) == KMessageBox::No) return; + if (KMessageBox::questionYesNo(this, i18n("File %1 already exists.\nDo you want to overwrite it?", destination + extension)) == KMessageBox::No) { + // Abort operation + if (m_automaticMode) { + // inform caller that we aborted + emit transcodedClip(source_url->url(), KUrl()); + close(); + } + return; + } parameters << "-y"; } - foreach(QString s, params.split(' ')) + + bool replaceVfParams = false; + foreach(QString s, params.split(' ')) { + if (replaceVfParams) { + s= m_postParams.at(1); + replaceVfParams = false; + } parameters << s.replace("%1", destination); + if (s == "-vf") { + replaceVfParams = true; + } + } + buttonBox->button(QDialogButtonBox::Abort)->setText(i18n("Abort")); m_destination = destination + extension; @@ -198,14 +222,15 @@ void ClipTranscode::slotTranscodeFinished(int exitCode, QProcess::ExitStatus exi } if (exitCode == 0 && exitStatus == QProcess::NormalExit) { log_text->setHtml(log_text->toPlainText() + "
" + i18n("Transcoding finished.")); - if (auto_add->isChecked()) { + if (auto_add->isChecked() || m_automaticMode) { KUrl url; if (urls_list->count() > 0) { QString params = ffmpeg_params->toPlainText().simplified(); QString extension = params.section("%1", 1, 1).section(' ', 0, 0); url = KUrl(dest_url->url().path(KUrl::AddTrailingSlash) + source_url->url().fileName() + extension); } else url = dest_url->url(); - emit addClip(url); + if (m_automaticMode) emit transcodedClip(source_url->url(), url); + else emit addClip(url); } if (urls_list->count() > 0 && m_urls.count() > 0) { m_transcodeProcess.close(); @@ -236,7 +261,7 @@ void ClipTranscode::slotTranscodeFinished(int exitCode, QProcess::ExitStatus exi //Refill url list in case user wants to transcode to another format if (urls_list->count() > 0) { m_urls.clear(); - for (int i = 0; i < urls_list->count(); i++) + for (int i = 0; i < urls_list->count(); ++i) m_urls << urls_list->item(i)->text(); } }