]> git.sesse.net Git - kdenlive/commitdiff
Fix metadata not properly set for project: http://kdenlive.org/mantis/view.php?id...
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 23 Feb 2013 14:41:27 +0000 (15:41 +0100)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sat, 23 Feb 2013 14:41:27 +0000 (15:41 +0100)
renderer/kdenlive_render.cpp
src/projectsettings.cpp
src/projectsettings.h
src/renderwidget.cpp
src/widgets/projectsettings_ui.ui

index 6cd04957bf46c4e31513faa59937086a845454b7..5f0240bff370c1a2e6280d3f54258cf13bb1bd09 100644 (file)
@@ -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);
index 6cd0355741a9d01bbb0ac0954d7ebcd41de3ebd6..27977425ecce1f44d500268c304c6bf94207a3d4 100644 (file)
@@ -135,21 +135,59 @@ ProjectSettings::ProjectSettings(ProjectList *projectlist, QMap <QString, QStrin
     // Metadata list
     QTreeWidgetItem *item = new QTreeWidgetItem(metadata_list, QStringList() << i18n("Title"));
     item->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<QString, QString>::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 <QString, QString> 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"
 
 
index 04f5881b3814dda7129dacf7e8b3644d4bbb35b2..eb8de24da25c2038e98013b831490f8a73f1d4f9 100644 (file)
@@ -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;
index c800c0437164e136bc1e59dfee0f1fabb87e25e9..9ef29dfada2178e8a35252a085ce72b22369dd40 100644 (file)
@@ -907,7 +907,7 @@ void RenderWidget::slotExport(bool scriptExport, int zoneIn, int zoneOut, const
     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;
         }
     }
index c55ebb3589eefb9766cc2df5b49ca1e81d5212e1..ba3b49c4ab7197f4b255c213b50843d2c0e7abe6 100644 (file)
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>345</width>
-    <height>524</height>
+    <width>364</width>
+    <height>555</height>
    </rect>
   </property>
   <property name="windowTitle">
          </column>
         </widget>
        </item>
+       <item row="1" column="0">
+        <layout class="QHBoxLayout" name="horizontalLayout_3">
+         <item>
+          <widget class="QToolButton" name="add_metadata">
+           <property name="text">
+            <string>...</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="delete_metadata">
+           <property name="text">
+            <string>...</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer_3">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+        </layout>
+       </item>
       </layout>
      </widget>
      <widget class="QWidget" name="tab_2">