]> git.sesse.net Git - kdenlive/blobdiff - src/projectlist.cpp
Round corners in project tree thumbnails
[kdenlive] / src / projectlist.cpp
index 0c185866cfe29d53d92de6fbf9936acfb3629889..069a58539a7c1e24e41139e63327d8ffe090efcb 100644 (file)
@@ -310,8 +310,9 @@ ProjectList::ProjectList(QWidget *parent) :
     connect(m_listView, SIGNAL(projectModified()), this, SIGNAL(projectModified()));
     connect(m_listView, SIGNAL(itemSelectionChanged()), this, SLOT(slotClipSelected()));
     connect(m_listView, SIGNAL(focusMonitor()), this, SIGNAL(raiseClipMonitor()));
-    connect(m_listView, SIGNAL(pauseMonitor()), this, SLOT(slotPauseMonitor()));
+    connect(m_listView, SIGNAL(pauseMonitor()), this, SIGNAL(pauseMonitor()));
     connect(m_listView, SIGNAL(requestMenu(const QPoint &, QTreeWidgetItem *)), this, SLOT(slotContextMenu(const QPoint &, QTreeWidgetItem *)));
+    connect(m_listView, SIGNAL(addClip()), this, SIGNAL(pauseMonitor()));
     connect(m_listView, SIGNAL(addClip()), this, SLOT(slotAddClip()));
     connect(m_listView, SIGNAL(addClip(const QList <QUrl>, const QString &, const QString &)), this, SLOT(slotAddClip(const QList <QUrl>, const QString &, const QString &)));
     connect(this, SIGNAL(addClip(const QString, const QString &, const QString &)), this, SLOT(slotAddClip(const QString, const QString &, const QString &)));
@@ -1619,7 +1620,7 @@ QString ProjectList::getExtensions()
     QStringList mimeTypes = QStringList() << "application/x-kdenlive" << "application/x-kdenlivetitle" << "video/mlt-playlist" << "text/plain";
 
     // Video mimes
-    mimeTypes <<  "video/x-flv" << "application/vnd.rn-realmedia" << "video/x-dv" << "video/dv" << "video/x-msvideo" << "video/x-matroska" << "video/mpeg" << "video/ogg" << "video/x-ms-wmv" << "video/mp4" << "video/quicktime" << "video/webm" << "video/3gpp";
+    mimeTypes <<  "video/x-flv" << "application/vnd.rn-realmedia" << "video/x-dv" << "video/dv" << "video/x-msvideo" << "video/x-matroska" << "video/mpeg" << "video/ogg" << "video/x-ms-wmv" << "video/mp4" << "video/quicktime" << "video/webm" << "video/3gpp" << "video/mp2t";
 
     // Audio mimes
     mimeTypes << "audio/x-flac" << "audio/x-matroska" << "audio/mp4" << "audio/mpeg" << "audio/x-mp3" << "audio/ogg" << "audio/x-wav" << "audio/x-aiff" << "audio/aiff" << "application/ogg" << "application/mxf" << "application/x-shockwave-flash" << "audio/ac3";
@@ -2315,7 +2316,15 @@ void ProjectList::slotReplyGetImage(const QString &clipId, const QImage &img)
 {
     ProjectItem *item = getItemById(clipId);
     if (item && !img.isNull()) {
-        QPixmap pix = QPixmap::fromImage(img);
+       QPixmap pix(img.width(), img.height());
+       pix.fill(Qt::transparent);
+       QPainter p(&pix);
+       p.setRenderHint(QPainter::Antialiasing, true);
+       QPainterPath path;
+       path.addRoundedRect(0.5, 0.5, pix.width() - 1, pix.height() - 1, 2, 2);
+       p.setClipPath(path);
+       p.drawImage(0, 0, img);
+       p.end();
         processThumbOverlays(item, pix);
         monitorItemEditing(false);
         item->setData(0, Qt::DecorationRole, pix);
@@ -2724,8 +2733,12 @@ void ProjectList::slotCreateProxy(const QString id)
         slotGotProxy(path);
         return;
     }
-
-    ProxyJob *job = new ProxyJob(item->clipType(), id, QStringList() << path << item->clipUrl().path() << item->referencedClip()->producerProperty("_exif_orientation") << m_doc->getDocumentProperty("proxyparams").simplified() << QString::number(m_render->frameRenderWidth()) << QString::number(m_render->renderHeight()));
+    QString sourcePath = item->clipUrl().path();
+    if (item->clipType() == PLAYLIST) {
+       // Special case: playlists use the special 'consumer' producer to support resizing
+       sourcePath.prepend("consumer:");
+    }
+    ProxyJob *job = new ProxyJob(item->clipType(), id, QStringList() << path << sourcePath << item->referencedClip()->producerProperty("_exif_orientation") << m_doc->getDocumentProperty("proxyparams").simplified() << QString::number(m_render->frameRenderWidth()) << QString::number(m_render->renderHeight()));
     if (job->isExclusive() && hasPendingJob(item, job->jobType)) {
         delete job;
         return;
@@ -2760,7 +2773,7 @@ void ProjectList::slotCutClipJob(const QString &id, QPoint zone)
     Ui::CutJobDialog_UI ui;
     ui.setupUi(d);
     ui.extra_params->setVisible(false);
-    ui.add_clip->setChecked(KdenliveSettings::add_clip_cut());
+    ui.add_clip->setChecked(KdenliveSettings::add_new_clip());
     ui.file_url->fileDialog()->setOperationMode(KFileDialog::Saving);
     ui.extra_params->setMaximumHeight(QFontMetrics(font()).lineSpacing() * 5);
     ui.file_url->setUrl(KUrl(dest));
@@ -2793,11 +2806,11 @@ void ProjectList::slotCutClipJob(const QString &id, QPoint zone)
         }
     }
     QString extraParams = ui.extra_params->toPlainText().simplified();
-    KdenliveSettings::setAdd_clip_cut(ui.add_clip->isChecked());
+    KdenliveSettings::setAdd_new_clip(ui.add_clip->isChecked());
     delete d;
 
     QStringList jobParams;
-    jobParams << dest << item->clipUrl().path() << timeIn << timeOut << QString::number(duration) << QString::number(KdenliveSettings::add_clip_cut());
+    jobParams << dest << item->clipUrl().path() << timeIn << timeOut << QString::number(duration) << QString::number(KdenliveSettings::add_new_clip());
     if (!extraParams.isEmpty()) jobParams << extraParams;
     CutClipJob *job = new CutClipJob(item->clipType(), id, jobParams);
     if (job->isExclusive() && hasPendingJob(item, job->jobType)) {
@@ -2841,7 +2854,7 @@ void ProjectList::slotTranscodeClipJob(const QString &condition, QString params,
     ui.extra_params->setVisible(false);
     d->adjustSize();
     ui.button_more->setIcon(KIcon("configure"));
-    ui.add_clip->setChecked(KdenliveSettings::add_clip_cut());
+    ui.add_clip->setChecked(KdenliveSettings::add_new_clip());
     ui.extra_params->setPlainText(params.simplified().section(' ', 0, -2));
     QString mess = desc;
     mess.append(' ' + i18np("(%1 clip)", "(%1 clips)", ids.count()));
@@ -2851,14 +2864,17 @@ void ProjectList::slotTranscodeClipJob(const QString &condition, QString params,
         return;
     }
     params = ui.extra_params->toPlainText().simplified();
-    KdenliveSettings::setAdd_clip_cut(ui.add_clip->isChecked());
-    
+    KdenliveSettings::setAdd_new_clip(ui.add_clip->isChecked());
+    int index = 0;
     foreach(const QString &id, ids) {
         ProjectItem *item = getItemById(id);
         if (!item || !item->referencedClip()) continue;
         QString src = item->clipUrl().path();
         QString dest;
-        if (ids.count() > 1) dest = params.section(' ', -1).replace("%1", src);
+        if (ids.count() > 1) {
+           dest = destinations.at(index);
+           index++;
+       }
         else dest = ui.file_url->url().path();
         QStringList jobParams;
         jobParams << dest << src << QString() << QString();
@@ -2867,7 +2883,7 @@ void ProjectList::slotTranscodeClipJob(const QString &condition, QString params,
         int max = item->clipMaxDuration();
         QString duration = QString::number(max);
         jobParams << duration;
-        jobParams << QString::number(KdenliveSettings::add_clip_cut());
+        jobParams << QString::number(KdenliveSettings::add_new_clip());
         jobParams << params;
         CutClipJob *job = new CutClipJob(item->clipType(), id, jobParams);
         if (job->isExclusive() && hasPendingJob(item, job->jobType)) {
@@ -3459,15 +3475,17 @@ void ProjectList::processClipJob(QStringList ids, const QString&destination, boo
     foreach(const QString&id, ids) {
         ProjectItem *item = getItemById(id);
         if (!item) continue;
+       QStringList jobArgs;
+       jobArgs << preParams;
         if (ids.count() == 1) {
-            consumer += ':' + destination;
+            jobArgs << consumer + ':' + destination;
         }
         else {
-            consumer += ':' + destination + item->clipUrl().fileName() + ".mlt";
+            jobArgs << consumer + ':' + destination + item->clipUrl().fileName() + ".mlt";
         }
-        preParams << consumer << jobParams;
+        jobArgs << jobParams;
         
-        MeltJob *job = new MeltJob(item->clipType(), id, preParams);
+        MeltJob *job = new MeltJob(item->clipType(), id, jobArgs);
         if (autoAdd) {
             job->setAddClipToProject(true);
             kDebug()<<"// ADDING TRUE";