connect(clip, SIGNAL(abortProxy(const QString)), this, SLOT(slotAbortProxy(const QString)));
if (getProperties) {
m_listView->processLayout();
- m_refreshed = false;
QDomElement e = clip->toXML().cloneNode().toElement();
e.removeAttribute("file_hash");
m_infoQueue.insert(clip->getId(), e);
void ProjectList::requestClipInfo(const QDomElement xml, const QString id)
{
- m_refreshed = false;
m_infoQueue.insert(id, xml);
//if (m_infoQueue.count() == 1 || ) QTimer::singleShot(300, this, SLOT(slotProcessNextClipInQueue()));
}
}
}
-void ProjectList::slotRemoveInvalidProxy(const QString &id)
+void ProjectList::slotRemoveInvalidProxy(const QString &id, bool durationError)
{
ProjectItem *item = getItemById(id);
if (item) {
+ //TODO: use durationError to display correct message to user after 0.8 release
+ if (durationError) kDebug() << "Proxy duration is wrong, try changing transcoding parameters.";
item->setProxyStatus(PROXYCRASHED);
QString path = item->referencedClip()->getProperty("proxy");
KUrl proxyFolder(m_doc->projectFolder().path( KUrl::AddTrailingSlash) + "proxy/");
m_proxyList.clear();
QMap <QString, QString> flist = doc->clipManager()->documentFolderList();
+ QStringList openedFolders = doc->getExpandedFolders();
QMapIterator<QString, QString> f(flist);
while (f.hasNext()) {
f.next();
- (void) new FolderProjectItem(m_listView, QStringList() << f.value(), f.key());
+ FolderProjectItem *folder = new FolderProjectItem(m_listView, QStringList() << f.value(), f.key());
+ folder->setExpanded(openedFolders.contains(f.key()));
}
QList <DocClipBase*> list = doc->clipManager()->documentClipList();
void ProjectList::slotCheckForEmptyQueue()
{
- if (!m_refreshed && m_thumbnailQueue.isEmpty() && m_infoQueue.isEmpty()) {
+ if (!m_refreshed && m_processingClips.isEmpty() && m_thumbnailQueue.isEmpty() && m_infoQueue.isEmpty()) {
m_refreshed = true;
emit loadingIsOver();
emit displayMessage(QString(), -1);
{
QString toReload;
ProjectItem *item = getItemById(clipId);
+ if (!m_refreshed) {
+ // we are still finishing to load the document
+ selectClip = false;
+ }
m_processingClips.removeAll(clipId);
if (m_infoQueue.isEmpty() && m_processingClips.isEmpty()) m_listView->setEnabled(true);
if (item && producer) {
QString proxydir = m_doc->projectFolder().path( KUrl::AddTrailingSlash) + "proxy/";
QMap <QString, QString> newProps;
newProps.insert("proxy", proxydir + item->referencedClip()->getClipHash() + "." + m_doc->getDocumentProperty("proxyextension"));
+ // insert required duration for proxy
+ newProps.insert("proxy_out", item->referencedClip()->producerProperty("out"));
QMap <QString, QString> oldProps = clip->properties();
oldProps.insert("proxy", QString());
EditClipCommand *command = new EditClipCommand(this, clipId, oldProps, newProps, true);
QMap <QString, QString> newProps;
newProps.insert("proxy", QString());
newProps.insert("replace", "1");
+ // insert required duration for proxy
+ newProps.insert("proxy_out", item->referencedClip()->producerProperty("out"));
new EditClipCommand(this, item->clipId(), item->referencedClip()->properties(), newProps, true, command);
}
}
newProps.clear();
QString path = proxydir + item->referencedClip()->getClipHash() + "." + (t == IMAGE ? "png" : m_doc->getDocumentProperty("proxyextension"));
newProps.insert("proxy", path);
+ // insert required duration for proxy
+ newProps.insert("proxy_out", item->referencedClip()->producerProperty("out"));
// We need to insert empty proxy so that undo will work
oldProps.insert("proxy", QString());
}
else disconnect(m_listView, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(slotItemEdited(QTreeWidgetItem *, int)));
}
+QStringList ProjectList::expandedFolders() const
+{
+ QStringList result;
+ FolderProjectItem *item;
+ QTreeWidgetItemIterator it(m_listView);
+ while (*it) {
+ if ((*it)->type() != PROJECTFOLDERTYPE) {
+ ++it;
+ continue;
+ }
+ if ((*it)->isExpanded()) {
+ item = static_cast<FolderProjectItem *>(*it);
+ result.append(item->clipId());
+ }
+ ++it;
+ }
+ return result;
+}
+
#include "projectlist.moc"