]> git.sesse.net Git - kdenlive/blobdiff - src/projectlist.cpp
Fix audio thumbs not displayed on project opening and abortion if audio thumbs creation
[kdenlive] / src / projectlist.cpp
index 6f698385dc1841b1b334e4817a080ac028801811..6fcbd91a9fe0887418245ede1526ca611f7a967d 100644 (file)
@@ -173,7 +173,7 @@ void ProjectList::setupMenu(QMenu *addMenu, QAction *defaultAction)
     m_menu->addActions(addMenu->actions());
 }
 
-void ProjectList::setupGeneratorMenu(QMenu *addMenu, QMenu *transcodeMenu)
+void ProjectList::setupGeneratorMenu(QMenu *addMenu, QMenu *transcodeMenu, QMenu *inTimelineMenu)
 {
     if (!addMenu) return;
     QMenu *menu = m_addButton->menu();
@@ -186,6 +186,8 @@ void ProjectList::setupGeneratorMenu(QMenu *addMenu, QMenu *transcodeMenu)
     if (transcodeMenu->isEmpty()) transcodeMenu->setEnabled(false);
     m_transcodeAction = transcodeMenu;
     m_menu->addAction(m_reloadAction);
+    m_menu->addMenu(inTimelineMenu);
+    inTimelineMenu->setEnabled(false);
     m_menu->addAction(m_editAction);
     m_menu->addAction(m_openAction);
     m_menu->addAction(m_deleteAction);
@@ -369,7 +371,13 @@ void ProjectList::slotReloadClip(const QString &id)
     else selected.append(getItemById(id));
     ProjectItem *item;
     for (int i = 0; i < selected.count(); i++) {
-        if (selected.at(i)->type() != PROJECTCLIPTYPE) continue;
+        if (selected.at(i)->type() != PROJECTCLIPTYPE) {
+            if (selected.at(i)->type() == PROJECTFOLDERTYPE) {
+                for (int j = 0; j < selected.at(i)->childCount(); j++)
+                    selected.append(selected.at(i)->child(j));
+            }
+            continue;
+        }
         item = static_cast <ProjectItem *>(selected.at(i));
         if (item) {
             if (item->clipType() == TEXT) {
@@ -480,6 +488,8 @@ void ProjectList::slotClipSelected()
             } else m_openAction->setEnabled(false);
             // Display relevant transcoding actions only
             adjustTranscodeActions(clip);
+            // Display uses in timeline
+            emit findInTimeline(clip->clipId());
         }
     } else {
         emit clipSelected(NULL);
@@ -493,7 +503,7 @@ void ProjectList::slotClipSelected()
 
 void ProjectList::adjustTranscodeActions(ProjectItem *clip) const
 {
-    if (clip == NULL || clip->type() != PROJECTCLIPTYPE || clip->clipType() == COLOR || clip->clipType() == TEXT || clip->clipType() == PLAYLIST) {
+    if (clip == NULL || clip->type() != PROJECTCLIPTYPE || clip->clipType() == COLOR || clip->clipType() == TEXT || clip->clipType() == PLAYLIST || clip->clipType() == SLIDESHOW || clip->clipType() == IMAGE) {
         m_transcodeAction->setEnabled(false);
         return;
     }
@@ -637,6 +647,8 @@ void ProjectList::slotContextMenu(const QPoint &pos, QTreeWidgetItem *item)
             clip = static_cast <ProjectItem*>(item);
             // Display relevant transcoding actions only
             adjustTranscodeActions(clip);
+            // Display uses in timeline
+            emit findInTimeline(clip->clipId());
         } else m_transcodeAction->setEnabled(false);
         if (clip && clip->clipType() == IMAGE && !KdenliveSettings::defaultimageapp().isEmpty()) {
             m_openAction->setIcon(KIcon(KdenliveSettings::defaultimageapp()));
@@ -734,8 +746,12 @@ void ProjectList::slotDeleteClip(const QString &clipId)
     delete item;
     m_doc->clipManager()->deleteClip(clipId);
     m_listView->blockSignals(false);
-    if (newSelectedItem) m_listView->setCurrentItem(newSelectedItem);
-    else updateButtons();
+    if (newSelectedItem) {
+        m_listView->setCurrentItem(newSelectedItem);
+    } else {
+        updateButtons();
+        emit clipSelected(NULL);
+    }
 }
 
 
@@ -779,12 +795,11 @@ void ProjectList::slotAddFolder(const QString foldername, const QString &clipId,
                 }
             }
         } else {
-            QStringList text;
-            text << foldername;
             m_listView->blockSignals(true);
-            m_listView->setCurrentItem(new FolderProjectItem(m_listView, text, clipId));
+            m_listView->setCurrentItem(new FolderProjectItem(m_listView, QStringList() << foldername, clipId));
             m_doc->clipManager()->addFolder(clipId, foldername);
             m_listView->blockSignals(false);
+            m_listView->editItem(m_listView->currentItem(), 0);
         }
         updateButtons();
     }
@@ -815,9 +830,9 @@ void ProjectList::slotAddClip(DocClipBase *clip, bool getProperties)
         QDomElement e = clip->toXML().cloneNode().toElement();
         e.removeAttribute("file_hash");
         m_infoQueue.insert(clip->getId(), e);
-        clip->askForAudioThumbs();
         //m_render->getFileProperties(clip->toXML(), clip->getId(), true);
     }
+    clip->askForAudioThumbs();
     const QString parent = clip->getProperty("groupid");
     ProjectItem *item = NULL;
     if (!parent.isEmpty()) {
@@ -1037,7 +1052,8 @@ void ProjectList::slotAddColorClip()
     dia_ui.setupUi(dia);
     dia->setWindowTitle(i18n("Color Clip"));
     dia_ui.clip_name->setText(i18n("Color Clip"));
-    dia_ui.clip_duration->setInputMask(m_timecode.inputMask());
+    dia_ui.clip_duration->setInputMask("");
+    dia_ui.clip_duration->setValidator(m_timecode.validator());
     dia_ui.clip_duration->setText(m_timecode.reformatSeparators(KdenliveSettings::color_duration()));
     if (dia->exec() == QDialog::Accepted) {
         QString color = dia_ui.clip_color->color().name();
@@ -1088,6 +1104,8 @@ void ProjectList::slotAddTitleTemplateClip()
     for (int i = 0; i < templateFiles.size(); ++i) {
         dia_ui.template_list->comboBox()->addItem(templateFiles.at(i), path + templateFiles.at(i));
     }
+    if (!templateFiles.isEmpty())
+        dia_ui.buttonBox->button(QDialogButtonBox::Ok)->setFocus();
     dia_ui.template_list->fileDialog()->setFilter("*.kdenlivetitle");
     //warning: setting base directory doesn't work??
     KUrl startDir(path);
@@ -1513,6 +1531,7 @@ void ProjectList::addClipCut(const QString &id, int in, int out, const QString d
         SubProjectItem *sub = new SubProjectItem(clip, in, out, desc);
         if (newItem && desc.isEmpty() && !m_listView->isColumnHidden(1)) {
             if (!clip->isExpanded()) clip->setExpanded(true);
+            m_listView->scrollToItem(sub);
             m_listView->editItem(sub, 1);
         }
         QPixmap p = clip->referencedClip()->thumbProducer()->extractImage(in, (int)(sub->sizeHint(0).height()  * m_render->dar()), sub->sizeHint(0).height() - 2);