X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Frenderwidget.cpp;h=d2104d619807ebd76c27319947f17b542c5fc8d3;hb=1ea8ebcfd35fd09ff13a3e065c6d635466ce33a1;hp=9ef29dfada2178e8a35252a085ce72b22369dd40;hpb=dd1f644e61be38f990d95336a797dce29df281d2;p=kdenlive diff --git a/src/renderwidget.cpp b/src/renderwidget.cpp index 9ef29dfa..d2104d61 100644 --- a/src/renderwidget.cpp +++ b/src/renderwidget.cpp @@ -236,7 +236,7 @@ RenderWidget::RenderWidget(const QString &projectfolder, bool enableProxy, MltVi connect(m_view.delete_script, SIGNAL(clicked()), this, SLOT(slotDeleteScript())); connect(m_view.scripts_list, SIGNAL(itemSelectionChanged()), this, SLOT(slotCheckScript())); connect(m_view.running_jobs, SIGNAL(itemSelectionChanged()), this, SLOT(slotCheckJob())); - connect(m_view.running_jobs, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this, SLOT(slotPlayRendering(QTreeWidgetItem *, int))); + connect(m_view.running_jobs, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(slotPlayRendering(QTreeWidgetItem*,int))); connect(m_view.buttonInfo, SIGNAL(clicked()), this, SLOT(showInfoPanel())); @@ -255,13 +255,13 @@ RenderWidget::RenderWidget(const QString &projectfolder, bool enableProxy, MltVi connect(m_view.buttonClose3, SIGNAL(clicked()), this, SLOT(hide())); connect(m_view.rescale, SIGNAL(toggled(bool)), this, SLOT(setRescaleEnabled(bool))); connect(m_view.destination_list, SIGNAL(activated(int)), this, SLOT(refreshCategory())); - connect(m_view.out_file, SIGNAL(textChanged(const QString &)), this, SLOT(slotUpdateButtons())); - connect(m_view.out_file, SIGNAL(urlSelected(const KUrl &)), this, SLOT(slotUpdateButtons(const KUrl &))); + connect(m_view.out_file, SIGNAL(textChanged(QString)), this, SLOT(slotUpdateButtons())); + connect(m_view.out_file, SIGNAL(urlSelected(KUrl)), this, SLOT(slotUpdateButtons(KUrl))); connect(m_view.format_list, SIGNAL(currentRowChanged(int)), this, SLOT(refreshView())); connect(m_view.size_list, SIGNAL(currentRowChanged(int)), this, SLOT(refreshParams())); connect(m_view.show_all_profiles, SIGNAL(stateChanged(int)), this, SLOT(refreshView())); - connect(m_view.size_list, SIGNAL(itemDoubleClicked(QListWidgetItem *)), this, SLOT(slotEditItem(QListWidgetItem *))); + connect(m_view.size_list, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(slotEditItem(QListWidgetItem*))); connect(m_view.render_guide, SIGNAL(clicked(bool)), this, SLOT(slotUpdateGuideBox())); connect(m_view.render_zone, SIGNAL(clicked(bool)), this, SLOT(slotUpdateGuideBox())); @@ -382,7 +382,7 @@ void RenderWidget::setGuides(QDomElement guidesxml, double duration) m_view.guide_start->clear(); m_view.guide_end->clear(); QDomNodeList nodes = guidesxml.elementsByTagName("guide"); - if (nodes.count() > 0) { + if (!nodes.isEmpty()) { m_view.guide_start->addItem(i18n("Beginning"), "0"); m_view.render_guide->setEnabled(true); m_view.create_chapter->setEnabled(true); @@ -400,7 +400,7 @@ void RenderWidget::setGuides(QDomElement guidesxml, double duration) m_view.guide_end->addItem(e.attribute("comment") + '/' + guidePos, e.attribute("time").toDouble()); } } - if (nodes.count() > 0) + if (!nodes.isEmpty()) m_view.guide_end->addItem(i18n("End"), QString::number(duration)); } @@ -408,7 +408,7 @@ void RenderWidget::setGuides(QDomElement guidesxml, double duration) * Will be called when the user selects an output file via the file dialog. * File extension will be added automatically. */ -void RenderWidget::slotUpdateButtons(KUrl url) +void RenderWidget::slotUpdateButtons(const KUrl &url) { if (m_view.out_file->url().isEmpty()) { m_view.buttonGenerateScript->setEnabled(false); @@ -423,9 +423,8 @@ void RenderWidget::slotUpdateButtons(KUrl url) m_view.buttonGenerateScript->setEnabled(false); return; } - QString extension = item->data(ExtensionRole).toString(); - url = filenameWithExtension(url, extension); - m_view.out_file->setUrl(url); + const QString extension = item->data(ExtensionRole).toString(); + m_view.out_file->setUrl(filenameWithExtension(url, extension)); } } @@ -464,6 +463,25 @@ void RenderWidget::slotSaveProfile() ui.parameters->setText(arguments.join(" ")); ui.extension->setText(m_view.size_list->currentItem()->data(ExtensionRole).toString()); ui.profile_name->setFocus(); + QListWidgetItem *item = m_view.size_list->currentItem(); + if (ui.parameters->toPlainText().contains("%bitrate")) { + if ( item && item->data(BitratesRole).canConvert(QVariant::StringList) && item->data(BitratesRole).toStringList().count()) { + QStringList bitrates = item->data(BitratesRole).toStringList(); + ui.vbitrates_list->setText(bitrates.join(",")); + if (item->data(DefaultBitrateRole).canConvert(QVariant::String)) + ui.default_vbitrate->setValue(item->data(DefaultBitrateRole).toInt()); + } + } + else ui.vbitrates->setHidden(true); + if (ui.parameters->toPlainText().contains("%audiobitrate")) { + if ( item && item->data(AudioBitratesRole).canConvert(QVariant::StringList) && item->data(AudioBitratesRole).toStringList().count()) { + QStringList bitrates = item->data(AudioBitratesRole).toStringList(); + ui.abitrates_list->setText(bitrates.join(",")); + if (item->data(DefaultAudioBitrateRole).canConvert(QVariant::String)) + ui.default_abitrate->setValue(item->data(DefaultAudioBitrateRole).toInt()); + } + } + else ui.abitrates->setHidden(true); if (d->exec() == QDialog::Accepted && !ui.profile_name->text().simplified().isEmpty()) { QString newProfileName = ui.profile_name->text().simplified(); @@ -481,19 +499,13 @@ void RenderWidget::slotSaveProfile() profileElement.setAttribute("args", args); if (args.contains("%bitrate")) { // profile has a variable bitrate - profileElement.setAttribute("defaultbitrate", m_view.comboBitrates->currentText()); - QStringList bitrateValues; - for (int i = 0; i < m_view.comboBitrates->count(); i++) - bitrateValues << m_view.comboBitrates->itemText(i); - profileElement.setAttribute("bitrates", bitrateValues.join(",")); + profileElement.setAttribute("defaultbitrate", QString::number(ui.default_vbitrate->value())); + profileElement.setAttribute("bitrates", ui.vbitrates_list->text()); } if (args.contains("%audiobitrate")) { // profile has a variable bitrate - profileElement.setAttribute("defaultaudiobitrate", m_view.comboAudioBitrates->currentText()); - QStringList bitrateValues; - for (int i = 0; i < m_view.comboAudioBitrates->count(); i++) - bitrateValues << m_view.comboAudioBitrates->itemText(i); - profileElement.setAttribute("audiobitrates", bitrateValues.join(",")); + profileElement.setAttribute("defaultaudiobitrate", QString::number(ui.default_abitrate->value())); + profileElement.setAttribute("audiobitrates", ui.abitrates_list->text()); } doc.appendChild(profileElement); saveProfile(doc.documentElement()); @@ -619,6 +631,25 @@ void RenderWidget::slotEditProfile() ui.extension->setText(extension); ui.parameters->setText(params); ui.profile_name->setFocus(); + if (ui.parameters->toPlainText().contains("%bitrate")) { + if ( item->data(BitratesRole).canConvert(QVariant::StringList) && item->data(BitratesRole).toStringList().count()) { + QStringList bitrates = item->data(BitratesRole).toStringList(); + ui.vbitrates_list->setText(bitrates.join(",")); + if (item->data(DefaultBitrateRole).canConvert(QVariant::String)) + ui.default_vbitrate->setValue(item->data(DefaultBitrateRole).toInt()); + } + } + else ui.vbitrates->setHidden(true); + if (ui.parameters->toPlainText().contains("%audiobitrate")) { + if ( item->data(AudioBitratesRole).canConvert(QVariant::StringList) && item->data(AudioBitratesRole).toStringList().count()) { + QStringList bitrates = item->data(AudioBitratesRole).toStringList(); + ui.abitrates_list->setText(bitrates.join(",")); + if (item->data(DefaultAudioBitrateRole).canConvert(QVariant::String)) + ui.default_abitrate->setValue(item->data(DefaultAudioBitrateRole).toInt()); + } + } + else ui.abitrates->setHidden(true); + d->setWindowTitle(i18n("Edit Profile")); if (d->exec() == QDialog::Accepted) { slotDeleteProfile(false); @@ -678,19 +709,13 @@ void RenderWidget::slotEditProfile() profileElement.setAttribute("args", args); if (args.contains("%bitrate")) { // profile has a variable bitrate - profileElement.setAttribute("defaultbitrate", m_view.comboBitrates->currentText()); - QStringList bitrateValues; - for (int i = 0; i < m_view.comboBitrates->count(); i++) - bitrateValues << m_view.comboBitrates->itemText(i); - profileElement.setAttribute("bitrates", bitrateValues.join(",")); + profileElement.setAttribute("defaultbitrate", QString::number(ui.default_vbitrate->value())); + profileElement.setAttribute("bitrates", ui.vbitrates_list->text()); } if (args.contains("%audiobitrate")) { // profile has a variable bitrate - profileElement.setAttribute("defaultaudiobitrate", m_view.comboAudioBitrates->currentText()); - QStringList bitrateValues; - for (int i = 0; i < m_view.comboAudioBitrates->count(); i++) - bitrateValues << m_view.comboAudioBitrates->itemText(i); - profileElement.setAttribute("audiobitrates", bitrateValues.join(",")); + profileElement.setAttribute("defaultaudiobitrate", QString::number(ui.default_abitrate->value())); + profileElement.setAttribute("audiobitrates", ui.abitrates_list->text()); } profiles.appendChild(profileElement); @@ -840,7 +865,7 @@ void RenderWidget::slotExport(bool scriptExport, int zoneIn, int zoneOut, const QListWidgetItem *item = m_view.size_list->currentItem(); if (!item) return; - QString dest = m_view.out_file->url().path(); + QString dest = m_view.out_file->url().path().trimmed(); if (dest.isEmpty()) return; // Check whether target file has an extension. @@ -960,8 +985,8 @@ void RenderWidget::slotExport(bool scriptExport, int zoneIn, int zoneOut, const QStringList paramsList = renderArgs.split(' ', QString::SkipEmptyParts); QScriptEngine sEngine; - sEngine.globalObject().setProperty("bitrate", m_view.comboBitrates->currentText()); - sEngine.globalObject().setProperty("audiobitrate", m_view.comboAudioBitrates->currentText()); + sEngine.globalObject().setProperty("bitrate", m_view.comboBitrates->currentText().toInt()); + sEngine.globalObject().setProperty("audiobitrate", m_view.comboAudioBitrates->currentText().toInt()); sEngine.globalObject().setProperty("dar", '@' + QString::number(m_profile.display_aspect_num) + '/' + QString::number(m_profile.display_aspect_den)); sEngine.globalObject().setProperty("passes", static_cast(m_view.checkTwoPass->isChecked()) + 1); @@ -1481,7 +1506,7 @@ void RenderWidget::reloadProfiles() parseProfiles(); } -void RenderWidget::parseProfiles(QString meta, QString group, QString profile) +void RenderWidget::parseProfiles(const QString &meta, const QString &group, const QString &profile) { m_view.destination_list->blockSignals(true); m_view.destination_list->clear(); @@ -1521,7 +1546,7 @@ void RenderWidget::parseProfiles(QString meta, QString group, QString profile) refreshCategory(group, profile); } -void RenderWidget::parseFile(QString exportFile, bool editable) +void RenderWidget::parseFile(const QString &exportFile, bool editable) { kDebug() << "// Parsing file: " << exportFile; kDebug() << "------------------------------";