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());
}
void ProjectList::slotAddClip(QUrl givenUrl, QString group) {
if (!m_commandStack) kDebug() << "!!!!!!!!!!!!!!!! NO CMD STK";
KUrl::List list;
- if (givenUrl.isEmpty())
- list = KFileDialog::getOpenUrls(KUrl(), "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 *.m2t *.mts *.dv 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");
- else list.append(givenUrl);
+ 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/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());
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);
groupId = item->clipId();
}
- m_doc->slotAddSlideshowClipFile(dia->clipName(), dia->selectedPath(), dia->imageCount(), dia->clipDuration(), dia->loop(), group, groupId);
+ m_doc->slotAddSlideshowClipFile(dia->clipName(), dia->selectedPath(), dia->imageCount(), dia->clipDuration(), dia->loop(), dia->fade(), dia->lumaDuration(), dia->lumaFile(), dia->softness(), group, groupId);
}
delete dia;
}
+
void ProjectList::slotAddTitleClip() {
QString group = QString();
int groupId = -1;
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);
}
}
-void ProjectList::slotReplyGetFileProperties(int clipId, const QMap < QString, QString > &properties, const QMap < QString, QString > &metadata) {
+void ProjectList::slotReplyGetFileProperties(int clipId, Mlt::Producer *producer, const QMap < QString, QString > &properties, const QMap < QString, QString > &metadata) {
ProjectItem *item = getItemById(clipId);
if (item) {
item->setProperties(properties, metadata);
+ item->referencedClip()->setProducer(producer);
listView->setCurrentItem(item);
emit receivedClipDuration(clipId, item->clipMaxDuration());
- }
+ } else kDebug() << "//////// COULD NOT FIND CLIP TO UPDATE PRPS...";
}
void ProjectList::slotReplyGetImage(int clipId, int pos, const QPixmap &pix, int w, int h) {