#include <QDBusInterface>
#include <QThread>
#include <QScriptEngine>
+#include <QKeyEvent>
#include "locale.h"
const int ABORTEDJOB = 4;
-RenderJobItem::RenderJobItem(QTreeWidget * parent, const QStringList & strings, int type) : QTreeWidgetItem(parent, strings, type),
+RenderJobItem::RenderJobItem(QTreeWidget * parent, const QStringList & strings, int type)
+ : QTreeWidgetItem(parent, strings, type),
m_status(-1)
{
setSizeHint(1, QSize(parent->columnWidth(1), parent->fontMetrics().height() * 3));
void RenderJobItem::setStatus(int status)
{
- if (m_status == status) return;
+ if (m_status == status)
+ return;
m_status = status;
switch (status) {
case WAITINGJOB:
}
-RenderWidget::RenderWidget(const QString &projectfolder, bool enableProxy, MltVideoProfile profile, QWidget * parent) :
+RenderWidget::RenderWidget(const QString &projectfolder, bool enableProxy, const MltVideoProfile &profile, QWidget * parent) :
QDialog(parent),
m_projectFolder(projectfolder),
m_profile(profile),
if (KdenliveSettings::showrenderparams()) {
m_view.buttonInfo->setDown(true);
- } else m_view.advanced_params->hide();
+ } else {
+ m_view.advanced_params->hide();
+ }
m_view.proxy_render->setHidden(!enableProxy);
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()));
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()));
m_renderer = QCoreApplication::applicationDirPath() + QString("/kdenlive_render");
if (!QFile::exists(m_renderer)) {
m_renderer = KStandardDirs::findExe("kdenlive_render");
- if (m_renderer.isEmpty()) m_renderer = KStandardDirs::locate("exe", "kdenlive_render");
- if (m_renderer.isEmpty()) m_renderer = "kdenlive_render";
+ if (m_renderer.isEmpty())
+ m_renderer = KStandardDirs::locate("exe", "kdenlive_render");
+ if (m_renderer.isEmpty())
+ m_renderer = "kdenlive_render";
}
QDBusConnectionInterface* interface = QDBusConnection::sessionBus().interface();
void RenderWidget::slotEditItem(QListWidgetItem *item)
{
- QString edit = item->data(EditableRole).toString();
- if (edit.isEmpty() || !edit.endsWith("customprofiles.xml")) slotSaveProfile();
+ const QString edit = item->data(EditableRole).toString();
+ if (edit.isEmpty() || !edit.endsWith(QLatin1String("customprofiles.xml")))
+ slotSaveProfile();
else slotEditProfile();
}
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);
m_view.create_chapter->setEnabled(false);
}
double fps = (double) m_profile.frame_rate_num / m_profile.frame_rate_den;
- for (int i = 0; i < nodes.count(); i++) {
+ for (int i = 0; i < nodes.count(); ++i) {
QDomElement e = nodes.item(i).toElement();
if (!e.isNull()) {
GenTime pos = GenTime(e.attribute("time").toDouble());
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));
}
* 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);
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));
}
}
QDialog *d = new QDialog(this);
ui.setupUi(d);
- for (int i = 0; i < m_view.destination_list->count(); i++)
+ for (int i = 0; i < m_view.destination_list->count(); ++i)
ui.destination_list->addItem(m_view.destination_list->itemIcon(i), m_view.destination_list->itemText(i), m_view.destination_list->itemData(i, Qt::UserRole));
ui.destination_list->setCurrentIndex(m_view.destination_list->currentIndex());
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();
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());
}
-void RenderWidget::saveProfile(QDomElement newprofile)
+void RenderWidget::saveProfile(const QDomElement &newprofile)
{
QString exportFile = KStandardDirs::locateLocal("appdata", "export/customprofiles.xml");
QDomDocument doc;
break;
}
}
- i++;
+ ++i;
}
profiles.appendChild(newprofile);
void RenderWidget::slotCopyToFavorites()
{
QListWidgetItem *item = m_view.size_list->currentItem();
- if (!item) return;
+ if (!item)
+ return;
QString currentGroup = m_view.format_list->currentItem()->text();
QString params = item->data(ParamsRole).toString();
QDialog *d = new QDialog(this);
ui.setupUi(d);
- for (int i = 0; i < m_view.destination_list->count(); i++)
+ for (int i = 0; i < m_view.destination_list->count(); ++i)
ui.destination_list->addItem(m_view.destination_list->itemIcon(i), m_view.destination_list->itemText(i), m_view.destination_list->itemData(i, Qt::UserRole));
ui.destination_list->setCurrentIndex(m_view.destination_list->currentIndex());
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);
break;
}
}
- i++;
+ ++i;
}
QDomElement profileElement = doc.createElement("profile");
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);
doc.documentElement().removeChild(profiles.item(i));
break;
}
- i++;
+ ++i;
}
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
}
-void RenderWidget::focusFirstVisibleItem()
+void RenderWidget::focusFirstVisibleItem(const QString &profile)
{
+ if (!profile.isEmpty()) {
+ QList <QListWidgetItem *> child = m_view.size_list->findItems(profile, Qt::MatchExactly);
+ if (!child.isEmpty())
+ m_view.size_list->setCurrentItem(child.at(0));
+ }
if (m_view.size_list->currentItem()) {
updateButtons();
return;
}
-void RenderWidget::slotExport(bool scriptExport, int zoneIn, int zoneOut, const QMap <QString, QString> metadata, const QString &playlistPath, const QString &scriptPath, bool exportAudio)
+void RenderWidget::slotExport(bool scriptExport, int zoneIn, int zoneOut, const QMap<QString, QString> &metadata, const QString &playlistPath, const QString &scriptPath, bool exportAudio)
{
QListWidgetItem *item = m_view.size_list->currentItem();
- if (!item) return;
+ if (!item)
+ return;
- QString dest = m_view.out_file->url().path();
- if (dest.isEmpty()) return;
+ QString dest = m_view.out_file->url().path().trimmed();
+ if (dest.isEmpty())
+ return;
// Check whether target file has an extension.
// If not, ask whether extension should be added or not.
if (m_view.export_meta->isChecked()) {
QMap<QString, QString>::const_iterator i = metadata.constBegin();
while (i != metadata.constEnd()) {
- renderArgs.append(QString(" %1=\"%2\"").arg(i.key()).arg(i.value()));
+ renderArgs.append(QString(" %1=%2").arg(i.key()).arg(QString(QUrl::toPercentEncoding(i.value()))));
++i;
}
}
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<int>(m_view.checkTwoPass->isChecked()) + 1);
QString group = m_view.size_list->currentItem()->data(MetaGroupRole).toString();
- QString scriptName;
+ //QString scriptName;
if (scriptExport) {
// Generate script file
QFile file(scriptPath);
renderProps.insert("renderendguide", QString::number(m_view.guide_end->currentIndex()));
renderProps.insert("renderscanning", QString::number(m_view.scanning_list->currentIndex()));
int export_audio = 0;
- if (m_view.export_audio->checkState() == Qt::Checked) export_audio = 2;
- else if (m_view.export_audio->checkState() == Qt::Unchecked) export_audio = 1;
+ if (m_view.export_audio->checkState() == Qt::Checked)
+ export_audio = 2;
+ else if (m_view.export_audio->checkState() == Qt::Unchecked)
+ export_audio = 1;
renderProps.insert("renderexportaudio", QString::number(export_audio));
renderProps.insert("renderrescale", QString::number(m_view.rescale->isChecked()));
renderProps.insert("renderrescalewidth", QString::number(m_view.rescale_width->value()));
}
renderItem->setData(1, ParametersRole, render_process_args);
- if (exportAudio == false) renderItem->setData(1, ExtraInfoRole, i18n("Video without audio track"));
- else renderItem->setData(1, ExtraInfoRole, QString());
+ if (exportAudio == false)
+ renderItem->setData(1, ExtraInfoRole, i18n("Video without audio track"));
+ else
+ renderItem->setData(1, ExtraInfoRole, QString());
m_view.running_jobs->setCurrentItem(renderItem);
m_view.tabWidget->setCurrentIndex(1);
checkRenderStatus();
return count;
}
-void RenderWidget::setProfile(MltVideoProfile profile)
+void RenderWidget::setProfile(const MltVideoProfile &profile)
{
m_view.scanning_list->setCurrentIndex(0);
m_view.rescale_width->setValue(KdenliveSettings::defaultrescalewidth());
}
}
-void RenderWidget::refreshCategory()
+
+
+void RenderWidget::refreshCategory(const QString &group, const QString &profile)
{
m_view.format_list->blockSignals(true);
m_view.format_list->clear();
QListWidgetItem *sizeItem;
-
+
QString destination;
if (m_view.destination_list->currentIndex() > 0)
destination = m_view.destination_list->itemData(m_view.destination_list->currentIndex()).toString();
-
if (destination == "dvd") {
m_view.open_dvd->setVisible(true);
m_view.create_chapter->setVisible(true);
m_view.open_browser->setVisible(false);
// hide groups that are not in the correct destination
- for (int i = 0; i < m_renderCategory.count(); i++) {
+ for (int i = 0; i < m_renderCategory.count(); ++i) {
sizeItem = m_renderCategory.at(i);
if (sizeItem->data(MetaGroupRole).toString() == destination) {
m_view.format_list->addItem(sizeItem->clone());
}
}
- // activate first visible item
+ // activate requested item or first visible
+ QList<QListWidgetItem *> child;
+ if (!group.isEmpty()) child = m_view.format_list->findItems(group, Qt::MatchExactly);
+ if (!child.isEmpty()) {
+ m_view.format_list->setCurrentItem(child.at(0));
+ child.clear();
+ } else m_view.format_list->setCurrentRow(0);
QListWidgetItem * item = m_view.format_list->currentItem();
- if (!item) {
- m_view.format_list->setCurrentRow(0);
- item = m_view.format_list->currentItem();
- }
+ m_view.format_list->blockSignals(false);
if (!item) {
m_view.format_list->setEnabled(false);
m_view.format_list->clear();
m_view.format_list->setVisible(true);
else
m_view.format_list->setVisible(false);
- refreshView();
+
+ refreshView(profile);
}
-void RenderWidget::refreshView()
+void RenderWidget::refreshView(const QString &profile)
{
if (!m_view.format_list->currentItem()) return;
m_view.size_list->blockSignals(true);
const QColor disabledbg = scheme.background(KColorScheme::NegativeBackground).color();
double project_framerate = (double) m_profile.frame_rate_num / m_profile.frame_rate_den;
- for (int i = 0; i < m_renderItems.count(); i++) {
+ for (int i = 0; i < m_renderItems.count(); ++i) {
sizeItem = m_renderItems.at(i);
QListWidgetItem *dupItem = NULL;
if ((sizeItem->data(GroupRole).toString() == group || sizeItem->data(GroupRole).toString().isEmpty()) && sizeItem->data(MetaGroupRole).toString() == destination) {
}
}
}
- focusFirstVisibleItem();
+ focusFirstVisibleItem(profile);
m_view.size_list->blockSignals(false);
- m_view.format_list->blockSignals(false);
if (m_view.size_list->count() > 0) {
refreshParams();
}
}
}
-KUrl RenderWidget::filenameWithExtension(KUrl url, QString extension)
+KUrl RenderWidget::filenameWithExtension(KUrl url, const QString &extension)
{
if (url.isEmpty()) url = KUrl(m_projectFolder);
QString directory = url.directory(KUrl::AppendTrailingSlash | KUrl::ObeyTrailingSlash);
// Format not available (e.g. codec not installed); Disable start button
QListWidgetItem *item = m_view.size_list->currentItem();
if (!item || item->isHidden()) {
- if (!item) errorMessage(i18n("No matching profile"));
+ if (!item)
+ errorMessage(i18n("No matching profile"));
m_view.advanced_params->clear();
m_view.buttonRender->setEnabled(false);
m_view.buttonGenerateScript->setEnabled(false);
parseProfiles();
}
-void RenderWidget::parseProfiles(QString meta, QString group, QString profile)
+void RenderWidget::parseProfiles(const QString &meta, const QString &group, const QString &profile)
{
- m_view.size_list->blockSignals(true);
- m_view.format_list->blockSignals(true);
- m_view.size_list->clear();
- m_view.format_list->clear();
+ m_view.destination_list->blockSignals(true);
m_view.destination_list->clear();
qDeleteAll(m_renderItems);
qDeleteAll(m_renderCategory);
parseFile(exportFolder + filename, true);
if (QFile::exists(exportFolder + "customprofiles.xml")) parseFile(exportFolder + "customprofiles.xml", true);
- if (!meta.isEmpty()) {
- m_view.destination_list->blockSignals(true);
- m_view.destination_list->setCurrentIndex(m_view.destination_list->findData(meta));
- m_view.destination_list->blockSignals(false);
- }
- refreshCategory();
- QList<QListWidgetItem *> child;
- if (!group.isEmpty()) child = m_view.format_list->findItems(group, Qt::MatchExactly);
- if (!child.isEmpty()) {
- for (int i = 0; i < child.count(); i++) {
- if (child.at(i)->data(MetaGroupRole).toString() == meta) {
- m_view.format_list->setCurrentItem(child.at(i));
- break;
- }
- }
- }
- child.clear();
- m_view.size_list->blockSignals(false);
- m_view.format_list->blockSignals(false);
- if (!profile.isEmpty()) child = m_view.size_list->findItems(profile, Qt::MatchExactly);
- if (!child.isEmpty()) m_view.size_list->setCurrentItem(child.at(0));
+ int categoryIndex = m_view.destination_list->findData(meta);
+ if (categoryIndex == -1) categoryIndex = 0;
+ m_view.destination_list->setCurrentIndex(categoryIndex);
+ m_view.destination_list->blockSignals(false);
+ refreshCategory(group, profile);
}
-void RenderWidget::parseFile(QString exportFile, bool editable)
+void RenderWidget::parseFile(const QString &exportFile, bool editable)
{
kDebug() << "// Parsing file: " << exportFile;
kDebug() << "------------------------------";
newprofiles.setAttribute("version", 1);
newdoc.appendChild(newprofiles);
QDomNodeList profilelist = doc.elementsByTagName("profile");
- for (int i = 0; i < profilelist.count(); i++) {
+ for (int i = 0; i < profilelist.count(); ++i) {
QString category = i18nc("Category Name", "Custom");
QString extension;
QDomNode parent = profilelist.at(i).parentNode();
QString prof_extension = profile.attribute("extension");
if (!prof_extension.isEmpty()) extension = prof_extension;
bool exists = false;
- for (int j = 0; j < m_renderCategory.count(); j++) {
+ for (int j = 0; j < m_renderCategory.count(); ++j) {
if (m_renderCategory.at(j)->text() == category && m_renderCategory.at(j)->data(MetaGroupRole) == dest) {
exists = true;
break;
// allowing to override default profiles
- for (int j = 0; j < m_renderItems.count(); j++) {
+ for (int j = 0; j < m_renderItems.count(); ++j) {
if (m_renderItems.at(j)->text() == profileName && m_renderItems.at(j)->data(MetaGroupRole) == dest) {
QListWidgetItem *duplicate = m_renderItems.takeAt(j);
delete duplicate;
extension = documentElement.attribute("extension", QString());
renderer = documentElement.attribute("renderer", QString());
bool exists = false;
- for (int j = 0; j < m_renderCategory.count(); j++) {
+ for (int j = 0; j < m_renderCategory.count(); ++j) {
if (m_renderCategory.at(j)->text() == groupName && m_renderCategory.at(j)->data(MetaGroupRole) == metagroupId) {
exists = true;
break;
item->setData(AudioBitratesRole, audioBitrates.split(',', QString::SkipEmptyParts));
item->setData(DefaultAudioBitrateRole, defaultAudioBitrate);
if (profileElement.hasAttribute("url")) item->setData(ExtraRole, profileElement.attribute("url"));
- if (editable) item->setData(EditableRole, exportFile);
+ //if (editable) item->setData(EditableRole, exportFile);
m_renderItems.append(item);
n = n.nextSibling();
}
- i++;
+ ++i;
}
}
{
RenderJobItem *item;
QList<QTreeWidgetItem *> existing = m_view.running_jobs->findItems(dest, Qt::MatchExactly, 1);
- if (!existing.isEmpty()) item = static_cast<RenderJobItem*> (existing.at(0));
- else {
+ if (!existing.isEmpty()) {
+ item = static_cast<RenderJobItem*> (existing.at(0));
+ } else {
item = new RenderJobItem(m_view.running_jobs, QStringList() << QString() << dest);
if (progress == 0) {
item->setStatus(WAITINGJOB);
}
m_view.abort_job->setEnabled(activate);
/*
- for (int i = 0; i < m_view.running_jobs->topLevelItemCount(); i++) {
+ for (int i = 0; i < m_view.running_jobs->topLevelItemCount(); ++i) {
current = static_cast<RenderJobItem*>(m_view.running_jobs->topLevelItem(i));
if (current == static_cast<RenderJobItem*> (m_view.running_jobs->currentItem())) {
current->setSizeHint(1, QSize(m_view.running_jobs->columnWidth(1), fontMetrics().height() * 3));
void RenderWidget::slotCheckScript()
{
QTreeWidgetItem *current = m_view.scripts_list->currentItem();
- if (current == NULL) return;
+ if (current == NULL)
+ return;
m_view.start_script->setEnabled(current->data(0, Qt::UserRole).toString().isEmpty());
m_view.delete_script->setEnabled(true);
- for (int i = 0; i < m_view.scripts_list->topLevelItemCount(); i++) {
+ for (int i = 0; i < m_view.scripts_list->topLevelItemCount(); ++i) {
current = m_view.scripts_list->topLevelItem(i);
if (current == m_view.scripts_list->currentItem()) {
current->setSizeHint(1, QSize(m_view.scripts_list->columnWidth(1), fontMetrics().height() * 3));
m_view.error_box->setVisible(false);
}
-void RenderWidget::setRenderProfile(QMap <QString, QString> props)
+void RenderWidget::setRenderProfile(const QMap<QString, QString> &props)
{
- m_view.destination_list->blockSignals(true);
- m_view.format_list->blockSignals(true);
m_view.scanning_list->setCurrentIndex(props.value("renderscanning").toInt());
int exportAudio = props.value("renderexportaudio").toInt();
switch (exportAudio) {
slotUpdateGuideBox();
QString url = props.value("renderurl");
- if (!url.isEmpty()) m_view.out_file->setUrl(KUrl(url));
+ if (!url.isEmpty())
+ m_view.out_file->setUrl(KUrl(url));
// set destination
- for (int i = 0; i < m_view.destination_list->count(); i++) {
- if (m_view.destination_list->itemData(i, Qt::UserRole) == props.value("renderdestination")) {
- m_view.destination_list->setCurrentIndex(i);
- break;
- }
- }
- refreshCategory();
-
- // set category
- QString group = props.value("rendercategory");
- if (!group.isEmpty()) {
- QList<QListWidgetItem *> childs = m_view.format_list->findItems(group, Qt::MatchExactly);
- if (!childs.isEmpty()) {
- m_view.format_list->setCurrentItem(childs.at(0));
- m_view.format_list->scrollToItem(childs.at(0));
- }
- refreshView();
- }
-
- // set profile
- QList<QListWidgetItem *> childs = m_view.size_list->findItems(props.value("renderprofile"), Qt::MatchExactly);
- if (!childs.isEmpty()) {
- m_view.size_list->setCurrentItem(childs.at(0));
- m_view.size_list->scrollToItem(childs.at(0));
- }
- //refreshView();
+ int categoryIndex = m_view.destination_list->findData(props.value("renderdestination"));
+ if (categoryIndex == -1) categoryIndex = 0;
+ m_view.destination_list->blockSignals(true);
+ m_view.destination_list->setCurrentIndex(categoryIndex);
m_view.destination_list->blockSignals(false);
- m_view.format_list->blockSignals(false);
-
+
+ // Clear previous error messages
+ refreshCategory(props.value("rendercategory"), props.value("renderprofile"));
}
bool RenderWidget::startWaitingRenderJobs()
if (projectName.isEmpty()) fileName = i18n("script");
else fileName = projectName.fileName().section('.', 0, -2) + "_";
while (path.isEmpty() || QFile::exists(path)) {
- ix++;
+ ++ix;
path = scriptsFolder + prefix + fileName + QString::number(ix).rightJustified(3, '0', false) + ".sh";
}
return path;
void RenderWidget::errorMessage(const QString &message)
{
- show();
if (!message.isEmpty()) {
#if KDE_IS_VERSION(4,7,0)
m_infoMessage->setMessageType(KMessageWidget::Warning);
m_infoMessage->setText(message);
+#if KDE_IS_VERSION(4,10,0)
m_infoMessage->animatedShow();
+#else
+ // Workaround KDE bug in KMessageWidget
+ QTimer::singleShot(0, m_infoMessage, SLOT(animatedShow()));
+#endif
#else
m_view.errorLabel->setText(message);
m_view.errorBox->setHidden(false);
}
else {
#if KDE_IS_VERSION(4,7,0)
- m_infoMessage->animatedHide();
+ if (m_view.tabWidget->currentIndex() == 0 && m_infoMessage->isVisible()) {
+#if KDE_IS_VERSION(4,10,0)
+ m_infoMessage->animatedHide();
#else
- m_view.errorBox->setHidden(true);
- m_view.errorLabel->setText(QString());
+ QTimer::singleShot(0, m_infoMessage, SLOT(animatedHide()));
+#endif
+ } else {
+ // Seems like animated hide does not work when page is not visible
+ m_infoMessage->hide();
+ }
+#else
+ m_view.errorBox->setHidden(true);
+ m_view.errorLabel->setText(QString());
#endif
}
void RenderWidget::setRescaleEnabled(bool enable)
{
- for (int i = 0; i < m_view.rescale_box->layout()->count(); i++) {
- if (m_view.rescale_box->itemAt(i)->widget()) m_view.rescale_box->itemAt(i)->widget()->setEnabled(enable);
+ for (int i = 0; i < m_view.rescale_box->layout()->count(); ++i) {
+ if (m_view.rescale_box->itemAt(i)->widget())
+ m_view.rescale_box->itemAt(i)->widget()->setEnabled(enable);
}
}
else QDialog::keyPressEvent(e);
}
+
+#include "renderwidget.moc"