svn path=/trunk/kdenlive/; revision=5964
m_endPix = QPixmap();
m_audioThumbCachePic.clear();
}
m_endPix = QPixmap();
m_audioThumbCachePic.clear();
}
- kDebug()<<"........... RESET THMBS";
+ //kDebug()<<"........... RESET THMBS: "<<clearExistingThumbs;
void ProjectList::slotClipSelected()
{
void ProjectList::slotClipSelected()
{
- if (!m_listView->isEnabled()) return;
if (m_listView->currentItem()) {
if (m_listView->currentItem()->type() == PROJECTFOLDERTYPE) {
emit clipSelected(NULL);
if (m_listView->currentItem()) {
if (m_listView->currentItem()->type() == PROJECTFOLDERTYPE) {
emit clipSelected(NULL);
void ProjectList::slotAddClip(DocClipBase *clip, bool getProperties)
{
void ProjectList::slotAddClip(DocClipBase *clip, bool getProperties)
{
- m_listView->setEnabled(false);
+ //m_listView->setEnabled(false);
const QString parent = clip->getProperty("groupid");
ProjectItem *item = NULL;
monitorItemEditing(false);
const QString parent = clip->getProperty("groupid");
ProjectItem *item = NULL;
monitorItemEditing(false);
clip->askForAudioThumbs();
KUrl url = clip->fileURL();
clip->askForAudioThumbs();
KUrl url = clip->fileURL();
- if (getProperties == false && !clip->getClipHash().isEmpty()) {
- QString cachedPixmap = m_doc->projectFolder().path(KUrl::AddTrailingSlash) + "thumbs/" + clip->getClipHash() + ".png";
- if (QFile::exists(cachedPixmap)) {
- QPixmap pix(cachedPixmap);
- if (pix.isNull())
- KIO::NetAccess::del(KUrl(cachedPixmap), this);
- item->setData(0, Qt::DecorationRole, pix);
- }
- }
#ifdef NEPOMUK
if (!url.isEmpty() && KdenliveSettings::activate_nepomuk()) {
// if file has Nepomuk comment, use it
#ifdef NEPOMUK
if (!url.isEmpty() && KdenliveSettings::activate_nepomuk()) {
// if file has Nepomuk comment, use it
}
}
monitorItemEditing(true);
}
}
monitorItemEditing(true);
- if (m_listView->isEnabled()) {
- updateButtons();
- }
}
void ProjectList::slotGotProxy(const QString &proxyPath)
}
void ProjectList::slotGotProxy(const QString &proxyPath)
monitorItemEditing(true);
}
monitorItemEditing(true);
}
+void ProjectList::getCachedThumbnail(ProjectItem *item)
+{
+ if (!item) return;
+ DocClipBase *clip = item->referencedClip();
+ if (!clip) return;
+ QString cachedPixmap = m_doc->projectFolder().path(KUrl::AddTrailingSlash) + "thumbs/" + clip->getClipHash() + ".png";
+ if (QFile::exists(cachedPixmap)) {
+ QPixmap pix(cachedPixmap);
+ if (pix.isNull()) {
+ KIO::NetAccess::del(KUrl(cachedPixmap), this);
+ requestClipThumbnail(item->clipId());
+ }
+ else item->setData(0, Qt::DecorationRole, pix);
+ }
+ else requestClipThumbnail(item->clipId());
+}
+
void ProjectList::updateAllClips(bool displayRatioChanged, bool fpsChanged)
{
m_listView->setSortingEnabled(false);
void ProjectList::updateAllClips(bool displayRatioChanged, bool fpsChanged)
{
m_listView->setSortingEnabled(false);
- if (displayRatioChanged || item->data(0, Qt::DecorationRole).isNull())
+ if (displayRatioChanged)
requestClipThumbnail(clip->getId());
requestClipThumbnail(clip->getId());
+ else if (item->data(0, Qt::DecorationRole).isNull()) {
+ getCachedThumbnail(item);
+ }
if (item->data(0, DurationRole).toString().isEmpty()) {
item->changeDuration(item->referencedClip()->producer()->get_playtime());
}
if (item->data(0, DurationRole).toString().isEmpty()) {
item->changeDuration(item->referencedClip()->producer()->get_playtime());
}
-
- if (m_listView->isEnabled())
- monitorItemEditing(true);
m_listView->setSortingEnabled(true);
if (m_render->processingItems() == 0) {
m_listView->setSortingEnabled(true);
if (m_render->processingItems() == 0) {
+ monitorItemEditing(true);
slotProcessNextThumbnail();
}
}
slotProcessNextThumbnail();
}
}
emit displayMessage(QString(), -1);
m_refreshed = true;
}
emit displayMessage(QString(), -1);
m_refreshed = true;
}
- m_listView->blockSignals(false);
- m_listView->setEnabled(true);
updateButtons();
} else if (!m_refreshed) {
QTimer::singleShot(300, this, SLOT(slotCheckForEmptyQueue()));
updateButtons();
} else if (!m_refreshed) {
QTimer::singleShot(300, this, SLOT(slotCheckForEmptyQueue()));
m_listView->setEnabled(true);
}
if (item && producer) {
m_listView->setEnabled(true);
}
if (item && producer) {
- //m_listView->blockSignals(true);
monitorItemEditing(false);
DocClipBase *clip = item->referencedClip();
item->setProperties(properties, metadata);
monitorItemEditing(false);
DocClipBase *clip = item->referencedClip();
item->setProperties(properties, metadata);
}
clip->setProducer(producer, replace);
clip->askForAudioThumbs();
}
clip->setProducer(producer, replace);
clip->askForAudioThumbs();
- if (refreshThumbnail) requestClipThumbnail(clipId);
+ if (refreshThumbnail) getCachedThumbnail(item);
// Proxy stuff
QString size = properties.value("frame_size");
if (!useProxy() && clip->getProperty("proxy").isEmpty()) setProxyStatus(item, NOPROXY);
// 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())
+ if (!replace && item->data(0, Qt::DecorationRole).isNull() && !refreshThumbnail) {
requestClipThumbnail(clipId);
requestClipThumbnail(clipId);
if (!toReload.isEmpty())
item->slotSetToolTip();
if (!toReload.isEmpty())
item->slotSetToolTip();
-
- if (m_listView->isEnabled())
- monitorItemEditing(true);
} else kDebug() << "//////// COULD NOT FIND CLIP TO UPDATE PRPS...";
if (queue == 0) {
} else kDebug() << "//////// COULD NOT FIND CLIP TO UPDATE PRPS...";
if (queue == 0) {
+ monitorItemEditing(true);
if (item && m_thumbnailQueue.isEmpty()) {
m_listView->setCurrentItem(item);
bool updatedProfile = false;
if (item && m_thumbnailQueue.isEmpty()) {
m_listView->setCurrentItem(item);
bool updatedProfile = false;
}
processNextThumbnail();
}
}
processNextThumbnail();
}
- if (item && m_listView->isEnabled() && replace) {
- // update clip in clip monitor
- if (item->isSelected() && m_listView->selectedItems().count() == 1)
- emit clipSelected(item->referencedClip());
- //TODO: Make sure the line below has no side effect
- toReload = clipId;
- }
+ if (item && queue == 0 && replace) {
+ // update clip in clip monitor
+ if (item->isSelected() && m_listView->selectedItems().count() == 1)
+ emit clipSelected(item->referencedClip());
+ //TODO: Make sure the line below has no side effect
+ toReload = clipId;
+ }
+ if (!item) {
+ // no item for producer, delete it
+ delete producer;
+ }
if (!toReload.isEmpty())
emit clipNeedsReload(toReload, true);
}
if (!toReload.isEmpty())
emit clipNeedsReload(toReload, true);
}
monitorItemEditing(true);
//update();
m_doc->cachePixmap(item->getClipHash(), pix);
monitorItemEditing(true);
//update();
m_doc->cachePixmap(item->getClipHash(), pix);
- if (m_listView->isEnabled())
- m_listView->blockSignals(false);
void monitorItemEditing(bool enable);
/** @brief Set thumbnail for a project's clip. */
void setThumbnail(const QString &clipId, const QPixmap &pix);
void monitorItemEditing(bool enable);
/** @brief Set thumbnail for a project's clip. */
void setThumbnail(const QString &clipId, const QPixmap &pix);
+ /** @brief Get cached thumbnail for a project's clip or create it if no cache. */
+ void getCachedThumbnail(ProjectItem *item);
private slots:
void slotClipSelected();
private slots:
void slotClipSelected();