#include "audioscopes/spectrogram.h"
#include "archivewidget.h"
#include "databackup/backupwidget.h"
+#include "utils/freesound.h"
#include <KApplication>
m_effectStack = new EffectStackView(m_projectMonitor);
m_effectStackDock->setWidget(m_effectStack);
addDockWidget(Qt::TopDockWidgetArea, m_effectStackDock);
+ connect(m_effectStack, SIGNAL(startFilterJob(ItemInfo, const QString&,const QString&,const QString&,const QString&,const QString&,const QString&,const QString&)), m_projectList, SLOT(slotStartFilterJob(ItemInfo, const QString&,const QString&,const QString&,const QString&,const QString&,const QString&,const QString&)));
m_transitionConfigDock = new QDockWidget(i18n("Transition"), this);
m_transitionConfigDock->setObjectName("transition");
clipInTimeline->setIcon(KIcon("go-jump"));
QHash<QString,QMenu*> menus;
menus.insert("addMenu",static_cast<QMenu*>(factory()->container("generators", this)));
+ menus.insert("extractAudioMenu",static_cast<QMenu*>(factory()->container("extract_audio", this)));
menus.insert("transcodeMenu",static_cast<QMenu*>(factory()->container("transcoders", this)));
menus.insert("stabilizeMenu",static_cast<QMenu*>(factory()->container("stabilize", this)));
menus.insert("inTimelineMenu",clipInTimeline);
QAction *addFolderButton = new KAction(KIcon("folder-new"), i18n("Create Folder"), this);
collection.addAction("add_folder", addFolderButton);
connect(addFolderButton , SIGNAL(triggered()), m_projectList, SLOT(slotAddFolder()));
+
+ QAction *downloadAudio = new KAction(KIcon("download"), i18n("Download Audio"), this);
+ collection.addAction("download_audio", downloadAudio);
+ connect(downloadAudio , SIGNAL(triggered()), this, SLOT(slotDownloadAudio()));
QAction *clipProperties = new KAction(KIcon("document-edit"), i18n("Clip Properties"), this);
collection.addAction("clip_properties", clipProperties);
disconnect(m_activeTimeline->projectView(), SIGNAL(playMonitor()), m_projectMonitor, SLOT(slotPlay()));
disconnect(m_activeTimeline->projectView(), SIGNAL(displayMessage(const QString&, MessageType)), m_messageLabel, SLOT(setMessage(const QString&, MessageType)));
disconnect(m_activeTimeline->projectView(), SIGNAL(showClipFrame(DocClipBase *, QPoint, bool, const int)), m_clipMonitor, SLOT(slotSetClipProducer(DocClipBase *, QPoint, bool, const int)));
+ disconnect(m_projectList, SIGNAL(gotFilterJobResults(const QString &, int, int, const QString &, stringMap)), m_activeTimeline->projectView(), SLOT(slotGotFilterJobResults(const QString &, int, int, const QString &, stringMap)));
+
disconnect(m_activeTimeline, SIGNAL(cursorMoved()), m_projectMonitor, SLOT(activateMonitor()));
disconnect(m_activeTimeline, SIGNAL(insertTrack(int)), this, SLOT(slotInsertTrack(int)));
disconnect(m_activeTimeline, SIGNAL(deleteTrack(int)), this, SLOT(slotDeleteTrack(int)));
connect(trackView->projectView(), SIGNAL(clipItemSelected(ClipItem*, int, bool)), m_projectMonitor, SLOT(slotSetSelectedClip(ClipItem*)));
connect(trackView->projectView(), SIGNAL(transitionItemSelected(Transition*, int, QPoint, bool)), m_projectMonitor, SLOT(slotSetSelectedClip(Transition*)));
+
+ connect(m_projectList, SIGNAL(gotFilterJobResults(const QString &, int, int, const QString &, stringMap)), trackView->projectView(), SLOT(slotGotFilterJobResults(const QString &, int, int, const QString &, stringMap)));
connect(m_effectStack, SIGNAL(updateEffect(ClipItem*, int, QDomElement, QDomElement, int)), trackView->projectView(), SLOT(slotUpdateClipEffect(ClipItem*, int, QDomElement, QDomElement, int)));
connect(m_effectStack, SIGNAL(updateClipRegion(ClipItem*, int, QString)), trackView->projectView(), SLOT(slotUpdateClipRegion(ClipItem*, int, QString)));
// Update list of transcoding profiles
loadTranscoders();
- loadStabilize();
+ loadStabilize();
#ifdef USE_JOGSHUTTLE
activateShuttleDevice();
#endif
m_activeTimeline->projectView()->editItemDuration();
}
-void MainWindow::slotAddProjectClip(KUrl url)
+void MainWindow::slotAddProjectClip(KUrl url, const QString &comment)
{
if (m_activeDocument)
- m_activeDocument->slotAddClipFile(url, QString());
+ m_activeDocument->slotAddClipFile(url, QString(), QString(), comment);
}
void MainWindow::slotAddProjectClipList(KUrl::List urls)
{
QMenu *transMenu = static_cast<QMenu*>(factory()->container("transcoders", this));
transMenu->clear();
+
+ QMenu *extractAudioMenu = static_cast<QMenu*>(factory()->container("extract_audio", this));
+ extractAudioMenu->clear();
KSharedConfigPtr config = KSharedConfig::openConfig("kdenlivetranscodingrc");
KConfigGroup transConfig(config, "Transcoding");
QMapIterator<QString, QString> i(profiles);
while (i.hasNext()) {
i.next();
- QStringList data = i.value().split(";", QString::SkipEmptyParts);
- QAction *a = transMenu->addAction(i.key());
+ QStringList data = i.value().split(";");
+ QAction *a;
+ // separate audio transcoding in a separate menu
+ if (data.count() > 2 && data.at(2) == "audio") {
+ a = extractAudioMenu->addAction(i.key());
+ }
+ else {
+ a = transMenu->addAction(i.key());
+ }
a->setData(data);
- if (data.count() > 1)
- a->setToolTip(data.at(1));
+ if (data.count() > 1) a->setToolTip(data.at(1));
connect(a, SIGNAL(triggered()), this, SLOT(slotTranscode()));
}
}
void MainWindow::slotStabilize(KUrl::List urls)
{
- QString condition,filtername;
+ QString condition,filtername;
- if (urls.isEmpty()) {
+ if (urls.isEmpty()) {
QAction *action = qobject_cast<QAction *>(sender());
- if (action){
- filtername=action->data().toString();
- urls = m_projectList->getConditionalUrls(condition);
- }
+ if (action){
+ filtername=action->data().toString();
+ urls = m_projectList->getConditionalUrls(condition);
+ }
}
if (urls.isEmpty()) {
m_messageLabel->setMessage(i18n("No clip to transcode"), ErrorMessage);
QStringList data = action->data().toStringList();
params = data.at(0);
if (data.count() > 1) desc = data.at(1);
- if (data.count() > 2) condition = data.at(2);
- urls << m_projectList->getConditionalUrls(condition);
- urls.removeAll(KUrl());
+ if (data.count() > 3) condition = data.at(3);
+ QStringList ids = m_projectList->getConditionalIds(condition);
+ m_projectList->slotTranscodeClipJob(ids, params, desc);
+ return;
}
if (urls.isEmpty()) {
m_messageLabel->setMessage(i18n("No clip to transcode"), ErrorMessage);
ClipTranscode *d = new ClipTranscode(urls, params, desc);
connect(d, SIGNAL(addClip(KUrl)), this, SLOT(slotAddProjectClip(KUrl)));
d->show();
- //QProcess::startDetached("ffmpeg", parameters);
}
void MainWindow::slotTranscodeClip()
}
+void MainWindow::slotDownloadAudio()
+{
+ QString currentFolder;
+ if (m_activeDocument) currentFolder = m_activeDocument->projectFolder().path();
+ else currentFolder = KdenliveSettings::defaultprojectfolder();
+ FreeSound *d = new FreeSound(currentFolder);
+ connect(d, SIGNAL(addClip(KUrl, const QString &)), this, SLOT(slotAddProjectClip(KUrl, const QString &)));
+ d->show();
+}
+
#include "mainwindow.moc"
#ifdef DEBUG_MAINW