QHBoxLayout *box = new QHBoxLayout;
KTreeWidgetSearchLine *searchView = new KTreeWidgetSearchLine;
- m_refreshMonitorTimer.setSingleShot(true);
- m_refreshMonitorTimer.setInterval(100);
- connect(&m_refreshMonitorTimer, SIGNAL(timeout()), this, SLOT(slotRefreshMonitor()));
-
box->addWidget(searchView);
//int s = style()->pixelMetric(QStyle::PM_SmallIconSize);
//m_toolbar->setIconSize(QSize(s, s));
m_menu->insertSeparator(m_deleteButton->defaultAction());
}
+void ProjectList::clearSelection()
+{
+ m_listView->clearSelection();
+}
QByteArray ProjectList::headerInfo() const
{
void ProjectList::slotClipSelected()
{
- m_refreshMonitorTimer.stop();
QTreeWidgetItem *item = m_listView->currentItem();
ProjectItem *clip = NULL;
if (item) {
{
if (item == NULL || !m_refreshed) return;
DocClipBase *clip = item->referencedClip();
+ if (!clip || !clip->isClean() || m_render->isProcessing(item->clipId())) {
+ // Clip is being reprocessed, abort
+ kDebug()<<"//// TRYING TO PROXY: "<<item->clipId()<<", but it is busy";
+ return;
+ }
+
// Proxy clip successfully created
QDomElement e = clip->toXML().cloneNode().toElement();
else requestClipThumbnail(item->clipId());
}
+void ProjectList::getCachedThumbnail(SubProjectItem *item)
+{
+ if (!item) return;
+ ProjectItem *parentItem = static_cast <ProjectItem *>(item->parent());
+ if (!parentItem) return;
+ DocClipBase *clip = parentItem->referencedClip();
+ if (!clip) return;
+ int pos = item->zone().x();
+ QString cachedPixmap = m_doc->projectFolder().path(KUrl::AddTrailingSlash) + "thumbs/" + clip->getClipHash() + "#" + QString::number(pos) + ".png";
+ if (QFile::exists(cachedPixmap)) {
+ QPixmap pix(cachedPixmap);
+ if (pix.isNull()) {
+ KIO::NetAccess::del(KUrl(cachedPixmap), this);
+ requestClipThumbnail(parentItem->clipId() + '#' + QString::number(pos));
+ }
+ else item->setData(0, Qt::DecorationRole, pix);
+ }
+ else requestClipThumbnail(parentItem->clipId() + '#' + QString::number(pos));
+}
+
void ProjectList::updateAllClips(bool displayRatioChanged, bool fpsChanged)
{
m_listView->setSortingEnabled(false);
if ((*it)->type() == PROJECTSUBCLIPTYPE) {
// subitem
SubProjectItem *sub = static_cast <SubProjectItem *>(*it);
- if (displayRatioChanged || sub->data(0, Qt::DecorationRole).isNull()) {
+ if (displayRatioChanged) {
item = static_cast <ProjectItem *>((*it)->parent());
requestClipThumbnail(item->clipId() + '#' + QString::number(sub->zone().x()));
}
+ else if (sub->data(0, Qt::DecorationRole).isNull()) {
+ getCachedThumbnail(sub);
+ }
++it;
continue;
} else if ((*it)->type() == PROJECTFOLDERTYPE) {
}
}
-void ProjectList::slotRefreshMonitor()
-{
- if (m_listView->selectedItems().count() == 1 && m_render && m_render->processingItems() == 0) {
- if (m_listView->currentItem() && m_listView->currentItem()->type() != PROJECTFOLDERTYPE) {
- ProjectItem *item = static_cast <ProjectItem*>(m_listView->currentItem());
- DocClipBase *clip = item->referencedClip();
- if (clip && clip->isClean() && !m_render->isProcessing(item->clipId())) emit clipSelected(clip);
- }
- }
-}
-void ProjectList::slotReplyGetFileProperties(const QString &clipId, Mlt::Producer *producer, const stringMap &properties, const stringMap &metadata, bool replace, bool refreshThumbnail)
+void ProjectList::slotReplyGetFileProperties(const QString &clipId, Mlt::Producer *producer, const stringMap &properties, const stringMap &metadata, bool replace)
{
QString toReload;
ProjectItem *item = getItemById(clipId);
item->setProperties(properties, metadata);
clip->setProducer(producer, replace);
clip->askForAudioThumbs();
- if (refreshThumbnail) getCachedThumbnail(item);
+
// Proxy stuff
QString size = properties.value("frame_size");
if (!useProxy() && clip->getProperty("proxy").isEmpty()) setProxyStatus(item, NOPROXY);
}
}
- if (!replace && item->data(0, Qt::DecorationRole).isNull() && !refreshThumbnail) {
+ if (!replace && item->data(0, Qt::DecorationRole).isNull()) {
requestClipThumbnail(clipId);
}
if (!toReload.isEmpty())
}
if (replace && item) {
toReload = clipId;
- // update clip in clip monitor
- /*if (queue == 0 && item->isSelected() && m_listView->selectedItems().count() == 1)
- m_refreshMonitorTimer.start();*/
}
if (!item) {
// no item for producer, delete it
if ((t == VIDEO || t == AV || t == UNKNOWN || t == IMAGE || t == PLAYLIST) && item->referencedClip()) {
if ((doProxy && item->hasProxy()) || (!doProxy && !item->hasProxy())) continue;
DocClipBase *clip = item->referencedClip();
- if (!clip->isClean() || m_render->isProcessing(item->clipId())) continue;
+ if (!clip || !clip->isClean() || m_render->isProcessing(item->clipId())) {
+ kDebug()<<"//// TRYING TO PROXY: "<<item->clipId()<<", but it is busy";
+ continue;
+ }
+
resetThumbsProducer(clip);
oldProps = clip->properties();
if (doProxy) {