]> git.sesse.net Git - kdenlive/blobdiff - src/projectlist.cpp
Rewrote the handling of timeline in QGraphicsView. Now we use the built in zoom featu...
[kdenlive] / src / projectlist.cpp
index d11deaf51639082e1d3cb97c83238cf34cb5722e..982318a36c3c587953e0a9fb4817bf56fe330c77 100644 (file)
@@ -143,11 +143,6 @@ void ProjectList::setRenderer(Render *projectRender) {
 void ProjectList::slotClipSelected() {
     ProjectItem *item = static_cast <ProjectItem*>(listView->currentItem());
     if (item && !item->isGroup()) {
-        if (item == m_selectedItem) {
-            // if user clicked on the active clip item, just focus monitor, don't update it.
-            emit clipSelected(NULL);
-            return;
-        }
         m_selectedItem = item;
         emit clipSelected(item->referencedClip());
     }
@@ -311,10 +306,10 @@ void ProjectList::slotAddClip(QUrl givenUrl, QString group) {
     if (!m_commandStack) kDebug() << "!!!!!!!!!!!!!!!!  NO CMD STK";
     KUrl::List list;
     if (givenUrl.isEmpty()) {
-        list = KFileDialog::getOpenUrls(KUrl("kfiledialog:///clipfolder"), "application/vnd.kde.kdenlive application/vnd.westley.scenelist application/flv application/vnd.rn-realmedia video/x-dv video/x-msvideo video/mpeg video/x-ms-wmv audio/mpeg audio/x-mp3 audio/x-wav application/ogg video/mp4 video/quicktime image/gif image/jpeg image/png image/x-bmp image/svg+xml image/tiff image/x-xcf-gimp image/x-vnd.adobe.photoshop image/x-pcx image/x-exr\n*.m2t *.mts|HDV video\n*.dv|DV video");
+        list = KFileDialog::getOpenUrls(KUrl("kfiledialog:///clipfolder"), "application/vnd.kde.kdenlive application/vnd.westley.scenelist application/flv application/vnd.rn-realmedia video/x-dv video/dv video/x-msvideo video/mpeg video/x-ms-wmv audio/mpeg audio/x-mp3 audio/x-wav application/ogg video/mp4 video/quicktime image/gif image/jpeg image/png image/x-bmp image/svg+xml image/tiff image/x-xcf-gimp image/x-vnd.adobe.photoshop image/x-pcx image/x-exr", this);
     } else list.append(givenUrl);
     if (list.isEmpty()) return;
-    KUrl::List::Iterator it;
+
     int groupId = -1;
     if (group.isEmpty()) {
         ProjectItem *item = static_cast <ProjectItem*>(listView->currentItem());
@@ -329,11 +324,24 @@ void ProjectList::slotAddClip(QUrl givenUrl, QString group) {
             groupId = item->clipId();
         }
     }
-    for (it = list.begin(); it != list.end(); it++) {
-        m_doc->slotAddClipFile(*it, group, groupId);
+    foreach(const KUrl file, list) {
+        if (KIO::NetAccess::exists(file, KIO::NetAccess::SourceSide, NULL))
+            m_doc->slotAddClipFile(file, group, groupId);
     }
 }
 
+void ProjectList::slotRemoveInvalidClip(int id) {
+    ProjectItem *item = getItemById(id);
+    if (item) {
+        QString path = item->referencedClip()->fileURL().path();
+        if (!path.isEmpty()) KMessageBox::sorry(this, i18n("<qt>Clip <b>%1</b><br>is invalid, will be removed from project.", path));
+
+    }
+    QList <int> ids;
+    ids << id;
+    m_doc->deleteProjectClip(ids);
+}
+
 void ProjectList::slotAddColorClip() {
     if (!m_commandStack) kDebug() << "!!!!!!!!!!!!!!!!  NO CMD STK";
     QDialog *dia = new QDialog(this);
@@ -448,7 +456,7 @@ void ProjectList::slotRefreshClipThumbnail(ProjectItem *item) {
     if (item) {
         int height = 50;
         int width = (int)(height  * m_render->dar());
-        QPixmap pix = KThumb::getImage(item->toXml(), item->referencedClip()->getClipThumbFrame(), width, height);
+        QPixmap pix = item->referencedClip()->thumbProducer()->extractImage(item->referencedClip()->getClipThumbFrame(), width, height);
         item->setIcon(0, pix);
     }
 }