From: Jean-Baptiste Mardelle Date: Sat, 23 Feb 2013 14:41:27 +0000 (+0100) Subject: Fix metadata not properly set for project: http://kdenlive.org/mantis/view.php?id... X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=dd1f644e61be38f990d95336a797dce29df281d2;p=kdenlive Fix metadata not properly set for project: http://kdenlive.org/mantis/view.php?id=2996 --- diff --git a/renderer/kdenlive_render.cpp b/renderer/kdenlive_render.cpp index 6cd04957..5f0240bf 100644 --- a/renderer/kdenlive_render.cpp +++ b/renderer/kdenlive_render.cpp @@ -99,6 +99,14 @@ int main(int argc, char **argv) args.removeAll("pass=1"); doerase = erase; } + + // Decode metadata + for (int i = 0; i < args.count(); i++) { + if (args.at(i).startsWith("meta.attr")) { + QString data = args.at(i); + args.replace(i, data.section('=', 0, 0) + "=\"" + QUrl::fromPercentEncoding(data.section('=', 1).toUtf8()) + "\""); + } + } qDebug() << "//STARTING RENDERING: " << erase << "," << usekuiserver << "," << render << "," << profile << "," << rendermodule << "," << player << "," << src << "," << dest << "," << preargs << "," << args << "," << in << "," << out ; RenderJob *job = new RenderJob(doerase, usekuiserver, pid, render, profile, rendermodule, player, src, dest, preargs, args, in, out); diff --git a/src/projectsettings.cpp b/src/projectsettings.cpp index 6cd03557..27977425 100644 --- a/src/projectsettings.cpp +++ b/src/projectsettings.cpp @@ -135,21 +135,59 @@ ProjectSettings::ProjectSettings(ProjectList *projectlist, QMap setData(0, Qt::UserRole, QString("meta.attr.title.markup")); - if (metadata.contains("meta.attr.title.markup")) item->setText(1, metadata.value("meta.attr.title.markup")); + if (metadata.contains("meta.attr.title.markup")) { + item->setText(1, metadata.value("meta.attr.title.markup")); + metadata.remove("meta.attr.title.markup"); + } item->setFlags(Qt::ItemIsEditable | Qt::ItemIsSelectable | Qt::ItemIsEnabled); item = new QTreeWidgetItem(metadata_list, QStringList() << i18n("Author")); item->setData(0, Qt::UserRole, QString("meta.attr.author.markup")); - if (metadata.contains("meta.attr.author.markup")) item->setText(1, metadata.value("meta.attr.author.markup")); + if (metadata.contains("meta.attr.author.markup")) { + item->setText(1, metadata.value("meta.attr.author.markup")); + metadata.remove("meta.attr.author.markup"); + } + else if (metadata.contains("meta.attr.artist.markup")) { + item->setText(0, i18n("Artist")); + item->setData(0, Qt::UserRole, QString("meta.attr.artist.markup")); + item->setText(1, metadata.value("meta.attr.artist.markup")); + metadata.remove("meta.attr.artist.markup"); + } item->setFlags(Qt::ItemIsEditable | Qt::ItemIsSelectable | Qt::ItemIsEnabled); item = new QTreeWidgetItem(metadata_list, QStringList() << i18n("Copyright")); item->setData(0, Qt::UserRole, QString("meta.attr.copyright.markup")); - if (metadata.contains("meta.attr.copyright.markup")) item->setText(1, metadata.value("meta.attr.copyright.markup")); + if (metadata.contains("meta.attr.copyright.markup")) { + item->setText(1, metadata.value("meta.attr.copyright.markup")); + metadata.remove("meta.attr.copyright.markup"); + } item->setFlags(Qt::ItemIsEditable | Qt::ItemIsSelectable | Qt::ItemIsEnabled); item = new QTreeWidgetItem(metadata_list, QStringList() << i18n("Year")); item->setData(0, Qt::UserRole, QString("meta.attr.year.markup")); - if (metadata.contains("meta.attr.year.markup")) item->setText(1, metadata.value("meta.attr.year.markup")); + if (metadata.contains("meta.attr.year.markup")) { + item->setText(1, metadata.value("meta.attr.year.markup")); + metadata.remove("meta.attr.year.markup"); + } + else if (metadata.contains("meta.attr.date.markup")) { + item->setText(0, i18n("Date")); + item->setData(0, Qt::UserRole, QString("meta.attr.date.markup")); + item->setText(1, metadata.value("meta.attr.date.markup")); + metadata.remove("meta.attr.date.markup"); + } item->setFlags(Qt::ItemIsEditable | Qt::ItemIsSelectable | Qt::ItemIsEnabled); + QMap::const_iterator meta = metadata.constBegin(); + while (meta != metadata.constEnd()) { + item = new QTreeWidgetItem(metadata_list, QStringList() << meta.key().section('.', 2,2)); + item->setData(0, Qt::UserRole, meta.key()); + item->setText(1, meta.value()); + item->setFlags(Qt::ItemIsEditable | Qt::ItemIsSelectable | Qt::ItemIsEnabled); + ++meta; + } + + connect(add_metadata, SIGNAL(clicked()), this, SLOT(slotAddMetadataField())); + connect(delete_metadata, SIGNAL(clicked()), this, SLOT(slotDeleteMetadataField())); + add_metadata->setIcon(KIcon("list-add")); + delete_metadata->setIcon(KIcon("list-remove")); + slotUpdateDisplay(); if (m_projectList != NULL) { slotUpdateFiles(); @@ -575,13 +613,26 @@ const QMap ProjectSettings::metadata() const if (!item->text(1).simplified().isEmpty()) { // Insert metadata entry QString key = item->data(0, Qt::UserRole).toString(); + if (key.isEmpty()) key = "meta.attr." + item->text(0).simplified() + ".markup"; QString value = item->text(1); - metadata.insert(key, value); + if (!key.contains(' ')) metadata.insert(key, value); } } return metadata; } +void ProjectSettings::slotAddMetadataField() +{ + QTreeWidgetItem *item = new QTreeWidgetItem(metadata_list, QStringList() << i18n("field_name")); + item->setFlags(Qt::ItemIsEditable | Qt::ItemIsSelectable | Qt::ItemIsEnabled); +} + +void ProjectSettings::slotDeleteMetadataField() +{ + QTreeWidgetItem *item = metadata_list->currentItem(); + if (item) delete item; +} + #include "projectsettings.moc" diff --git a/src/projectsettings.h b/src/projectsettings.h index 04f5881b..eb8de24d 100644 --- a/src/projectsettings.h +++ b/src/projectsettings.h @@ -63,6 +63,10 @@ private slots: void slotExportToText(); /** @brief Update the displayed proxy parameters when user changes selection. */ void slotUpdateProxyParams(); + /** @brief Insert a new metadata field. */ + void slotAddMetadataField(); + /** @brief Delete current metadata field. */ + void slotDeleteMetadataField(); private: QPushButton *m_buttonOk; diff --git a/src/renderwidget.cpp b/src/renderwidget.cpp index c800c043..9ef29dfa 100644 --- a/src/renderwidget.cpp +++ b/src/renderwidget.cpp @@ -907,7 +907,7 @@ void RenderWidget::slotExport(bool scriptExport, int zoneIn, int zoneOut, const if (m_view.export_meta->isChecked()) { QMap::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; } } diff --git a/src/widgets/projectsettings_ui.ui b/src/widgets/projectsettings_ui.ui index c55ebb35..ba3b49c4 100644 --- a/src/widgets/projectsettings_ui.ui +++ b/src/widgets/projectsettings_ui.ui @@ -6,8 +6,8 @@ 0 0 - 345 - 524 + 364 + 555 @@ -378,6 +378,37 @@ + + + + + + ... + + + + + + + ... + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + +