From 6ad82e5cee925ef09193cec3c0805a54b026adb6 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Sun, 3 Jan 2010 21:39:19 +0000 Subject: [PATCH] Only enable relevant transcoding actions svn path=/trunk/kdenlive/; revision=4199 --- src/projectlist.cpp | 38 ++++++++++++++++++++++++++++++++++---- src/projectlist.h | 1 + 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/src/projectlist.cpp b/src/projectlist.cpp index b61b8ca1..0f40dcc9 100644 --- a/src/projectlist.cpp +++ b/src/projectlist.cpp @@ -390,21 +390,24 @@ void ProjectList::slotClipSelected() if (clip == NULL) kDebug() << "-----------ERROR"; SubProjectItem *sub = static_cast (m_listView->currentItem()); emit clipSelected(clip->referencedClip(), sub->zone()); + m_transcodeAction->setEnabled(false); return; } clip = static_cast (m_listView->currentItem()); - emit clipSelected(clip->referencedClip()); + if (clip) emit clipSelected(clip->referencedClip()); m_editAction->setEnabled(true); m_deleteAction->setEnabled(true); m_reloadAction->setEnabled(true); m_transcodeAction->setEnabled(true); - if (clip->clipType() == IMAGE && !KdenliveSettings::defaultimageapp().isEmpty()) { + if (clip && clip->clipType() == IMAGE && !KdenliveSettings::defaultimageapp().isEmpty()) { m_openAction->setIcon(KIcon(KdenliveSettings::defaultimageapp())); m_openAction->setEnabled(true); - } else if (clip->clipType() == AUDIO && !KdenliveSettings::defaultaudioapp().isEmpty()) { + } else if (clip && clip->clipType() == AUDIO && !KdenliveSettings::defaultaudioapp().isEmpty()) { m_openAction->setIcon(KIcon(KdenliveSettings::defaultaudioapp())); m_openAction->setEnabled(true); } else m_openAction->setEnabled(false); + // Display relevant transcoding actions only + adjustTranscodeActions(clip); } } else { emit clipSelected(NULL); @@ -416,6 +419,27 @@ void ProjectList::slotClipSelected() } } +void ProjectList::adjustTranscodeActions(ProjectItem *clip) const +{ + if (clip == NULL || clip->type() != PROJECTCLIPTYPE || clip->clipType() == COLOR || clip->clipType() == TEXT || clip->clipType() == PLAYLIST) { + m_transcodeAction->setEnabled(false); + return; + } + m_transcodeAction->setEnabled(true); + QList transcodeActions = m_transcodeAction->actions(); + QStringList data; + QString condition; + for (int i = 0; i < transcodeActions.count(); i++) { + data = transcodeActions.at(i)->data().toStringList(); + if (data.count() > 2) { + condition = data.at(2); + if (condition.startsWith("vcodec")) transcodeActions.at(i)->setEnabled(clip->referencedClip()->hasVideoCodec(condition.section("=", 1, 1))); + else if (condition.startsWith("acodec")) transcodeActions.at(i)->setEnabled(clip->referencedClip()->hasVideoCodec(condition.section("=", 1, 1))); + } + } + +} + void ProjectList::slotPauseMonitor() { if (m_render) m_render->pause(); @@ -536,7 +560,12 @@ void ProjectList::slotContextMenu(const QPoint &pos, QTreeWidgetItem *item) ProjectItem *clip = NULL; if (m_listView->currentItem()->type() == PROJECTSUBCLIPTYPE) { clip = static_cast (item->parent()); - } else if (m_listView->currentItem()->type() == PROJECTCLIPTYPE) clip = static_cast (item); + m_transcodeAction->setEnabled(false); + } else if (m_listView->currentItem()->type() == PROJECTCLIPTYPE) { + clip = static_cast (item); + // Display relevant transcoding actions only + adjustTranscodeActions(clip); + } else m_transcodeAction->setEnabled(false); if (clip && clip->clipType() == IMAGE && !KdenliveSettings::defaultimageapp().isEmpty()) { m_openAction->setIcon(KIcon(KdenliveSettings::defaultimageapp())); m_openAction->setEnabled(true); @@ -544,6 +573,7 @@ void ProjectList::slotContextMenu(const QPoint &pos, QTreeWidgetItem *item) m_openAction->setIcon(KIcon(KdenliveSettings::defaultaudioapp())); m_openAction->setEnabled(true); } else m_openAction->setEnabled(false); + } else m_openAction->setEnabled(false); m_menu->popup(pos); } diff --git a/src/projectlist.h b/src/projectlist.h index 2a1a03d5..55ceaafc 100644 --- a/src/projectlist.h +++ b/src/projectlist.h @@ -204,6 +204,7 @@ private: QStringList getGroup() const; void regenerateTemplate(ProjectItem *clip); void editClipSelection(QList list); + void adjustTranscodeActions(ProjectItem *clip) const; private slots: void slotClipSelected(); -- 2.39.2